summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libcrypto/evp/e_aes.c169
-rw-r--r--src/lib/libssl/src/crypto/evp/e_aes.c169
2 files changed, 204 insertions, 134 deletions
diff --git a/src/lib/libcrypto/evp/e_aes.c b/src/lib/libcrypto/evp/e_aes.c
index 3304e3417e..f96a15f19c 100644
--- a/src/lib/libcrypto/evp/e_aes.c
+++ b/src/lib/libcrypto/evp/e_aes.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: e_aes.c,v 1.24 2014/07/11 14:38:51 miod Exp $ */ 1/* $OpenBSD: e_aes.c,v 1.25 2014/07/12 19:31:03 miod Exp $ */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 2001-2011 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 2001-2011 The OpenSSL Project. All rights reserved.
4 * 4 *
@@ -385,75 +385,110 @@ aesni_ccm_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
385static int aesni_ccm_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 385static int aesni_ccm_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
386 const unsigned char *in, size_t len); 386 const unsigned char *in, size_t len);
387 387
388#define BLOCK_CIPHER_generic(nid,keylen,blocksize,ivlen,nmode,mode,MODE,flags) \ 388#define BLOCK_CIPHER_generic(n,keylen,blocksize,ivlen,nmode,mode,MODE,fl) \
389static const EVP_CIPHER aesni_##keylen##_##mode = { \ 389static const EVP_CIPHER aesni_##keylen##_##mode = { \
390 nid##_##keylen##_##nmode,blocksize,keylen/8,ivlen, \ 390 .nid = n##_##keylen##_##nmode, \
391 flags|EVP_CIPH_##MODE##_MODE, \ 391 .block_size = blocksize, \
392 aesni_init_key, \ 392 .key_len = keylen / 8, \
393 aesni_##mode##_cipher, \ 393 .iv_len = ivlen, \
394 NULL, \ 394 .flags = fl | EVP_CIPH_##MODE##_MODE, \
395 sizeof(EVP_AES_KEY), \ 395 .init = aesni_init_key, \
396 NULL,NULL,NULL,NULL }; \ 396 .do_cipher = aesni_##mode##_cipher, \
397static const EVP_CIPHER aes_##keylen##_##mode = { \ 397 .ctx_size = sizeof(EVP_AES_KEY) \
398 nid##_##keylen##_##nmode,blocksize, \ 398}; \
399 keylen/8,ivlen, \ 399static const EVP_CIPHER aes_##keylen##_##mode = { \
400 flags|EVP_CIPH_##MODE##_MODE, \ 400 .nid = n##_##keylen##_##nmode, \
401 aes_init_key, \ 401 .block_size = blocksize, \
402 aes_##mode##_cipher, \ 402 .key_len = keylen / 8, \
403 NULL, \ 403 .iv_len = ivlen, \
404 sizeof(EVP_AES_KEY), \ 404 .flags = fl | EVP_CIPH_##MODE##_MODE, \
405 NULL,NULL,NULL,NULL }; \ 405 .init = aes_init_key, \
406const EVP_CIPHER *EVP_aes_##keylen##_##mode(void) \ 406 .do_cipher = aes_##mode##_cipher, \
407{ return AESNI_CAPABLE?&aesni_##keylen##_##mode:&aes_##keylen##_##mode; } 407 .ctx_size = sizeof(EVP_AES_KEY) \
408 408}; \
409#define BLOCK_CIPHER_custom(nid,keylen,blocksize,ivlen,mode,MODE,flags) \ 409const EVP_CIPHER * \
410static const EVP_CIPHER aesni_##keylen##_##mode = { \ 410EVP_aes_##keylen##_##mode(void) \
411 nid##_##keylen##_##mode,blocksize, \ 411{ \
412 (EVP_CIPH_##MODE##_MODE==EVP_CIPH_XTS_MODE?2:1)*keylen/8, ivlen, \ 412 return AESNI_CAPABLE ? \
413 flags|EVP_CIPH_##MODE##_MODE, \ 413 &aesni_##keylen##_##mode : &aes_##keylen##_##mode; \
414 aesni_##mode##_init_key, \ 414}
415 aesni_##mode##_cipher, \ 415
416 aes_##mode##_cleanup, \ 416#define BLOCK_CIPHER_custom(n,keylen,blocksize,ivlen,mode,MODE,fl) \
417 sizeof(EVP_AES_##MODE##_CTX), \ 417static const EVP_CIPHER aesni_##keylen##_##mode = { \
418 NULL,NULL,aes_##mode##_ctrl,NULL }; \ 418 .nid = n##_##keylen##_##mode, \
419static const EVP_CIPHER aes_##keylen##_##mode = { \ 419 .block_size = blocksize, \
420 nid##_##keylen##_##mode,blocksize, \ 420 .key_len = \
421 (EVP_CIPH_##MODE##_MODE==EVP_CIPH_XTS_MODE?2:1)*keylen/8, ivlen, \ 421 (EVP_CIPH_##MODE##_MODE == EVP_CIPH_XTS_MODE ? 2 : 1) * \
422 flags|EVP_CIPH_##MODE##_MODE, \ 422 keylen / 8, \
423 aes_##mode##_init_key, \ 423 .iv_len = ivlen, \
424 aes_##mode##_cipher, \ 424 .flags = fl | EVP_CIPH_##MODE##_MODE, \
425 aes_##mode##_cleanup, \ 425 .init = aesni_##mode##_init_key, \
426 sizeof(EVP_AES_##MODE##_CTX), \ 426 .do_cipher = aesni_##mode##_cipher, \
427 NULL,NULL,aes_##mode##_ctrl,NULL }; \ 427 .cleanup = aes_##mode##_cleanup, \
428const EVP_CIPHER *EVP_aes_##keylen##_##mode(void) \ 428 .ctx_size = sizeof(EVP_AES_##MODE##_CTX), \
429{ return AESNI_CAPABLE?&aesni_##keylen##_##mode:&aes_##keylen##_##mode; } 429 .ctrl = aes_##mode##_ctrl \
430}; \
431static const EVP_CIPHER aes_##keylen##_##mode = { \
432 .nid = n##_##keylen##_##mode, \
433 .block_size = blocksize, \
434 .key_len = \
435 (EVP_CIPH_##MODE##_MODE == EVP_CIPH_XTS_MODE ? 2 : 1) * \
436 keylen / 8, \
437 .iv_len = ivlen, \
438 .flags = fl | EVP_CIPH_##MODE##_MODE, \
439 .init = aes_##mode##_init_key, \
440 .do_cipher = aes_##mode##_cipher, \
441 .cleanup = aes_##mode##_cleanup, \
442 .ctx_size = sizeof(EVP_AES_##MODE##_CTX), \
443 .ctrl = aes_##mode##_ctrl \
444}; \
445const EVP_CIPHER * \
446EVP_aes_##keylen##_##mode(void) \
447{ \
448 return AESNI_CAPABLE ? \
449 &aesni_##keylen##_##mode : &aes_##keylen##_##mode; \
450}
430 451
431#else 452#else
432 453
433#define BLOCK_CIPHER_generic(nid,keylen,blocksize,ivlen,nmode,mode,MODE,flags) \ 454#define BLOCK_CIPHER_generic(n,keylen,blocksize,ivlen,nmode,mode,MODE,fl) \
434static const EVP_CIPHER aes_##keylen##_##mode = { \ 455static const EVP_CIPHER aes_##keylen##_##mode = { \
435 nid##_##keylen##_##nmode,blocksize,keylen/8,ivlen, \ 456 .nid = n##_##keylen##_##nmode, \
436 flags|EVP_CIPH_##MODE##_MODE, \ 457 .block_size = blocksize, \
437 aes_init_key, \ 458 .key_len = keylen / 8, \
438 aes_##mode##_cipher, \ 459 .iv_len = ivlen, \
439 NULL, \ 460 .flags = fl | EVP_CIPH_##MODE##_MODE, \
440 sizeof(EVP_AES_KEY), \ 461 .init = aes_init_key, \
441 NULL,NULL,NULL,NULL }; \ 462 .do_cipher = aes_##mode##_cipher, \
442const EVP_CIPHER *EVP_aes_##keylen##_##mode(void) \ 463 .ctx_size = sizeof(EVP_AES_KEY) \
443{ return &aes_##keylen##_##mode; } 464}; \
444 465const EVP_CIPHER * \
445#define BLOCK_CIPHER_custom(nid,keylen,blocksize,ivlen,mode,MODE,flags) \ 466EVP_aes_##keylen##_##mode(void) \
446static const EVP_CIPHER aes_##keylen##_##mode = { \ 467{ \
447 nid##_##keylen##_##mode,blocksize, \ 468 return &aes_##keylen##_##mode; \
448 (EVP_CIPH_##MODE##_MODE==EVP_CIPH_XTS_MODE?2:1)*keylen/8, ivlen, \ 469}
449 flags|EVP_CIPH_##MODE##_MODE, \ 470
450 aes_##mode##_init_key, \ 471#define BLOCK_CIPHER_custom(n,keylen,blocksize,ivlen,mode,MODE,fl) \
451 aes_##mode##_cipher, \ 472static const EVP_CIPHER aes_##keylen##_##mode = { \
452 aes_##mode##_cleanup, \ 473 .nid = n##_##keylen##_##mode, \
453 sizeof(EVP_AES_##MODE##_CTX), \ 474 .block_size = blocksize, \
454 NULL,NULL,aes_##mode##_ctrl,NULL }; \ 475 .key_len = \
455const EVP_CIPHER *EVP_aes_##keylen##_##mode(void) \ 476 (EVP_CIPH_##MODE##_MODE == EVP_CIPH_XTS_MODE ? 2 : 1) * \
456{ return &aes_##keylen##_##mode; } 477 keylen / 8, \
478 .iv_len = ivlen, \
479 .flags = fl | EVP_CIPH_##MODE##_MODE, \
480 .init = aes_##mode##_init_key, \
481 .do_cipher = aes_##mode##_cipher, \
482 .cleanup = aes_##mode##_cleanup, \
483 .ctx_size = sizeof(EVP_AES_##MODE##_CTX), \
484 .ctrl = aes_##mode##_ctrl \
485}; \
486const EVP_CIPHER * \
487EVP_aes_##keylen##_##mode(void) \
488{ \
489 return &aes_##keylen##_##mode; \
490}
491
457#endif 492#endif
458 493
459#define BLOCK_CIPHER_generic_pack(nid,keylen,flags) \ 494#define BLOCK_CIPHER_generic_pack(nid,keylen,flags) \
diff --git a/src/lib/libssl/src/crypto/evp/e_aes.c b/src/lib/libssl/src/crypto/evp/e_aes.c
index 3304e3417e..f96a15f19c 100644
--- a/src/lib/libssl/src/crypto/evp/e_aes.c
+++ b/src/lib/libssl/src/crypto/evp/e_aes.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: e_aes.c,v 1.24 2014/07/11 14:38:51 miod Exp $ */ 1/* $OpenBSD: e_aes.c,v 1.25 2014/07/12 19:31:03 miod Exp $ */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 2001-2011 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 2001-2011 The OpenSSL Project. All rights reserved.
4 * 4 *
@@ -385,75 +385,110 @@ aesni_ccm_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
385static int aesni_ccm_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 385static int aesni_ccm_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
386 const unsigned char *in, size_t len); 386 const unsigned char *in, size_t len);
387 387
388#define BLOCK_CIPHER_generic(nid,keylen,blocksize,ivlen,nmode,mode,MODE,flags) \ 388#define BLOCK_CIPHER_generic(n,keylen,blocksize,ivlen,nmode,mode,MODE,fl) \
389static const EVP_CIPHER aesni_##keylen##_##mode = { \ 389static const EVP_CIPHER aesni_##keylen##_##mode = { \
390 nid##_##keylen##_##nmode,blocksize,keylen/8,ivlen, \ 390 .nid = n##_##keylen##_##nmode, \
391 flags|EVP_CIPH_##MODE##_MODE, \ 391 .block_size = blocksize, \
392 aesni_init_key, \ 392 .key_len = keylen / 8, \
393 aesni_##mode##_cipher, \ 393 .iv_len = ivlen, \
394 NULL, \ 394 .flags = fl | EVP_CIPH_##MODE##_MODE, \
395 sizeof(EVP_AES_KEY), \ 395 .init = aesni_init_key, \
396 NULL,NULL,NULL,NULL }; \ 396 .do_cipher = aesni_##mode##_cipher, \
397static const EVP_CIPHER aes_##keylen##_##mode = { \ 397 .ctx_size = sizeof(EVP_AES_KEY) \
398 nid##_##keylen##_##nmode,blocksize, \ 398}; \
399 keylen/8,ivlen, \ 399static const EVP_CIPHER aes_##keylen##_##mode = { \
400 flags|EVP_CIPH_##MODE##_MODE, \ 400 .nid = n##_##keylen##_##nmode, \
401 aes_init_key, \ 401 .block_size = blocksize, \
402 aes_##mode##_cipher, \ 402 .key_len = keylen / 8, \
403 NULL, \ 403 .iv_len = ivlen, \
404 sizeof(EVP_AES_KEY), \ 404 .flags = fl | EVP_CIPH_##MODE##_MODE, \
405 NULL,NULL,NULL,NULL }; \ 405 .init = aes_init_key, \
406const EVP_CIPHER *EVP_aes_##keylen##_##mode(void) \ 406 .do_cipher = aes_##mode##_cipher, \
407{ return AESNI_CAPABLE?&aesni_##keylen##_##mode:&aes_##keylen##_##mode; } 407 .ctx_size = sizeof(EVP_AES_KEY) \
408 408}; \
409#define BLOCK_CIPHER_custom(nid,keylen,blocksize,ivlen,mode,MODE,flags) \ 409const EVP_CIPHER * \
410static const EVP_CIPHER aesni_##keylen##_##mode = { \ 410EVP_aes_##keylen##_##mode(void) \
411 nid##_##keylen##_##mode,blocksize, \ 411{ \
412 (EVP_CIPH_##MODE##_MODE==EVP_CIPH_XTS_MODE?2:1)*keylen/8, ivlen, \ 412 return AESNI_CAPABLE ? \
413 flags|EVP_CIPH_##MODE##_MODE, \ 413 &aesni_##keylen##_##mode : &aes_##keylen##_##mode; \
414 aesni_##mode##_init_key, \ 414}
415 aesni_##mode##_cipher, \ 415
416 aes_##mode##_cleanup, \ 416#define BLOCK_CIPHER_custom(n,keylen,blocksize,ivlen,mode,MODE,fl) \
417 sizeof(EVP_AES_##MODE##_CTX), \ 417static const EVP_CIPHER aesni_##keylen##_##mode = { \
418 NULL,NULL,aes_##mode##_ctrl,NULL }; \ 418 .nid = n##_##keylen##_##mode, \
419static const EVP_CIPHER aes_##keylen##_##mode = { \ 419 .block_size = blocksize, \
420 nid##_##keylen##_##mode,blocksize, \ 420 .key_len = \
421 (EVP_CIPH_##MODE##_MODE==EVP_CIPH_XTS_MODE?2:1)*keylen/8, ivlen, \ 421 (EVP_CIPH_##MODE##_MODE == EVP_CIPH_XTS_MODE ? 2 : 1) * \
422 flags|EVP_CIPH_##MODE##_MODE, \ 422 keylen / 8, \
423 aes_##mode##_init_key, \ 423 .iv_len = ivlen, \
424 aes_##mode##_cipher, \ 424 .flags = fl | EVP_CIPH_##MODE##_MODE, \
425 aes_##mode##_cleanup, \ 425 .init = aesni_##mode##_init_key, \
426 sizeof(EVP_AES_##MODE##_CTX), \ 426 .do_cipher = aesni_##mode##_cipher, \
427 NULL,NULL,aes_##mode##_ctrl,NULL }; \ 427 .cleanup = aes_##mode##_cleanup, \
428const EVP_CIPHER *EVP_aes_##keylen##_##mode(void) \ 428 .ctx_size = sizeof(EVP_AES_##MODE##_CTX), \
429{ return AESNI_CAPABLE?&aesni_##keylen##_##mode:&aes_##keylen##_##mode; } 429 .ctrl = aes_##mode##_ctrl \
430}; \
431static const EVP_CIPHER aes_##keylen##_##mode = { \
432 .nid = n##_##keylen##_##mode, \
433 .block_size = blocksize, \
434 .key_len = \
435 (EVP_CIPH_##MODE##_MODE == EVP_CIPH_XTS_MODE ? 2 : 1) * \
436 keylen / 8, \
437 .iv_len = ivlen, \
438 .flags = fl | EVP_CIPH_##MODE##_MODE, \
439 .init = aes_##mode##_init_key, \
440 .do_cipher = aes_##mode##_cipher, \
441 .cleanup = aes_##mode##_cleanup, \
442 .ctx_size = sizeof(EVP_AES_##MODE##_CTX), \
443 .ctrl = aes_##mode##_ctrl \
444}; \
445const EVP_CIPHER * \
446EVP_aes_##keylen##_##mode(void) \
447{ \
448 return AESNI_CAPABLE ? \
449 &aesni_##keylen##_##mode : &aes_##keylen##_##mode; \
450}
430 451
431#else 452#else
432 453
433#define BLOCK_CIPHER_generic(nid,keylen,blocksize,ivlen,nmode,mode,MODE,flags) \ 454#define BLOCK_CIPHER_generic(n,keylen,blocksize,ivlen,nmode,mode,MODE,fl) \
434static const EVP_CIPHER aes_##keylen##_##mode = { \ 455static const EVP_CIPHER aes_##keylen##_##mode = { \
435 nid##_##keylen##_##nmode,blocksize,keylen/8,ivlen, \ 456 .nid = n##_##keylen##_##nmode, \
436 flags|EVP_CIPH_##MODE##_MODE, \ 457 .block_size = blocksize, \
437 aes_init_key, \ 458 .key_len = keylen / 8, \
438 aes_##mode##_cipher, \ 459 .iv_len = ivlen, \
439 NULL, \ 460 .flags = fl | EVP_CIPH_##MODE##_MODE, \
440 sizeof(EVP_AES_KEY), \ 461 .init = aes_init_key, \
441 NULL,NULL,NULL,NULL }; \ 462 .do_cipher = aes_##mode##_cipher, \
442const EVP_CIPHER *EVP_aes_##keylen##_##mode(void) \ 463 .ctx_size = sizeof(EVP_AES_KEY) \
443{ return &aes_##keylen##_##mode; } 464}; \
444 465const EVP_CIPHER * \
445#define BLOCK_CIPHER_custom(nid,keylen,blocksize,ivlen,mode,MODE,flags) \ 466EVP_aes_##keylen##_##mode(void) \
446static const EVP_CIPHER aes_##keylen##_##mode = { \ 467{ \
447 nid##_##keylen##_##mode,blocksize, \ 468 return &aes_##keylen##_##mode; \
448 (EVP_CIPH_##MODE##_MODE==EVP_CIPH_XTS_MODE?2:1)*keylen/8, ivlen, \ 469}
449 flags|EVP_CIPH_##MODE##_MODE, \ 470
450 aes_##mode##_init_key, \ 471#define BLOCK_CIPHER_custom(n,keylen,blocksize,ivlen,mode,MODE,fl) \
451 aes_##mode##_cipher, \ 472static const EVP_CIPHER aes_##keylen##_##mode = { \
452 aes_##mode##_cleanup, \ 473 .nid = n##_##keylen##_##mode, \
453 sizeof(EVP_AES_##MODE##_CTX), \ 474 .block_size = blocksize, \
454 NULL,NULL,aes_##mode##_ctrl,NULL }; \ 475 .key_len = \
455const EVP_CIPHER *EVP_aes_##keylen##_##mode(void) \ 476 (EVP_CIPH_##MODE##_MODE == EVP_CIPH_XTS_MODE ? 2 : 1) * \
456{ return &aes_##keylen##_##mode; } 477 keylen / 8, \
478 .iv_len = ivlen, \
479 .flags = fl | EVP_CIPH_##MODE##_MODE, \
480 .init = aes_##mode##_init_key, \
481 .do_cipher = aes_##mode##_cipher, \
482 .cleanup = aes_##mode##_cleanup, \
483 .ctx_size = sizeof(EVP_AES_##MODE##_CTX), \
484 .ctrl = aes_##mode##_ctrl \
485}; \
486const EVP_CIPHER * \
487EVP_aes_##keylen##_##mode(void) \
488{ \
489 return &aes_##keylen##_##mode; \
490}
491
457#endif 492#endif
458 493
459#define BLOCK_CIPHER_generic_pack(nid,keylen,flags) \ 494#define BLOCK_CIPHER_generic_pack(nid,keylen,flags) \