|
|
1.1 ! root 1: /* ! 2: * $Source: /mit/kerberos/src/lib/des/RCS/make_p.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: * This routine generates the P permutation code for the DES. ! 11: */ ! 12: ! 13: #include <mit-copyright.h> ! 14: #include <stdio.h> ! 15: #include "des_internal.h" ! 16: #include "tables.h" ! 17: ! 18: void gen(stream) ! 19: FILE *stream; ! 20: { ! 21: /* P permutes 32 bit input R1 into 32 bit output R2 */ ! 22: ! 23: /* clear the output */ ! 24: fprintf(stream," L2 = 0;\n"); ! 25: #ifndef BIG ! 26: fprintf(stream," R2 = 0;\n"); ! 27: fprintf(stream, ! 28: "/* P operations */\n/* from right to right */\n"); ! 29: /* first list mapping from left to left */ ! 30: for (i = 0; i <=31; i++) ! 31: if (P[i] < 32) ! 32: fprintf(stream, ! 33: " if (R1 & (1<<%d)) R2 |= 1<<%d;\n",P[i],i); ! 34: #else /* BIG */ ! 35: /* flip p into p_temp */ ! 36: fprintf(stream," P_temp = R1;\n"); ! 37: fprintf(stream," P_temp_p = (unsigned char *) &P_temp;\n"); ! 38: ! 39: #ifdef LSBFIRST ! 40: fprintf(stream," R2 = P_prime[0][*P_temp_p++];\n"); ! 41: fprintf(stream," R2 |= P_prime[1][*P_temp_p++];\n"); ! 42: fprintf(stream," R2 |= P_prime[2][*P_temp_p++];\n"); ! 43: fprintf(stream," R2 |= P_prime[3][*P_temp_p];\n"); ! 44: #else /* MSBFIRST */ ! 45: fprintf(stream," R2 = P_prime[3][*P_temp_p++];\n"); ! 46: fprintf(stream," R2 |= P_prime[2][*P_temp_p++];\n"); ! 47: fprintf(stream," R2 |= P_prime[1][*P_temp_p++];\n"); ! 48: fprintf(stream," R2 |= P_prime[0][*P_temp_p];\n"); ! 49: #endif /* MSBFIRST */ ! 50: #endif /* BIG */ ! 51: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.