1/* 2 * ccOpensslCompat.cpp - verify that the compatibility macros at the end of CommonDigest.h 3 * result in openssl-compatible calls 4 */ 5 6#include <stdlib.h> 7#include <strings.h> 8#include <stdio.h> 9#include <unistd.h> 10#include "digestCommonExtern.h" 11#include "common.h" 12 13#define MAX_DIGEST_LEN 64 14 15static void usage(char **argv) 16{ 17 printf("usage: %s [options]\n", argv[0]); 18 printf("Options:\n"); 19 printf(" q -- quiet\n"); 20 /* etc. */ 21 exit(1); 22} 23 24int main(int argc, char **argv) 25{ 26 int quiet = false; 27 int arg; 28 char *argp; 29 30 for(arg=1; arg<argc; arg++) { 31 argp = argv[arg]; 32 switch(argp[0]) { 33 case 'q': 34 quiet = true; 35 break; 36 default: 37 usage(argv); 38 } 39 } 40 41 testStartBanner("ccOpensslCompat", argc, argv); 42 43 const char *str = "digest this"; 44 unsigned len = strlen(str); 45 unsigned char digestOS[MAX_DIGEST_LEN]; 46 unsigned char digestCC[MAX_DIGEST_LEN]; 47 48 /* MD2 */ 49 if(!quiet) { 50 printf("...testing MD2\n"); 51 } 52 if(md2os(str, len, digestOS)) { 53 printf("***Error on openssl MD2\n"); 54 exit(1); 55 } 56 if(md2cc(str, len, digestCC)) { 57 printf("***Error on CommonCrypto MD2\n"); 58 exit(1); 59 } 60 if(memcmp(digestOS, digestCC, 16)) { 61 printf("***MD2 Digest miscompare\n"); 62 exit(1); 63 } 64 65 /* MD4 */ 66 if(!quiet) { 67 printf("...testing MD4\n"); 68 } 69 if(md4os(str, len, digestOS)) { 70 printf("***Error on openssl MD4\n"); 71 exit(1); 72 } 73 if(md4cc(str, len, digestCC)) { 74 printf("***Error on CommonCrypto MD5\n"); 75 exit(1); 76 } 77 if(memcmp(digestOS, digestCC, 16)) { 78 printf("***MD4 Digest miscompare\n"); 79 exit(1); 80 } 81 82 /* MD5 */ 83 if(!quiet) { 84 printf("...testing MD5\n"); 85 } 86 if(md5os(str, len, digestOS)) { 87 printf("***Error on openssl MD5\n"); 88 exit(1); 89 } 90 if(md5cc(str, len, digestCC)) { 91 printf("***Error on CommonCrypto MD5\n"); 92 exit(1); 93 } 94 if(memcmp(digestOS, digestCC, 16)) { 95 printf("***MD5 Digest miscompare\n"); 96 exit(1); 97 } 98 99 /* SHA1 */ 100 if(!quiet) { 101 printf("...testing SHA1\n"); 102 } 103 if(sha1os(str, len, digestOS)) { 104 printf("***Error on openssl SHA1\n"); 105 exit(1); 106 } 107 if(sha1cc(str, len, digestCC)) { 108 printf("***Error on CommonCrypto SHA1\n"); 109 exit(1); 110 } 111 if(memcmp(digestOS, digestCC, 20)) { 112 printf("***SHA1 Digest miscompare\n"); 113 exit(1); 114 } 115 116 /* SHA224 */ 117 if(!quiet) { 118 printf("...testing SHA224\n"); 119 } 120 if(sha224os(str, len, digestOS)) { 121 printf("***Error on openssl SHA224\n"); 122 exit(1); 123 } 124 if(sha224cc(str, len, digestCC)) { 125 printf("***Error on CommonCrypto SHA224\n"); 126 exit(1); 127 } 128 if(memcmp(digestOS, digestCC, 28)) { 129 printf("***SHA224 Digest miscompare\n"); 130 exit(1); 131 } 132 133 /* SHA256 */ 134 if(!quiet) { 135 printf("...testing SHA256\n"); 136 } 137 if(sha256os(str, len, digestOS)) { 138 printf("***Error on openssl SHA256\n"); 139 exit(1); 140 } 141 if(sha256cc(str, len, digestCC)) { 142 printf("***Error on CommonCrypto SHA256\n"); 143 exit(1); 144 } 145 if(memcmp(digestOS, digestCC, 32)) { 146 printf("***SHA256 Digest miscompare\n"); 147 exit(1); 148 } 149 150 /* SHA384 */ 151 if(!quiet) { 152 printf("...testing SHA384\n"); 153 } 154 if(sha384os(str, len, digestOS)) { 155 printf("***Error on openssl SHA384\n"); 156 exit(1); 157 } 158 if(sha384cc(str, len, digestCC)) { 159 printf("***Error on CommonCrypto SHA384\n"); 160 exit(1); 161 } 162 if(memcmp(digestOS, digestCC, 48)) { 163 printf("***SHA384 Digest miscompare\n"); 164 exit(1); 165 } 166 167 /* SHA512 */ 168 if(!quiet) { 169 printf("...testing SHA512\n"); 170 } 171 if(sha512os(str, len, digestOS)) { 172 printf("***Error on openssl SHA512\n"); 173 exit(1); 174 } 175 if(sha512cc(str, len, digestCC)) { 176 printf("***Error on CommonCrypto SHA512\n"); 177 exit(1); 178 } 179 if(memcmp(digestOS, digestCC, 64)) { 180 printf("***SHA512 Digest miscompare\n"); 181 exit(1); 182 } 183 184 if(!quiet) { 185 printf("...success\n"); 186 } 187 return 0; 188} 189