bf_cbc.c (55714) | bf_cbc.c (59191) |
---|---|
1/* crypto/bf/bf_cbc.c */ 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 3 * All rights reserved. 4 * 5 * This package is an SSL implementation written 6 * by Eric Young (eay@cryptsoft.com). 7 * The implementation was written so as to conform with Netscapes SSL. 8 * --- 45 unchanged lines hidden (view full) --- 54 * derivative of this code cannot be changed. i.e. this code cannot simply be 55 * copied and put under another distribution licence 56 * [including the GNU Public Licence.] 57 */ 58 59#include <openssl/blowfish.h> 60#include "bf_locl.h" 61 | 1/* crypto/bf/bf_cbc.c */ 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 3 * All rights reserved. 4 * 5 * This package is an SSL implementation written 6 * by Eric Young (eay@cryptsoft.com). 7 * The implementation was written so as to conform with Netscapes SSL. 8 * --- 45 unchanged lines hidden (view full) --- 54 * derivative of this code cannot be changed. i.e. this code cannot simply be 55 * copied and put under another distribution licence 56 * [including the GNU Public Licence.] 57 */ 58 59#include <openssl/blowfish.h> 60#include "bf_locl.h" 61 |
62void BF_cbc_encrypt(unsigned char *in, unsigned char *out, long length, 63 BF_KEY *ks, unsigned char *iv, int encrypt) | 62void BF_cbc_encrypt(const unsigned char *in, unsigned char *out, long length, 63 const BF_KEY *schedule, unsigned char *ivec, int encrypt) |
64 { 65 register BF_LONG tin0,tin1; 66 register BF_LONG tout0,tout1,xor0,xor1; 67 register long l=length; 68 BF_LONG tin[2]; 69 70 if (encrypt) 71 { | 64 { 65 register BF_LONG tin0,tin1; 66 register BF_LONG tout0,tout1,xor0,xor1; 67 register long l=length; 68 BF_LONG tin[2]; 69 70 if (encrypt) 71 { |
72 n2l(iv,tout0); 73 n2l(iv,tout1); 74 iv-=8; | 72 n2l(ivec,tout0); 73 n2l(ivec,tout1); 74 ivec-=8; |
75 for (l-=8; l>=0; l-=8) 76 { 77 n2l(in,tin0); 78 n2l(in,tin1); 79 tin0^=tout0; 80 tin1^=tout1; 81 tin[0]=tin0; 82 tin[1]=tin1; | 75 for (l-=8; l>=0; l-=8) 76 { 77 n2l(in,tin0); 78 n2l(in,tin1); 79 tin0^=tout0; 80 tin1^=tout1; 81 tin[0]=tin0; 82 tin[1]=tin1; |
83 BF_encrypt(tin,ks); | 83 BF_encrypt(tin,schedule); |
84 tout0=tin[0]; 85 tout1=tin[1]; 86 l2n(tout0,out); 87 l2n(tout1,out); 88 } 89 if (l != -8) 90 { 91 n2ln(in,tin0,tin1,l+8); 92 tin0^=tout0; 93 tin1^=tout1; 94 tin[0]=tin0; 95 tin[1]=tin1; | 84 tout0=tin[0]; 85 tout1=tin[1]; 86 l2n(tout0,out); 87 l2n(tout1,out); 88 } 89 if (l != -8) 90 { 91 n2ln(in,tin0,tin1,l+8); 92 tin0^=tout0; 93 tin1^=tout1; 94 tin[0]=tin0; 95 tin[1]=tin1; |
96 BF_encrypt(tin,ks); | 96 BF_encrypt(tin,schedule); |
97 tout0=tin[0]; 98 tout1=tin[1]; 99 l2n(tout0,out); 100 l2n(tout1,out); 101 } | 97 tout0=tin[0]; 98 tout1=tin[1]; 99 l2n(tout0,out); 100 l2n(tout1,out); 101 } |
102 l2n(tout0,iv); 103 l2n(tout1,iv); | 102 l2n(tout0,ivec); 103 l2n(tout1,ivec); |
104 } 105 else 106 { | 104 } 105 else 106 { |
107 n2l(iv,xor0); 108 n2l(iv,xor1); 109 iv-=8; | 107 n2l(ivec,xor0); 108 n2l(ivec,xor1); 109 ivec-=8; |
110 for (l-=8; l>=0; l-=8) 111 { 112 n2l(in,tin0); 113 n2l(in,tin1); 114 tin[0]=tin0; 115 tin[1]=tin1; | 110 for (l-=8; l>=0; l-=8) 111 { 112 n2l(in,tin0); 113 n2l(in,tin1); 114 tin[0]=tin0; 115 tin[1]=tin1; |
116 BF_decrypt(tin,ks); | 116 BF_decrypt(tin,schedule); |
117 tout0=tin[0]^xor0; 118 tout1=tin[1]^xor1; 119 l2n(tout0,out); 120 l2n(tout1,out); 121 xor0=tin0; 122 xor1=tin1; 123 } 124 if (l != -8) 125 { 126 n2l(in,tin0); 127 n2l(in,tin1); 128 tin[0]=tin0; 129 tin[1]=tin1; | 117 tout0=tin[0]^xor0; 118 tout1=tin[1]^xor1; 119 l2n(tout0,out); 120 l2n(tout1,out); 121 xor0=tin0; 122 xor1=tin1; 123 } 124 if (l != -8) 125 { 126 n2l(in,tin0); 127 n2l(in,tin1); 128 tin[0]=tin0; 129 tin[1]=tin1; |
130 BF_decrypt(tin,ks); | 130 BF_decrypt(tin,schedule); |
131 tout0=tin[0]^xor0; 132 tout1=tin[1]^xor1; 133 l2nn(tout0,tout1,out,l+8); 134 xor0=tin0; 135 xor1=tin1; 136 } | 131 tout0=tin[0]^xor0; 132 tout1=tin[1]^xor1; 133 l2nn(tout0,tout1,out,l+8); 134 xor0=tin0; 135 xor1=tin1; 136 } |
137 l2n(xor0,iv); 138 l2n(xor1,iv); | 137 l2n(xor0,ivec); 138 l2n(xor1,ivec); |
139 } 140 tin0=tin1=tout0=tout1=xor0=xor1=0; 141 tin[0]=tin[1]=0; 142 } 143 | 139 } 140 tin0=tin1=tout0=tout1=xor0=xor1=0; 141 tin[0]=tin[1]=0; 142 } 143 |