|
|
1.1 root 1: extern int shift[];
2: extern long keys_L[], keys_H[];
3: extern long PC1[], PC2[];
4:
5: compkeys(key, rev)
6: long key[2];
7: int rev;
8: {
9: register long low, high;
10: register long lowkey, highkey;
11: register long i, j;
12: int iiiii;
13: int carry1, carry2, carry3;
14:
15: low = 0;
16: high = 0;
17: for (i = 0, j = key[1]; i < 64; i += 2) {
18: if (j < 0) {
19: low |= PC1[i];
20: high |= PC1[i + 1];
21: }
22: j += j;
23: }
24: for (j = key[0]; i < 128; i += 2) {
25: if (j < 0) {
26: low |= PC1[i];
27: high |= PC1[i + 1];
28: }
29: j += j;
30: }
31: for (iiiii = 0; iiiii < 16; iiiii++) {
32: for (j = 0; j < shift[iiiii]; j++) {
33: carry1 = 0;
34: carry2 = 0;
35: carry3 = 0;
36: if (low < 0)
37: carry1 = 020;
38: if (low & 010)
39: carry2 = 0400;
40: if (high < 0)
41: carry3 = 1;
42: low <<= 1;
43: low &= ~020;
44: low |= carry1;
45: low |= carry3;
46: high <<= 1;
47: high |= carry2;
48: }
49: lowkey = 0;
50: highkey = 0;
51: for (i = 0, j = high; i < 64; i += 2) {
52: if (j < 0) {
53: lowkey |= PC2[i];
54: highkey |= PC2[i + 1];
55: }
56: j += j;
57: }
58: for (j = low; i < 128; i += 2) {
59: if (j < 0) {
60: lowkey |= PC2[i];
61: highkey |= PC2[i + 1];
62: }
63: j += j;
64: }
65: if (rev) {
66: keys_L[15 - iiiii] = lowkey;
67: keys_H[15 - iiiii] = highkey;
68: } else {
69: keys_L[iiiii] = lowkey;
70: keys_H[iiiii] = highkey;
71: }
72: }
73: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.