Annotation of 43BSDReno/kerberosIV/make_p_table/make_p_table.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * $Source: /usr/src/kerberosIV/make_p_table/RCS/make_p_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: 
                     12: #include <mit-copyright.h>
                     13: #include <stdio.h>
                     14: #include "des_internal.h"
                     15: #include "tables.h"
                     16: 
                     17: extern unsigned long swap_byte_bits();
                     18: extern unsigned long rev_swap_bit_pos_0();
                     19: static unsigned char P_temp[32];
                     20: static unsigned long P_prime[4][256];
                     21: 
                     22: void gen(stream)
                     23:     FILE *stream;
                     24: {
                     25:     register i,j,k,m;
                     26:     /* P permutes 32 bit input R1 into 32 bit output R2 */
                     27: 
                     28: #ifdef BIG
                     29:     /* flip p into p_temp */
                     30:     for (i = 0; i<32; i++)
                     31:        P_temp[P[rev_swap_bit_pos_0(i)]] = rev_swap_bit_pos_0(i);
                     32: 
                     33:     /*
                     34:      * now for each byte of input, figure out all possible combinations
                     35:      */
                     36:     for (i = 0; i <4 ; i ++) { /* each input byte */
                     37:        for (j = 0; j<256; j++) { /* each possible byte value */
                     38:            /* flip bit order */
                     39:            k = j;
                     40:            /* swap_byte_bits(j); */
                     41:            for (m = 0; m < 8; m++) { /* each bit */
                     42:                if (k & (1 << m)) {
                     43:                    /* set output values */
                     44:                    P_prime[i][j] |= 1 << P_temp[(i*8)+m];
                     45:                }
                     46:            }
                     47:        }
                     48:     }
                     49: 
                     50:     fprintf(stream,
                     51:            "\n\tstatic unsigned long const P_prime[4][256] = {\n\t");
                     52:     for (i = 0; i < 4; i++) {
                     53:        fprintf(stream,"\n");
                     54:        for (j = 0; j < 64; j++) {
                     55:            fprintf(stream,"\n");
                     56:            for (k = 0; k < 4; k++) {
                     57:                fprintf(stream,"0x%08X",P_prime[i][j*4+k]);
                     58:                if ((i == 3) && (j == 63) && (k == 3))
                     59:                    fprintf(stream,"\n};");
                     60:                else
                     61:                    fprintf(stream,", ");
                     62:            }
                     63:        }
                     64:     }
                     65: 
                     66: #endif
                     67:     fprintf(stream,"\n");
                     68: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.