diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2007-07-01 23:19:15 +0000 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2007-07-01 23:19:15 +0000 |
commit | a197212e0f416767536a645079b559a601f87e6d (patch) | |
tree | d59c513aa9769adbc29d2d36c624b375f41d05db /fips-1.0/des | |
parent | 894422022113152fdf0d87b894a16e4d9863957c (diff) |
Modify AES and 3DES selftests to use EVP.
Diffstat (limited to 'fips-1.0/des')
-rw-r--r-- | fips-1.0/des/fips_des_selftest.c | 117 |
1 files changed, 39 insertions, 78 deletions
diff --git a/fips-1.0/des/fips_des_selftest.c b/fips-1.0/des/fips_des_selftest.c index 7dd01465a1..8ae215f131 100644 --- a/fips-1.0/des/fips_des_selftest.c +++ b/fips-1.0/des/fips_des_selftest.c @@ -50,13 +50,13 @@ #include <string.h> #include <openssl/err.h> #include <openssl/fips.h> -#include <openssl/des.h> +#include <openssl/evp.h> #include <openssl/opensslconf.h> #ifdef OPENSSL_FIPS static struct { - DES_cblock key; + unsigned char key[8]; unsigned char plaintext[8]; unsigned char ciphertext[8]; } tests[]= @@ -75,21 +75,20 @@ static struct static struct { - DES_cblock key1; - DES_cblock key2; + unsigned char key[16]; unsigned char plaintext[8]; unsigned char ciphertext[8]; } tests2[]= { { - { 0x7c,0x4f,0x6e,0xf7,0xa2,0x04,0x16,0xec }, - { 0x0b,0x6b,0x7c,0x9e,0x5e,0x19,0xa7,0xc4 }, + { 0x7c,0x4f,0x6e,0xf7,0xa2,0x04,0x16,0xec, + 0x0b,0x6b,0x7c,0x9e,0x5e,0x19,0xa7,0xc4 }, { 0x06,0xa7,0xd8,0x79,0xaa,0xce,0x69,0xef }, { 0x4c,0x11,0x17,0x55,0xbf,0xc4,0x4e,0xfd } }, { - { 0x5d,0x9e,0x01,0xd3,0x25,0xc7,0x3e,0x34 }, - { 0x01,0x16,0x7c,0x85,0x23,0xdf,0xe0,0x68 }, + { 0x5d,0x9e,0x01,0xd3,0x25,0xc7,0x3e,0x34, + 0x01,0x16,0x7c,0x85,0x23,0xdf,0xe0,0x68 }, { 0x9c,0x50,0x09,0x0f,0x5e,0x7d,0x69,0x7e }, { 0xd2,0x0b,0x18,0xdf,0xd9,0x0d,0x9e,0xff }, } @@ -97,24 +96,22 @@ static struct static struct { - DES_cblock key1; - DES_cblock key2; - DES_cblock key3; + unsigned char key[24]; unsigned char plaintext[8]; unsigned char ciphertext[8]; } tests3[]= { { - { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, - { 0xFE,0xDC,0xBA,0x98,0x76,0x54,0x32,0x10 }, - { 0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0 }, - { 0x8f,0x8f,0xbf,0x9b,0x5d,0x48,0xb4,0x1c}, - { 0x59,0x8c,0xe5,0xd3,0x6c,0xa2,0xea,0x1b}, + { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xFE,0xDC,0xBA,0x98,0x76,0x54,0x32,0x10, + 0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0 }, + { 0x8f,0x8f,0xbf,0x9b,0x5d,0x48,0xb4,0x1c }, + { 0x59,0x8c,0xe5,0xd3,0x6c,0xa2,0xea,0x1b }, }, { - { 0xDC,0xBA,0x98,0x76,0x54,0x32,0x10,0xFE }, - { 0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF }, - { 0xED,0x39,0xD9,0x50,0xFA,0x74,0xBC,0xC4 }, + { 0xDC,0xBA,0x98,0x76,0x54,0x32,0x10,0xFE, + 0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF, + 0xED,0x39,0xD9,0x50,0xFA,0x74,0xBC,0xC4 }, { 0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF }, { 0x11,0x25,0xb0,0x35,0xbe,0xa0,0x82,0x86 }, }, @@ -127,78 +124,42 @@ void FIPS_corrupt_des() int FIPS_selftest_des() { - int n; - + int n, ret = 0; + EVP_CIPHER_CTX ctx; + EVP_CIPHER_CTX_init(&ctx); +#if 0 /* Encrypt/decrypt with DES and compare to known answers */ for(n=0 ; n < 2 ; ++n) { - DES_key_schedule key; - DES_cblock buf; - - DES_set_key(&tests[n].key,&key); - DES_ecb_encrypt(&tests[n].plaintext,&buf,&key,1); - if(memcmp(buf,tests[n].ciphertext,sizeof buf)) - { - FIPSerr(FIPS_F_FIPS_SELFTEST_DES,FIPS_R_SELFTEST_FAILED); - return 0; - } - DES_ecb_encrypt(&tests[n].ciphertext,&buf,&key,0); - if(memcmp(buf,tests[n].plaintext,sizeof buf)) - { - FIPSerr(FIPS_F_FIPS_SELFTEST_DES,FIPS_R_SELFTEST_FAILED); - return 0; - } + if (!fips_cipher_test(&ctx, EVP_des_ecb(), + tests[n].key, NULL, + tests[n].plaintext, tests[n].ciphertext, 8)) + goto err; } - +#endif /* Encrypt/decrypt with 2-key 3DES and compare to known answers */ for(n=0 ; n < 2 ; ++n) { - DES_key_schedule key1, key2; - unsigned char buf[8]; - - DES_set_key(&tests2[n].key1,&key1); - DES_set_key(&tests2[n].key2,&key2); - DES_ecb2_encrypt((const_DES_cblock *)tests2[n].plaintext, - (DES_cblock *)buf,&key1,&key2,1); - if(memcmp(buf,tests2[n].ciphertext,sizeof buf)) - { - FIPSerr(FIPS_F_FIPS_SELFTEST_DES,FIPS_R_SELFTEST_FAILED); - return 0; - } - DES_ecb2_encrypt((const_DES_cblock *)tests2[n].ciphertext, - (DES_cblock *)buf,&key1,&key2,0); - if(memcmp(buf,tests2[n].plaintext,sizeof buf)) - { - FIPSerr(FIPS_F_FIPS_SELFTEST_DES,FIPS_R_SELFTEST_FAILED); - return 0; - } + if (!fips_cipher_test(&ctx, EVP_des_ede_ecb(), + tests2[n].key, NULL, + tests2[n].plaintext, tests2[n].ciphertext, 8)) + goto err; } /* Encrypt/decrypt with 3DES and compare to known answers */ for(n=0 ; n < 2 ; ++n) { - DES_key_schedule key1, key2, key3; - unsigned char buf[8]; - - DES_set_key(&tests3[n].key1,&key1); - DES_set_key(&tests3[n].key2,&key2); - DES_set_key(&tests3[n].key3,&key3); - DES_ecb3_encrypt((const_DES_cblock *)tests3[n].plaintext, - (DES_cblock *)buf,&key1,&key2,&key3,1); - if(memcmp(buf,tests3[n].ciphertext,sizeof buf)) - { - FIPSerr(FIPS_F_FIPS_SELFTEST_DES,FIPS_R_SELFTEST_FAILED); - return 0; - } - DES_ecb3_encrypt((const_DES_cblock *)tests3[n].ciphertext, - (DES_cblock *)buf,&key1,&key2,&key3,0); - if(memcmp(buf,tests3[n].plaintext,sizeof buf)) - { - FIPSerr(FIPS_F_FIPS_SELFTEST_DES,FIPS_R_SELFTEST_FAILED); - return 0; - } + if (!fips_cipher_test(&ctx, EVP_des_ede3_ecb(), + tests3[n].key, NULL, + tests3[n].plaintext, tests3[n].ciphertext, 8)) + goto err; } + ret = 1; + err: + EVP_CIPHER_CTX_cleanup(&ctx); + if (ret == 0) + FIPSerr(FIPS_F_FIPS_SELFTEST_DES,FIPS_R_SELFTEST_FAILED); - return 1; + return ret; } #endif |