diff options
author | Ben Laurie <ben@openssl.org> | 1999-02-13 15:03:47 +0000 |
---|---|---|
committer | Ben Laurie <ben@openssl.org> | 1999-02-13 15:03:47 +0000 |
commit | 4a71b90debd3db4bade3792d249272e2e52b2016 (patch) | |
tree | 7b67bcfc7a98a49215f34485000597788ecff1c7 /crypto/des/destest.c | |
parent | 436d318c806003352b916f637ceb68f3bfde72de (diff) |
Add support for 3DES CBCM mode.
Diffstat (limited to 'crypto/des/destest.c')
-rw-r--r-- | crypto/des/destest.c | 54 |
1 files changed, 53 insertions, 1 deletions
diff --git a/crypto/des/destest.c b/crypto/des/destest.c index 5700608b9b..d915c7a22f 100644 --- a/crypto/des/destest.c +++ b/crypto/des/destest.c @@ -318,7 +318,7 @@ int argc; char *argv[]; { int i,j,err=0; - des_cblock in,out,outin,iv3; + des_cblock in,out,outin,iv3,iv2; des_key_schedule ks,ks2,ks3; unsigned char cbc_in[40]; unsigned char cbc_out[40]; @@ -328,6 +328,58 @@ char *argv[]; int num; char *str; + printf("Doing cbcm\n"); + if ((j=des_key_sched((C_Block *)cbc_key,ks)) != 0) + { + printf("Key error %d\n",j); + err=1; + } + if ((j=des_key_sched((C_Block *)cbc2_key,ks2)) != 0) + { + printf("Key error %d\n",j); + err=1; + } + if ((j=des_key_sched((C_Block *)cbc3_key,ks3)) != 0) + { + printf("Key error %d\n",j); + err=1; + } + memset(cbc_out,0,40); + memset(cbc_in,0,40); + i=strlen((char *)cbc_data)+1; + /* i=((i+7)/8)*8; */ + memcpy(iv3,cbc_iv,sizeof(cbc_iv)); + memset(iv2,'\0',sizeof iv2); + + des_ede3_cbcm_encrypt(cbc_data,cbc_out,16L,ks,ks2,ks3,iv3,iv2, + DES_ENCRYPT); + des_ede3_cbcm_encrypt(&cbc_data[16],&cbc_out[16],i-16,ks,ks2,ks3, + iv3,iv2,DES_ENCRYPT); + /* if (memcmp(cbc_out,cbc3_ok, + (unsigned int)(strlen((char *)cbc_data)+1+7)/8*8) != 0) + { + printf("des_ede3_cbc_encrypt encrypt error\n"); + err=1; + } + */ + memcpy(iv3,cbc_iv,sizeof(cbc_iv)); + memset(iv2,'\0',sizeof iv2); + des_ede3_cbcm_encrypt(cbc_out,cbc_in,i,ks,ks2,ks3,iv3,iv2,DES_DECRYPT); + if (memcmp(cbc_in,cbc_data,strlen(cbc_data)+1) != 0) + { + int n; + + printf("des_ede3_cbcm_encrypt decrypt error\n"); + for(n=0 ; n < i ; ++n) + printf(" %02x",cbc_data[n]); + printf("\n"); + for(n=0 ; n < i ; ++n) + printf(" %02x",cbc_in[n]); + printf("\n"); + err=1; + } + + printf("Doing ecb\n"); for (i=0; i<NUM_TESTS; i++) { |