Add verification checks to the test suite
authorTheodore Tso <tytso@mit.edu>
Wed, 26 Oct 1994 23:33:25 +0000 (23:33 +0000)
committerTheodore Tso <tytso@mit.edu>
Wed, 26 Oct 1994 23:33:25 +0000 (23:33 +0000)
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@4582 dc483132-0cff-0310-8789-dd5450dbe970

src/lib/des425/ChangeLog
src/lib/des425/Makefile.in
src/lib/des425/verify.c

index 4796d24cc672cf54dbdad253a95a91cd60126b01..d2fc93f3dbde56f10310c44f2cf17c53daf2ac49 100644 (file)
@@ -1,3 +1,8 @@
+Wed Oct 26 14:23:36 1994    (tytso@rsx-11)
+
+       * Makefile.in (check): 
+       * verify.c (main): Add verification checks to the test suite.
+
 Wed Oct 19 12:16:13 1994  Theodore Y. Ts'o  (tytso@dcl)
 
        * Makefile.in: make install obey $(DESTDIR) completely
index 93ddd55db63074dfaff3ad5c45bf84ea3a829e03..389a379a7b55bcfdfe0a0cf091f3a00478a8dd62 100644 (file)
@@ -30,12 +30,17 @@ SRCS=       $(srcdir)/cksum.c       \
        $(srcdir)/weak_key.c    
 
 
-EXT_LIB= $(TOPDIR)/lib/cryptoconf.o $(TOPDIR)/lib/crypto/libcrypto.a libdes425.a $(COMERRLIB)
+EXT_LIB= libdes425.a $(TOPLIBD)/libcrypto.a
+DEPKLIB= $(TOPLIBD)/libcrypto.a
 
-verify: verify.o libdes425.o
-       $(RM) verify.o
+verify: verify.o libdes425.a $(DEPKLIB)
        $(CC) -o $@ verify.o $(LDFLAGS) $(EXT_LIB)
 
+check:: verify
+       ./verify -z
+       ./verify -m
+       ./verify
+
 clean::
        $(RM) verify
 
index ce2a3bc8bacc3f0ba94d62f0ee466b5c2026fdf3..8ab1b37f8f5853fae3bb202f6a99e8056796f442 100644 (file)
@@ -71,6 +71,30 @@ unsigned char *ivec;
 unsigned char zero_key[8] = {1,1,1,1,1,1,1,1}; /* just parity bits */
 int i,j;
 
+unsigned char cipher1[8] = {
+    0x25,0xdd,0xac,0x3e,0x96,0x17,0x64,0x67
+};
+unsigned char cipher2[8] = {
+    0x3f,0xa4,0x0e,0x8a,0x98,0x4d,0x48,0x15
+};
+unsigned char cipher3[64] = {
+    0xe5,0xc7,0xcd,0xde,0x87,0x2b,0xf2,0x7c,
+    0x43,0xe9,0x34,0x00,0x8c,0x38,0x9c,0x0f,
+    0x68,0x37,0x88,0x49,0x9a,0x7c,0x05,0xf6
+};
+unsigned char checksum[8] = {
+    0x58,0xd2,0xe7,0x7e,0x86,0x06,0x27,0x33
+};
+
+unsigned char zresult[8] = {
+    0x8c, 0xa6, 0x4d, 0xe9, 0xc1, 0xb1, 0x23, 0xa7
+};
+
+unsigned char mresult[8] = {
+    0xa3, 0x80, 0xe0, 0x2a, 0x6b, 0xe5, 0x46, 0x96
+};
+
+    
 /*
  * Can also add :
  * plaintext = 0, key = 0, cipher = 0x8ca64de9c1b123a7 (or is it a 1?)
@@ -85,12 +109,6 @@ main(argc,argv)
 
     progname=argv[0];          /* salt away invoking program */
 
-    /* Assume a long is four bytes */
-    if (sizeof(long) != 4) {
-       printf("\nERROR,  size of long is %d",sizeof(long));
-       exit(-1);
-    }
-
     while (--argc > 0 && (*++argv)[0] == '-')
        for (i=1; argv[0][i] != '\0'; i++) {
            switch (argv[0][i]) {
@@ -133,7 +151,11 @@ main(argc,argv)
            printf("%02x ",cipher_text[j]);
        printf("\n");
        do_decrypt(output,cipher_text);
-       return(0);
+       if ( memcmp((char *)cipher_text, (char *)zresult, 8) ) {
+           printf("verify: error in zero key test\n");
+           exit(-1);
+       }
+       exit(0);
     }
 
     if (mflag) {
@@ -148,7 +170,11 @@ main(argc,argv)
        }
        printf("\n");
        do_decrypt(output,cipher_text);
-       return(0);
+       if ( memcmp((char *)cipher_text, (char *)mresult, 8) ) {
+           printf("verify: error in msb test\n");
+           exit(-1);
+       }
+       exit(0);
     }
 
     /* ECB mode Davies and Price */
@@ -170,6 +196,12 @@ main(argc,argv)
            printf("%02x ",cipher_text[j]);
        printf("\n\n");
        do_decrypt(output,cipher_text);
+       if ( memcmp((char *)cipher_text, (char *)cipher1, 8) ) {
+           printf("verify: error in ECB encryption\n");
+           exit(-1);
+       }
+       else 
+           printf("verify: ECB encription is correct\n\n");
     }
 
     /* ECB mode */
@@ -188,6 +220,12 @@ main(argc,argv)
        }
        printf("\n\n");
        do_decrypt(output,cipher_text);
+       if ( memcmp((char *)cipher_text, (char *)cipher2, 8) ) {
+           printf("verify: error in ECB encryption\n");
+           exit(-1);
+       }
+       else 
+           printf("verify: ECB encription is correct\n\n");
     }
 
     /* CBC mode */
@@ -212,6 +250,13 @@ main(argc,argv)
     des_cbc_encrypt(cipher_text,clear_text,(long) in_length,KS,ivec,0);
     printf("\tdecrypted clear_text = \"%s\"\n",clear_text);
 
+    if ( memcmp((char *)cipher_text, (char *)cipher3, in_length) ) {
+       printf("verify: error in CBC encryption\n");
+       exit(-1);
+    }
+    else 
+       printf("verify: CBC encription is correct\n\n");
+
     printf("EXAMPLE CBC checksum");
     printf("\tkey =  0123456789abcdef\tiv =  1234567890abcdef\n");
     printf("\tclear =\t\t\"7654321 Now is the time for \"\n");
@@ -224,6 +269,12 @@ main(argc,argv)
     for (j = 0; j<=7; j++)
        printf("%02x ",cipher_text[j]);
     printf("\n\n");
+    if ( memcmp((char *)cipher_text, (char *)checksum, 8) ) {
+       printf("verify: error in CBC cheksum\n");
+       exit(-1);
+    }
+    else 
+       printf("verify: CBC checksum is correct\n\n");
     exit(0);
 }