aboutsummaryrefslogtreecommitdiffstats
path: root/crypto/des/destest.c
diff options
context:
space:
mode:
authorBen Laurie <ben@openssl.org>1999-02-13 15:03:47 +0000
committerBen Laurie <ben@openssl.org>1999-02-13 15:03:47 +0000
commit4a71b90debd3db4bade3792d249272e2e52b2016 (patch)
tree7b67bcfc7a98a49215f34485000597788ecff1c7 /crypto/des/destest.c
parent436d318c806003352b916f637ceb68f3bfde72de (diff)
downloadopenssl-4a71b90debd3db4bade3792d249272e2e52b2016.tar.gz
Add support for 3DES CBCM mode.
Diffstat (limited to 'crypto/des/destest.c')
-rw-r--r--crypto/des/destest.c54
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++)
{