|
|
1.1 root 1: /*
2: * $Source: /mit/kerberos/src/lib/des/RCS/make_s_table.c,v $
3: * $Author: jtkohl $
4: *
5: * Copyright 1985, 1988 by the Massachusetts Institute of Technology.
6: *
7: * For copying and distribution information, please
8: * see the file <mit-copyright.h>.
9: */
10:
11: #include <mit-copyright.h>
12: #include <stdio.h>
13: #include "des_internal.h"
14: #include "tables.h"
15:
16: extern unsigned long swap_bit_pos_0();
17: extern unsigned long swap_six_bits_to_ansi();
18: extern unsigned long swap_four_bits_to_ansi();
19: char temp[8][64];
20: int des_debug;
21:
22: void gen(stream)
23: FILE *stream;
24: {
25: register unsigned long i,j,k,l,m,n;
26:
27: /* rearrange the S table entries, and adjust for host bit order */
28:
29: fprintf(stream, "static unsigned char const S_adj[8][64] = {");
30: fprintf(stream, " /* adjusted */\n");
31:
32: for (i = 0; i<=7 ; i++) {
33: for (j = 0; j <= 63; j++) {
34: /*
35: * figure out which one to put in the new S[i][j]
36: *
37: * start by assuming the value of the input bits is "j" in
38: * host order, then figure out what it means in standard
39: * form.
40: */
41: k = swap_six_bits_to_ansi(j);
42: /* figure out the index for k */
43: l = (((k >> 5) & 01) << 5)
44: + ((k & 01) <<4) + ((k >> 1) & 0xf);
45: m = S[i][l];
46: /* restore in host order */
47: n = swap_four_bits_to_ansi(m);
48: if (des_debug)
49: fprintf(stderr,
50: "i = %d, j = %d, k = %d, l = %d, m = %d, n = %d\n",
51: i,j,k,l,m,n);
52: temp[i][j] = n;
53: }
54: }
55:
56: for (i = 0; i<=7; i++) {
57: fprintf(stream,"\n");
58: k =0;
59: for (j = 0; j<= 3; j++) {
60: fprintf(stream,"\n");
61: for (m = 0; m <= 15; m++) {
62: fprintf(stream,"%2d",temp[i][k]);
63: if ((k++ != 63) || (i !=7)) {
64: fprintf(stream,", ");
65: }
66: }
67: }
68: }
69:
70: fprintf(stream,"\n};\n");
71: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.