diff options
Diffstat (limited to 'src/lib/libcrypto/engine/eng_aesni.c')
-rw-r--r-- | src/lib/libcrypto/engine/eng_aesni.c | 331 |
1 files changed, 169 insertions, 162 deletions
diff --git a/src/lib/libcrypto/engine/eng_aesni.c b/src/lib/libcrypto/engine/eng_aesni.c index d547d7f465..b1eade2d63 100644 --- a/src/lib/libcrypto/engine/eng_aesni.c +++ b/src/lib/libcrypto/engine/eng_aesni.c | |||
@@ -102,7 +102,8 @@ void ENGINE_load_aesni (void) | |||
102 | /* On non-x86 CPUs it just returns. */ | 102 | /* On non-x86 CPUs it just returns. */ |
103 | #ifdef COMPILE_HW_AESNI | 103 | #ifdef COMPILE_HW_AESNI |
104 | ENGINE *toadd = ENGINE_aesni(); | 104 | ENGINE *toadd = ENGINE_aesni(); |
105 | if (!toadd) return; | 105 | if (!toadd) |
106 | return; | ||
106 | ENGINE_add (toadd); | 107 | ENGINE_add (toadd); |
107 | ENGINE_register_complete (toadd); | 108 | ENGINE_register_complete (toadd); |
108 | ENGINE_free (toadd); | 109 | ENGINE_free (toadd); |
@@ -112,32 +113,26 @@ void ENGINE_load_aesni (void) | |||
112 | 113 | ||
113 | #ifdef COMPILE_HW_AESNI | 114 | #ifdef COMPILE_HW_AESNI |
114 | int aesni_set_encrypt_key(const unsigned char *userKey, int bits, | 115 | int aesni_set_encrypt_key(const unsigned char *userKey, int bits, |
115 | AES_KEY *key); | 116 | AES_KEY *key); |
116 | int aesni_set_decrypt_key(const unsigned char *userKey, int bits, | 117 | int aesni_set_decrypt_key(const unsigned char *userKey, int bits, |
117 | AES_KEY *key); | 118 | AES_KEY *key); |
118 | 119 | ||
119 | void aesni_encrypt(const unsigned char *in, unsigned char *out, | 120 | void aesni_encrypt(const unsigned char *in, unsigned char *out, |
120 | const AES_KEY *key); | 121 | const AES_KEY *key); |
121 | void aesni_decrypt(const unsigned char *in, unsigned char *out, | 122 | void aesni_decrypt(const unsigned char *in, unsigned char *out, |
122 | const AES_KEY *key); | 123 | const AES_KEY *key); |
123 | 124 | ||
124 | void aesni_ecb_encrypt(const unsigned char *in, | 125 | void aesni_ecb_encrypt(const unsigned char *in, unsigned char *out, |
125 | unsigned char *out, | 126 | size_t length, const AES_KEY *key, int enc); |
126 | size_t length, | 127 | void aesni_cbc_encrypt(const unsigned char *in, unsigned char *out, |
127 | const AES_KEY *key, | 128 | size_t length, const AES_KEY *key, unsigned char *ivec, int enc); |
128 | int enc); | ||
129 | void aesni_cbc_encrypt(const unsigned char *in, | ||
130 | unsigned char *out, | ||
131 | size_t length, | ||
132 | const AES_KEY *key, | ||
133 | unsigned char *ivec, int enc); | ||
134 | 129 | ||
135 | /* Function for ENGINE detection and control */ | 130 | /* Function for ENGINE detection and control */ |
136 | static int aesni_init(ENGINE *e); | 131 | static int aesni_init(ENGINE *e); |
137 | 132 | ||
138 | /* Cipher Stuff */ | 133 | /* Cipher Stuff */ |
139 | static int aesni_ciphers(ENGINE *e, const EVP_CIPHER **cipher, | 134 | static int aesni_ciphers(ENGINE *e, const EVP_CIPHER **cipher, |
140 | const int **nids, int nid); | 135 | const int **nids, int nid); |
141 | 136 | ||
142 | #define AESNI_MIN_ALIGN 16 | 137 | #define AESNI_MIN_ALIGN 16 |
143 | #define AESNI_ALIGN(x) \ | 138 | #define AESNI_ALIGN(x) \ |
@@ -145,143 +140,146 @@ static int aesni_ciphers(ENGINE *e, const EVP_CIPHER **cipher, | |||
145 | 140 | ||
146 | /* Engine names */ | 141 | /* Engine names */ |
147 | static const char aesni_id[] = "aesni", | 142 | static const char aesni_id[] = "aesni", |
148 | aesni_name[] = "Intel AES-NI engine", | 143 | aesni_name[] = "Intel AES-NI engine", |
149 | no_aesni_name[] = "Intel AES-NI engine (no-aesni)"; | 144 | no_aesni_name[] = "Intel AES-NI engine (no-aesni)"; |
150 | 145 | ||
151 | 146 | ||
152 | /* The input and output encrypted as though 128bit cfb mode is being | 147 | /* The input and output encrypted as though 128bit cfb mode is being |
153 | * used. The extra state information to record how much of the | 148 | * used. The extra state information to record how much of the |
154 | * 128bit block we have used is contained in *num; | 149 | * 128bit block we have used is contained in *num; |
155 | */ | 150 | */ |
156 | static void aesni_cfb128_encrypt(const unsigned char *in, unsigned char *out, | 151 | static void |
157 | unsigned int len, const void *key, | 152 | aesni_cfb128_encrypt(const unsigned char *in, unsigned char *out, |
158 | unsigned char ivec[16], int *num, | 153 | unsigned int len, const void *key, unsigned char ivec[16], int *num, |
159 | int enc) | 154 | int enc) |
160 | { | 155 | { |
161 | unsigned int n; | 156 | unsigned int n; |
162 | size_t l = 0; | 157 | size_t l = 0; |
163 | 158 | ||
164 | assert(in && out && key && ivec && num); | 159 | assert(in && out && key && ivec && num); |
165 | 160 | ||
166 | n = *num; | 161 | n = *num; |
167 | 162 | ||
168 | if (enc) { | 163 | if (enc) { |
169 | #if !defined(OPENSSL_SMALL_FOOTPRINT) | 164 | #if !defined(OPENSSL_SMALL_FOOTPRINT) |
170 | if (16%sizeof(size_t) == 0) do { /* always true actually */ | 165 | if (16%sizeof(size_t) == 0) do { /* always true actually */ |
171 | while (n && len) { | 166 | while (n && len) { |
172 | *(out++) = ivec[n] ^= *(in++); | 167 | *(out++) = ivec[n] ^= *(in++); |
173 | --len; | 168 | --len; |
174 | n = (n+1) % 16; | 169 | n = (n + 1) % 16; |
175 | } | ||
176 | while (len>=16) { | ||
177 | aesni_encrypt(ivec, ivec, key); | ||
178 | for (n=0; n<16; n+=sizeof(size_t)) { | ||
179 | *(size_t*)(out+n) = | ||
180 | *(size_t*)(ivec+n) ^= *(size_t*)(in+n); | ||
181 | } | 170 | } |
182 | len -= 16; | 171 | while (len >= 16) { |
183 | out += 16; | 172 | aesni_encrypt(ivec, ivec, key); |
184 | in += 16; | 173 | for (n = 0; n < 16; n += sizeof(size_t)) { |
185 | } | 174 | *(size_t*)(out + n) = |
186 | n = 0; | 175 | *(size_t*)(ivec + n) ^= *(size_t*)(in + n); |
187 | if (len) { | 176 | } |
188 | aesni_encrypt(ivec, ivec, key); | 177 | len -= 16; |
189 | while (len--) { | 178 | out += 16; |
190 | out[n] = ivec[n] ^= in[n]; | 179 | in += 16; |
191 | ++n; | ||
192 | } | 180 | } |
193 | } | 181 | n = 0; |
194 | *num = n; | 182 | if (len) { |
195 | return; | 183 | aesni_encrypt(ivec, ivec, key); |
196 | } while (0); | 184 | while (len--) { |
197 | /* the rest would be commonly eliminated by x86* compiler */ | 185 | out[n] = ivec[n] ^= in[n]; |
186 | ++n; | ||
187 | } | ||
188 | } | ||
189 | *num = n; | ||
190 | return; | ||
191 | } while (0); | ||
192 | /* the rest would be commonly eliminated by x86* compiler */ | ||
198 | #endif | 193 | #endif |
199 | while (l<len) { | 194 | while (l < len) { |
200 | if (n == 0) { | 195 | if (n == 0) { |
201 | aesni_encrypt(ivec, ivec, key); | 196 | aesni_encrypt(ivec, ivec, key); |
202 | } | ||
203 | out[l] = ivec[n] ^= in[l]; | ||
204 | ++l; | ||
205 | n = (n+1) % 16; | ||
206 | } | ||
207 | *num = n; | ||
208 | } else { | ||
209 | #if !defined(OPENSSL_SMALL_FOOTPRINT) | ||
210 | if (16%sizeof(size_t) == 0) do { /* always true actually */ | ||
211 | while (n && len) { | ||
212 | unsigned char c; | ||
213 | *(out++) = ivec[n] ^ (c = *(in++)); ivec[n] = c; | ||
214 | --len; | ||
215 | n = (n+1) % 16; | ||
216 | } | ||
217 | while (len>=16) { | ||
218 | aesni_encrypt(ivec, ivec, key); | ||
219 | for (n=0; n<16; n+=sizeof(size_t)) { | ||
220 | size_t t = *(size_t*)(in+n); | ||
221 | *(size_t*)(out+n) = *(size_t*)(ivec+n) ^ t; | ||
222 | *(size_t*)(ivec+n) = t; | ||
223 | } | 197 | } |
224 | len -= 16; | 198 | out[l] = ivec[n] ^= in[l]; |
225 | out += 16; | 199 | ++l; |
226 | in += 16; | 200 | n = (n + 1) % 16; |
227 | } | 201 | } |
228 | n = 0; | 202 | *num = n; |
229 | if (len) { | 203 | } else { |
230 | aesni_encrypt(ivec, ivec, key); | 204 | #if !defined(OPENSSL_SMALL_FOOTPRINT) |
231 | while (len--) { | 205 | if (16%sizeof(size_t) == 0) do { /* always true actually */ |
206 | while (n && len) { | ||
232 | unsigned char c; | 207 | unsigned char c; |
233 | out[n] = ivec[n] ^ (c = in[n]); ivec[n] = c; | 208 | *(out++) = ivec[n] ^ (c = *(in++)); |
234 | ++n; | 209 | ivec[n] = c; |
210 | --len; | ||
211 | n = (n + 1) % 16; | ||
235 | } | 212 | } |
236 | } | 213 | while (len >= 16) { |
237 | *num = n; | 214 | aesni_encrypt(ivec, ivec, key); |
238 | return; | 215 | for (n = 0; n < 16; n += sizeof(size_t)) { |
239 | } while (0); | 216 | size_t t = *(size_t*)(in + n); |
240 | /* the rest would be commonly eliminated by x86* compiler */ | 217 | *(size_t*)(out + n) = *(size_t*)(ivec + n) ^ t; |
218 | *(size_t*)(ivec + n) = t; | ||
219 | } | ||
220 | len -= 16; | ||
221 | out += 16; | ||
222 | in += 16; | ||
223 | } | ||
224 | n = 0; | ||
225 | if (len) { | ||
226 | aesni_encrypt(ivec, ivec, key); | ||
227 | while (len--) { | ||
228 | unsigned char c; | ||
229 | out[n] = ivec[n] ^ (c = in[n]); | ||
230 | ivec[n] = c; | ||
231 | ++n; | ||
232 | } | ||
233 | } | ||
234 | *num = n; | ||
235 | return; | ||
236 | } while (0); | ||
237 | /* the rest would be commonly eliminated by x86* compiler */ | ||
241 | #endif | 238 | #endif |
242 | while (l<len) { | 239 | while (l < len) { |
243 | unsigned char c; | 240 | unsigned char c; |
244 | if (n == 0) { | 241 | if (n == 0) { |
245 | aesni_encrypt(ivec, ivec, key); | 242 | aesni_encrypt(ivec, ivec, key); |
243 | } | ||
244 | out[l] = ivec[n] ^ (c = in[l]); | ||
245 | ivec[n] = c; | ||
246 | ++l; | ||
247 | n = (n + 1) % 16; | ||
246 | } | 248 | } |
247 | out[l] = ivec[n] ^ (c = in[l]); ivec[n] = c; | 249 | *num = n; |
248 | ++l; | ||
249 | n = (n+1) % 16; | ||
250 | } | 250 | } |
251 | *num=n; | ||
252 | } | ||
253 | } | 251 | } |
254 | 252 | ||
255 | /* The input and output encrypted as though 128bit ofb mode is being | 253 | /* The input and output encrypted as though 128bit ofb mode is being |
256 | * used. The extra state information to record how much of the | 254 | * used. The extra state information to record how much of the |
257 | * 128bit block we have used is contained in *num; | 255 | * 128bit block we have used is contained in *num; |
258 | */ | 256 | */ |
259 | static void aesni_ofb128_encrypt(const unsigned char *in, unsigned char *out, | 257 | static void |
260 | unsigned int len, const void *key, | 258 | aesni_ofb128_encrypt(const unsigned char *in, unsigned char *out, |
261 | unsigned char ivec[16], int *num) | 259 | unsigned int len, const void *key, unsigned char ivec[16], int *num) |
262 | { | 260 | { |
263 | unsigned int n; | 261 | unsigned int n; |
264 | size_t l=0; | 262 | size_t l = 0; |
265 | 263 | ||
266 | assert(in && out && key && ivec && num); | 264 | assert(in && out && key && ivec && num); |
267 | 265 | ||
268 | n = *num; | 266 | n = *num; |
269 | 267 | ||
270 | #if !defined(OPENSSL_SMALL_FOOTPRINT) | 268 | #if !defined(OPENSSL_SMALL_FOOTPRINT) |
271 | if (16%sizeof(size_t) == 0) do { /* always true actually */ | 269 | if (16%sizeof(size_t) == 0) do { /* always true actually */ |
272 | while (n && len) { | 270 | while (n && len) { |
273 | *(out++) = *(in++) ^ ivec[n]; | 271 | *(out++) = *(in++) ^ ivec[n]; |
274 | --len; | 272 | --len; |
275 | n = (n+1) % 16; | 273 | n = (n + 1) % 16; |
276 | } | 274 | } |
277 | while (len>=16) { | 275 | while (len >= 16) { |
278 | aesni_encrypt(ivec, ivec, key); | 276 | aesni_encrypt(ivec, ivec, key); |
279 | for (n=0; n<16; n+=sizeof(size_t)) | 277 | for (n = 0; n < 16; n += sizeof(size_t)) |
280 | *(size_t*)(out+n) = | 278 | *(size_t*)(out + n) = |
281 | *(size_t*)(in+n) ^ *(size_t*)(ivec+n); | 279 | *(size_t*)(in + n) ^ *(size_t*)(ivec + n); |
282 | len -= 16; | 280 | len -= 16; |
283 | out += 16; | 281 | out += 16; |
284 | in += 16; | 282 | in += 16; |
285 | } | 283 | } |
286 | n = 0; | 284 | n = 0; |
287 | if (len) { | 285 | if (len) { |
@@ -293,19 +291,19 @@ static void aesni_ofb128_encrypt(const unsigned char *in, unsigned char *out, | |||
293 | } | 291 | } |
294 | *num = n; | 292 | *num = n; |
295 | return; | 293 | return; |
296 | } while(0); | 294 | } while (0); |
297 | /* the rest would be commonly eliminated by x86* compiler */ | 295 | /* the rest would be commonly eliminated by x86* compiler */ |
298 | #endif | 296 | #endif |
299 | while (l<len) { | 297 | while (l < len) { |
300 | if (n==0) { | 298 | if (n == 0) { |
301 | aesni_encrypt(ivec, ivec, key); | 299 | aesni_encrypt(ivec, ivec, key); |
302 | } | 300 | } |
303 | out[l] = in[l] ^ ivec[n]; | 301 | out[l] = in[l] ^ ivec[n]; |
304 | ++l; | 302 | ++l; |
305 | n = (n+1) % 16; | 303 | n = (n + 1) % 16; |
306 | } | 304 | } |
307 | 305 | ||
308 | *num=n; | 306 | *num = n; |
309 | } | 307 | } |
310 | /* ===== Engine "management" functions ===== */ | 308 | /* ===== Engine "management" functions ===== */ |
311 | 309 | ||
@@ -316,6 +314,7 @@ static int | |||
316 | aesni_bind_helper(ENGINE *e) | 314 | aesni_bind_helper(ENGINE *e) |
317 | { | 315 | { |
318 | int engage; | 316 | int engage; |
317 | |||
319 | if (sizeof(OPENSSL_ia32cap_P) > 4) { | 318 | if (sizeof(OPENSSL_ia32cap_P) > 4) { |
320 | engage = ((IA32CAP)OPENSSL_ia32cap_P >> 57) & 1; | 319 | engage = ((IA32CAP)OPENSSL_ia32cap_P >> 57) & 1; |
321 | } else { | 320 | } else { |
@@ -326,10 +325,8 @@ aesni_bind_helper(ENGINE *e) | |||
326 | /* Register everything or return with an error */ | 325 | /* Register everything or return with an error */ |
327 | if (!ENGINE_set_id(e, aesni_id) || | 326 | if (!ENGINE_set_id(e, aesni_id) || |
328 | !ENGINE_set_name(e, engage ? aesni_name : no_aesni_name) || | 327 | !ENGINE_set_name(e, engage ? aesni_name : no_aesni_name) || |
329 | |||
330 | !ENGINE_set_init_function(e, aesni_init) || | 328 | !ENGINE_set_init_function(e, aesni_init) || |
331 | (engage && !ENGINE_set_ciphers (e, aesni_ciphers)) | 329 | (engage && !ENGINE_set_ciphers (e, aesni_ciphers))) |
332 | ) | ||
333 | return 0; | 330 | return 0; |
334 | 331 | ||
335 | /* Everything looks good */ | 332 | /* Everything looks good */ |
@@ -403,60 +400,72 @@ static int aesni_cipher_nids[] = { | |||
403 | NID_aes_256_ofb, | 400 | NID_aes_256_ofb, |
404 | }; | 401 | }; |
405 | static int aesni_cipher_nids_num = | 402 | static int aesni_cipher_nids_num = |
406 | (sizeof(aesni_cipher_nids)/sizeof(aesni_cipher_nids[0])); | 403 | (sizeof(aesni_cipher_nids) / sizeof(aesni_cipher_nids[0])); |
407 | 404 | ||
408 | typedef struct | 405 | typedef struct { |
409 | { | ||
410 | AES_KEY ks; | 406 | AES_KEY ks; |
411 | unsigned int _pad1[3]; | 407 | unsigned int _pad1[3]; |
412 | } AESNI_KEY; | 408 | } AESNI_KEY; |
413 | 409 | ||
414 | static int | 410 | static int |
415 | aesni_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *user_key, | 411 | aesni_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *user_key, |
416 | const unsigned char *iv, int enc) | 412 | const unsigned char *iv, int enc) |
417 | { | 413 | { |
418 | int ret; | 414 | int ret; |
419 | AES_KEY *key = AESNI_ALIGN(ctx->cipher_data); | 415 | AES_KEY *key = AESNI_ALIGN(ctx->cipher_data); |
420 | 416 | ||
421 | if ((ctx->cipher->flags & EVP_CIPH_MODE) == EVP_CIPH_CFB_MODE | 417 | if ((ctx->cipher->flags & EVP_CIPH_MODE) == EVP_CIPH_CFB_MODE || |
422 | || (ctx->cipher->flags & EVP_CIPH_MODE) == EVP_CIPH_OFB_MODE | 418 | (ctx->cipher->flags & EVP_CIPH_MODE) == EVP_CIPH_OFB_MODE || |
423 | || enc) | 419 | enc) |
424 | ret=aesni_set_encrypt_key(user_key, ctx->key_len * 8, key); | 420 | ret = aesni_set_encrypt_key(user_key, ctx->key_len * 8, key); |
425 | else | 421 | else |
426 | ret=aesni_set_decrypt_key(user_key, ctx->key_len * 8, key); | 422 | ret = aesni_set_decrypt_key(user_key, ctx->key_len * 8, key); |
427 | 423 | ||
428 | if(ret < 0) { | 424 | if (ret < 0) { |
429 | EVPerr(EVP_F_AESNI_INIT_KEY,EVP_R_AES_KEY_SETUP_FAILED); | 425 | EVPerr(EVP_F_AESNI_INIT_KEY, EVP_R_AES_KEY_SETUP_FAILED); |
430 | return 0; | 426 | return 0; |
431 | } | 427 | } |
432 | 428 | ||
433 | return 1; | 429 | return 1; |
434 | } | 430 | } |
435 | 431 | ||
436 | static int aesni_cipher_ecb(EVP_CIPHER_CTX *ctx, unsigned char *out, | 432 | static int |
437 | const unsigned char *in, size_t inl) | 433 | aesni_cipher_ecb(EVP_CIPHER_CTX *ctx, unsigned char *out, |
438 | { AES_KEY *key = AESNI_ALIGN(ctx->cipher_data); | 434 | const unsigned char *in, size_t inl) |
435 | { | ||
436 | AES_KEY *key = AESNI_ALIGN(ctx->cipher_data); | ||
437 | |||
439 | aesni_ecb_encrypt(in, out, inl, key, ctx->encrypt); | 438 | aesni_ecb_encrypt(in, out, inl, key, ctx->encrypt); |
440 | return 1; | 439 | return 1; |
441 | } | 440 | } |
442 | static int aesni_cipher_cbc(EVP_CIPHER_CTX *ctx, unsigned char *out, | 441 | |
443 | const unsigned char *in, size_t inl) | 442 | static int |
444 | { AES_KEY *key = AESNI_ALIGN(ctx->cipher_data); | 443 | aesni_cipher_cbc(EVP_CIPHER_CTX *ctx, unsigned char *out, |
445 | aesni_cbc_encrypt(in, out, inl, key, | 444 | const unsigned char *in, size_t inl) |
446 | ctx->iv, ctx->encrypt); | 445 | { |
446 | AES_KEY *key = AESNI_ALIGN(ctx->cipher_data); | ||
447 | |||
448 | aesni_cbc_encrypt(in, out, inl, key, ctx->iv, ctx->encrypt); | ||
447 | return 1; | 449 | return 1; |
448 | } | 450 | } |
449 | static int aesni_cipher_cfb(EVP_CIPHER_CTX *ctx, unsigned char *out, | ||
450 | const unsigned char *in, size_t inl) | ||
451 | { AES_KEY *key = AESNI_ALIGN(ctx->cipher_data); | ||
452 | 451 | ||
453 | aesni_cfb128_encrypt(in, out, inl, key, ctx->iv, | 452 | static int |
454 | &ctx->num, ctx->encrypt); | 453 | aesni_cipher_cfb(EVP_CIPHER_CTX *ctx, unsigned char *out, |
454 | const unsigned char *in, size_t inl) | ||
455 | { | ||
456 | AES_KEY *key = AESNI_ALIGN(ctx->cipher_data); | ||
457 | |||
458 | aesni_cfb128_encrypt(in, out, inl, key, ctx->iv, &ctx->num, | ||
459 | ctx->encrypt); | ||
455 | return 1; | 460 | return 1; |
456 | } | 461 | } |
457 | static int aesni_cipher_ofb(EVP_CIPHER_CTX *ctx, unsigned char *out, | 462 | |
458 | const unsigned char *in, size_t inl) | 463 | static int |
459 | { AES_KEY *key = AESNI_ALIGN(ctx->cipher_data); | 464 | aesni_cipher_ofb(EVP_CIPHER_CTX *ctx, unsigned char *out, |
465 | const unsigned char *in, size_t inl) | ||
466 | { | ||
467 | AES_KEY *key = AESNI_ALIGN(ctx->cipher_data); | ||
468 | |||
460 | aesni_ofb128_encrypt(in, out, inl, key, ctx->iv, &ctx->num); | 469 | aesni_ofb128_encrypt(in, out, inl, key, ctx->iv, &ctx->num); |
461 | return 1; | 470 | return 1; |
462 | } | 471 | } |
@@ -487,24 +496,23 @@ static const EVP_CIPHER aesni_##ksize##_##lmode = { \ | |||
487 | NULL \ | 496 | NULL \ |
488 | } | 497 | } |
489 | 498 | ||
490 | DECLARE_AES_EVP(128,ecb,ECB); | 499 | DECLARE_AES_EVP(128, ecb, ECB); |
491 | DECLARE_AES_EVP(128,cbc,CBC); | 500 | DECLARE_AES_EVP(128, cbc, CBC); |
492 | DECLARE_AES_EVP(128,cfb,CFB); | 501 | DECLARE_AES_EVP(128, cfb, CFB); |
493 | DECLARE_AES_EVP(128,ofb,OFB); | 502 | DECLARE_AES_EVP(128, ofb, OFB); |
494 | 503 | ||
495 | DECLARE_AES_EVP(192,ecb,ECB); | 504 | DECLARE_AES_EVP(192, ecb, ECB); |
496 | DECLARE_AES_EVP(192,cbc,CBC); | 505 | DECLARE_AES_EVP(192, cbc, CBC); |
497 | DECLARE_AES_EVP(192,cfb,CFB); | 506 | DECLARE_AES_EVP(192, cfb, CFB); |
498 | DECLARE_AES_EVP(192,ofb,OFB); | 507 | DECLARE_AES_EVP(192, ofb, OFB); |
499 | 508 | ||
500 | DECLARE_AES_EVP(256,ecb,ECB); | 509 | DECLARE_AES_EVP(256, ecb, ECB); |
501 | DECLARE_AES_EVP(256,cbc,CBC); | 510 | DECLARE_AES_EVP(256, cbc, CBC); |
502 | DECLARE_AES_EVP(256,cfb,CFB); | 511 | DECLARE_AES_EVP(256, cfb, CFB); |
503 | DECLARE_AES_EVP(256,ofb,OFB); | 512 | DECLARE_AES_EVP(256, ofb, OFB); |
504 | 513 | ||
505 | static int | 514 | static int |
506 | aesni_ciphers (ENGINE *e, const EVP_CIPHER **cipher, | 515 | aesni_ciphers(ENGINE *e, const EVP_CIPHER **cipher, const int **nids, int nid) |
507 | const int **nids, int nid) | ||
508 | { | 516 | { |
509 | /* No specific cipher => return a list of supported nids ... */ | 517 | /* No specific cipher => return a list of supported nids ... */ |
510 | if (!cipher) { | 518 | if (!cipher) { |
@@ -563,4 +571,3 @@ aesni_ciphers (ENGINE *e, const EVP_CIPHER **cipher, | |||
563 | 571 | ||
564 | #endif /* COMPILE_HW_AESNI */ | 572 | #endif /* COMPILE_HW_AESNI */ |
565 | #endif /* !defined(OPENSSL_NO_HW) && !defined(OPENSSL_NO_HW_AESNI) && !defined(OPENSSL_NO_AES) */ | 573 | #endif /* !defined(OPENSSL_NO_HW) && !defined(OPENSSL_NO_HW_AESNI) && !defined(OPENSSL_NO_AES) */ |
566 | |||