diff options
Diffstat (limited to 'libcrypt/des.c')
-rw-r--r-- | libcrypt/des.c | 42 |
1 files changed, 13 insertions, 29 deletions
diff --git a/libcrypt/des.c b/libcrypt/des.c index eb1e13fec..6af65b615 100644 --- a/libcrypt/des.c +++ b/libcrypt/des.c @@ -454,33 +454,26 @@ des_setkey(const char *key) static int do_des( u_int32_t l_in, u_int32_t r_in, u_int32_t *l_out, u_int32_t *r_out, int count) { - /* - * l_in, r_in, l_out, and r_out are in pseudo-"big-endian" format. - */ + /* l_in, r_in, l_out, and r_out are in pseudo-"big-endian" format. */ u_int32_t l, r, *kl, *kr, *kl1, *kr1; u_int32_t f, r48l, r48r; int round; if (count == 0) { - return(1); - } else if (count > 0) { - /* - * Encrypting - */ + return 1; + } + if (count > 0) { + /* Encrypting */ kl1 = en_keysl; kr1 = en_keysr; } else { - /* - * Decrypting - */ + /* Decrypting */ count = -count; kl1 = de_keysl; kr1 = de_keysr; } - /* - * Do initial permutation (IP). - */ + /* Do initial permutation (IP). */ l = ip_maskl[0][l_in >> 24] | ip_maskl[1][(l_in >> 16) & 0xff] | ip_maskl[2][(l_in >> 8) & 0xff] @@ -499,22 +492,17 @@ do_des( u_int32_t l_in, u_int32_t r_in, u_int32_t *l_out, u_int32_t *r_out, int | ip_maskr[7][r_in & 0xff]; while (count--) { - /* - * Do each round. - */ + /* Do each round. */ kl = kl1; kr = kr1; round = 16; - while (round--) { - /* - * Expand R to 48 bits (simulate the E-box). - */ + do { + /* Expand R to 48 bits (simulate the E-box). */ r48l = ((r & 0x00000001) << 23) | ((r & 0xf8000000) >> 9) | ((r & 0x1f800000) >> 11) | ((r & 0x01f80000) >> 13) | ((r & 0x001f8000) >> 15); - r48r = ((r & 0x0001f800) << 7) | ((r & 0x00001f80) << 5) | ((r & 0x000001f8) << 3) @@ -535,19 +523,15 @@ do_des( u_int32_t l_in, u_int32_t r_in, u_int32_t *l_out, u_int32_t *r_out, int | psbox[1][m_sbox[1][r48l & 0xfff]] | psbox[2][m_sbox[2][r48r >> 12]] | psbox[3][m_sbox[3][r48r & 0xfff]]; - /* - * Now that we've permuted things, complete f(). - */ + /* Now that we've permuted things, complete f(). */ f ^= l; l = r; r = f; - } + } while (--round); r = l; l = f; } - /* - * Do final permutation (inverse of IP). - */ + /* Do final permutation (inverse of IP). */ *l_out = fp_maskl[0][l >> 24] | fp_maskl[1][(l >> 16) & 0xff] | fp_maskl[2][(l >> 8) & 0xff] |