Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(821)

Side by Side Diff: openssl/crypto/evp/e_des.c

Issue 9254031: Upgrade chrome's OpenSSL to same version Android ships with. (Closed) Base URL: http://src.chromium.org/svn/trunk/deps/third_party/openssl/
Patch Set: '' Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « openssl/crypto/evp/e_camellia.c ('k') | openssl/crypto/evp/e_des3.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* crypto/evp/e_des.c */ 1 /* crypto/evp/e_des.c */
2 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
5 * This package is an SSL implementation written 5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com). 6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL. 7 * The implementation was written so as to conform with Netscapes SSL.
8 * 8 *
9 * This library is free for commercial and non-commercial use as long as 9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions 10 * the following conditions are aheared to. The following conditions
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 #include <openssl/des.h> 65 #include <openssl/des.h>
66 #include <openssl/rand.h> 66 #include <openssl/rand.h>
67 67
68 static int des_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, 68 static int des_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
69 const unsigned char *iv, int enc); 69 const unsigned char *iv, int enc);
70 static int des_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr); 70 static int des_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr);
71 71
72 /* Because of various casts and different names can't use IMPLEMENT_BLOCK_CIPHER */ 72 /* Because of various casts and different names can't use IMPLEMENT_BLOCK_CIPHER */
73 73
74 static int des_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 74 static int des_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
75 » » » const unsigned char *in, unsigned int inl) 75 » » » const unsigned char *in, size_t inl)
76 { 76 {
77 BLOCK_CIPHER_ecb_loop() 77 BLOCK_CIPHER_ecb_loop()
78 DES_ecb_encrypt((DES_cblock *)(in + i), (DES_cblock *)(out + i), ctx->cipher_data, ctx->encrypt); 78 DES_ecb_encrypt((DES_cblock *)(in + i), (DES_cblock *)(out + i), ctx->cipher_data, ctx->encrypt);
79 return 1; 79 return 1;
80 } 80 }
81 81
82 static int des_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 82 static int des_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
83 » » » const unsigned char *in, unsigned int inl) 83 » » » const unsigned char *in, size_t inl)
84 { 84 {
85 » DES_ofb64_encrypt(in, out, (long)inl, ctx->cipher_data, (DES_cblock *)ct x->iv, &ctx->num); 85 » while(inl>=EVP_MAXCHUNK)
86 » » {
87 » » DES_ofb64_encrypt(in, out, (long)EVP_MAXCHUNK, ctx->cipher_data,
88 » » » » (DES_cblock *)ctx->iv, &ctx->num);
89 » » inl-=EVP_MAXCHUNK;
90 » » in +=EVP_MAXCHUNK;
91 » » out+=EVP_MAXCHUNK;
92 » » }
93 » if (inl)
94 » » DES_ofb64_encrypt(in, out, (long)inl, ctx->cipher_data,
95 » » » » (DES_cblock *)ctx->iv, &ctx->num);
86 return 1; 96 return 1;
87 } 97 }
88 98
89 static int des_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 99 static int des_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
90 » » » const unsigned char *in, unsigned int inl) 100 » » » const unsigned char *in, size_t inl)
91 { 101 {
92 » DES_ncbc_encrypt(in, out, (long)inl, ctx->cipher_data, 102 » while(inl>=EVP_MAXCHUNK)
93 » » » (DES_cblock *)ctx->iv, ctx->encrypt); 103 » » {
104 » » DES_ncbc_encrypt(in, out, (long)EVP_MAXCHUNK, ctx->cipher_data,
105 » » » » (DES_cblock *)ctx->iv, ctx->encrypt);
106 » » inl-=EVP_MAXCHUNK;
107 » » in +=EVP_MAXCHUNK;
108 » » out+=EVP_MAXCHUNK;
109 » » }
110 » if (inl)
111 » » DES_ncbc_encrypt(in, out, (long)inl, ctx->cipher_data,
112 » » » » (DES_cblock *)ctx->iv, ctx->encrypt);
94 return 1; 113 return 1;
95 } 114 }
96 115
97 static int des_cfb64_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 116 static int des_cfb64_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
98 » » » const unsigned char *in, unsigned int inl) 117 » » » const unsigned char *in, size_t inl)
99 { 118 {
100 » DES_cfb64_encrypt(in, out, (long)inl, ctx->cipher_data, 119 » while(inl>=EVP_MAXCHUNK)
120 » » {
121 » » DES_cfb64_encrypt(in,out, (long)EVP_MAXCHUNK, ctx->cipher_data,
122 » » » » (DES_cblock *)ctx->iv, &ctx->num, ctx->encrypt);
123 » » inl-=EVP_MAXCHUNK;
124 » » in +=EVP_MAXCHUNK;
125 » » out+=EVP_MAXCHUNK;
126 » » }
127 » if (inl)
128 » » DES_cfb64_encrypt(in, out, (long)inl, ctx->cipher_data,
101 (DES_cblock *)ctx->iv, &ctx->num, ctx->encrypt); 129 (DES_cblock *)ctx->iv, &ctx->num, ctx->encrypt);
102 return 1; 130 return 1;
103 } 131 }
104 132
105 /* Although we have a CFB-r implementation for DES, it doesn't pack the right 133 /* Although we have a CFB-r implementation for DES, it doesn't pack the right
106 way, so wrap it here */ 134 way, so wrap it here */
107 static int des_cfb1_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 135 static int des_cfb1_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
108 » » » const unsigned char *in, unsigned int inl) 136 » » » const unsigned char *in, size_t inl)
109 { 137 {
110 unsigned int n; 138 size_t n,chunk=EVP_MAXCHUNK/8;
111 unsigned char c[1],d[1]; 139 unsigned char c[1],d[1];
112 140
113 for(n=0 ; n < inl ; ++n) 141 if (inl<chunk) chunk=inl;
142
143 while (inl && inl>=chunk)
114 { 144 {
115 » c[0]=(in[n/8]&(1 << (7-n%8))) ? 0x80 : 0; 145 » for(n=0 ; n < chunk*8; ++n)
116 » DES_cfb_encrypt(c,d,1,1,ctx->cipher_data,(DES_cblock *)ctx->iv, 146 » {
147 » c[0]=(in[n/8]&(1 << (7-n%8))) ? 0x80 : 0;
148 » DES_cfb_encrypt(c,d,1,1,ctx->cipher_data,(DES_cblock *)ctx->iv,
117 ctx->encrypt); 149 ctx->encrypt);
118 » out[n/8]=(out[n/8]&~(0x80 >> (n%8)))|((d[0]&0x80) >> (n%8)); 150 » out[n/8]=(out[n/8]&~(0x80 >> (unsigned int)(n%8))) |
151 » » ((d[0]&0x80) >> (unsigned int)(n%8));
152 » }
153 » inl-=chunk;
154 » in +=chunk;
155 » out+=chunk;
156 » if (inl<chunk) chunk=inl;
119 } 157 }
158
120 return 1; 159 return 1;
121 } 160 }
122 161
123 static int des_cfb8_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 162 static int des_cfb8_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
124 » » » const unsigned char *in, unsigned int inl) 163 » » » const unsigned char *in, size_t inl)
125 { 164 {
126 DES_cfb_encrypt(in,out,8,inl,ctx->cipher_data,(DES_cblock *)ctx->iv, 165 while (inl>=EVP_MAXCHUNK)
127 » » ctx->encrypt); 166 » {
167 » DES_cfb_encrypt(in,out,8,(long)EVP_MAXCHUNK,ctx->cipher_data,
168 » » » (DES_cblock *)ctx->iv,ctx->encrypt);
169 » inl-=EVP_MAXCHUNK;
170 » in +=EVP_MAXCHUNK;
171 » out+=EVP_MAXCHUNK;
172 » }
173 if (inl)
174 » DES_cfb_encrypt(in,out,8,(long)inl,ctx->cipher_data,
175 » » » (DES_cblock *)ctx->iv,ctx->encrypt);
128 return 1; 176 return 1;
129 } 177 }
130 178
131 BLOCK_CIPHER_defs(des, DES_key_schedule, NID_des, 8, 8, 8, 64, 179 BLOCK_CIPHER_defs(des, DES_key_schedule, NID_des, 8, 8, 8, 64,
132 » » » EVP_CIPH_RAND_KEY, 180 » » » EVP_CIPH_RAND_KEY, des_init_key, NULL,
133 » » » des_init_key, NULL,
134 EVP_CIPHER_set_asn1_iv, 181 EVP_CIPHER_set_asn1_iv,
135 EVP_CIPHER_get_asn1_iv, 182 EVP_CIPHER_get_asn1_iv,
136 des_ctrl) 183 des_ctrl)
137 184
138 BLOCK_CIPHER_def_cfb(des,DES_key_schedule,NID_des,8,8,1, 185 BLOCK_CIPHER_def_cfb(des,DES_key_schedule,NID_des,8,8,1,
139 » » EVP_CIPH_RAND_KEY, 186 » » EVP_CIPH_RAND_KEY, des_init_key,NULL,
140 » » des_init_key, NULL,
141 EVP_CIPHER_set_asn1_iv, 187 EVP_CIPHER_set_asn1_iv,
142 EVP_CIPHER_get_asn1_iv,des_ctrl) 188 EVP_CIPHER_get_asn1_iv,des_ctrl)
143 189
144 BLOCK_CIPHER_def_cfb(des,DES_key_schedule,NID_des,8,8,8, 190 BLOCK_CIPHER_def_cfb(des,DES_key_schedule,NID_des,8,8,8,
145 » » EVP_CIPH_RAND_KEY, 191 » » EVP_CIPH_RAND_KEY,des_init_key,NULL,
146 » » des_init_key,NULL,
147 EVP_CIPHER_set_asn1_iv, 192 EVP_CIPHER_set_asn1_iv,
148 EVP_CIPHER_get_asn1_iv,des_ctrl) 193 EVP_CIPHER_get_asn1_iv,des_ctrl)
149 194
150 static int des_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, 195 static int des_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
151 const unsigned char *iv, int enc) 196 const unsigned char *iv, int enc)
152 { 197 {
153 DES_cblock *deskey = (DES_cblock *)key; 198 DES_cblock *deskey = (DES_cblock *)key;
154 #ifdef EVP_CHECK_DES_KEY 199 #ifdef EVP_CHECK_DES_KEY
155 if(DES_set_key_checked(deskey,ctx->cipher_data) != 0) 200 if(DES_set_key_checked(deskey,ctx->cipher_data) != 0)
156 return 0; 201 return 0;
(...skipping 13 matching lines...) Expand all
170 return 0; 215 return 0;
171 DES_set_odd_parity((DES_cblock *)ptr); 216 DES_set_odd_parity((DES_cblock *)ptr);
172 return 1; 217 return 1;
173 218
174 default: 219 default:
175 return -1; 220 return -1;
176 } 221 }
177 } 222 }
178 223
179 #endif 224 #endif
OLDNEW
« no previous file with comments | « openssl/crypto/evp/e_camellia.c ('k') | openssl/crypto/evp/e_des3.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698