]> git.saurik.com Git - apple/security.git/blobdiff - SecurityTests/cspxutils/ccOpensslCompat/ccOpensslCompat.cpp
Security-57031.1.35.tar.gz
[apple/security.git] / SecurityTests / cspxutils / ccOpensslCompat / ccOpensslCompat.cpp
diff --git a/SecurityTests/cspxutils/ccOpensslCompat/ccOpensslCompat.cpp b/SecurityTests/cspxutils/ccOpensslCompat/ccOpensslCompat.cpp
new file mode 100644 (file)
index 0000000..d3a6d8b
--- /dev/null
@@ -0,0 +1,188 @@
+/*
+ * ccOpensslCompat.cpp - verify that the compatibility macros at the end of CommonDigest.h
+ *                       result in openssl-compatible calls
+ */
+#include <stdlib.h>
+#include <strings.h>
+#include <stdio.h>
+#include <unistd.h>
+#include "digestCommonExtern.h"
+#include "common.h"
+
+#define MAX_DIGEST_LEN         64
+
+static void usage(char **argv)
+{
+       printf("usage: %s [options]\n", argv[0]);
+       printf("Options:\n");
+       printf("   q              -- quiet\n");
+       /* etc. */
+       exit(1);
+}
+
+int main(int argc, char **argv)
+{
+       int quiet = false;
+       int arg;
+       char *argp;
+       
+       for(arg=1; arg<argc; arg++) {
+               argp = argv[arg];
+               switch(argp[0]) {
+                       case 'q':
+                               quiet = true;
+                               break;
+                       default:
+                               usage(argv);
+               }
+       }
+       
+       testStartBanner("ccOpensslCompat", argc, argv);
+       
+       const char *str = "digest this";
+       unsigned len = strlen(str);
+       unsigned char digestOS[MAX_DIGEST_LEN];
+       unsigned char digestCC[MAX_DIGEST_LEN];
+       
+       /* MD2 */
+       if(!quiet) {
+               printf("...testing MD2\n");
+       }
+       if(md2os(str, len, digestOS)) {
+               printf("***Error on openssl MD2\n");
+               exit(1);
+       }
+       if(md2cc(str, len, digestCC)) {
+               printf("***Error on CommonCrypto MD2\n");
+               exit(1);
+       }
+       if(memcmp(digestOS, digestCC, 16)) {
+               printf("***MD2 Digest miscompare\n");
+               exit(1);
+       }
+       
+       /* MD4 */
+       if(!quiet) {
+               printf("...testing MD4\n");
+       }
+       if(md4os(str, len, digestOS)) {
+               printf("***Error on openssl MD4\n");
+               exit(1);
+       }
+       if(md4cc(str, len, digestCC)) {
+               printf("***Error on CommonCrypto MD5\n");
+               exit(1);
+       }
+       if(memcmp(digestOS, digestCC, 16)) {
+               printf("***MD4 Digest miscompare\n");
+               exit(1);
+       }
+
+       /* MD5 */
+       if(!quiet) {
+               printf("...testing MD5\n");
+       }
+       if(md5os(str, len, digestOS)) {
+               printf("***Error on openssl MD5\n");
+               exit(1);
+       }
+       if(md5cc(str, len, digestCC)) {
+               printf("***Error on CommonCrypto MD5\n");
+               exit(1);
+       }
+       if(memcmp(digestOS, digestCC, 16)) {
+               printf("***MD5 Digest miscompare\n");
+               exit(1);
+       }
+
+       /* SHA1 */
+       if(!quiet) {
+               printf("...testing SHA1\n");
+       }
+       if(sha1os(str, len, digestOS)) {
+               printf("***Error on openssl SHA1\n");
+               exit(1);
+       }
+       if(sha1cc(str, len, digestCC)) {
+               printf("***Error on CommonCrypto SHA1\n");
+               exit(1);
+       }
+       if(memcmp(digestOS, digestCC, 20)) {
+               printf("***SHA1 Digest miscompare\n");
+               exit(1);
+       }
+
+       /* SHA224 */
+       if(!quiet) {
+               printf("...testing SHA224\n");
+       }
+       if(sha224os(str, len, digestOS)) {
+               printf("***Error on openssl SHA224\n");
+               exit(1);
+       }
+       if(sha224cc(str, len, digestCC)) {
+               printf("***Error on CommonCrypto SHA224\n");
+               exit(1);
+       }
+       if(memcmp(digestOS, digestCC, 28)) {
+               printf("***SHA224 Digest miscompare\n");
+               exit(1);
+       }
+
+       /* SHA256 */
+       if(!quiet) {
+               printf("...testing SHA256\n");
+       }
+       if(sha256os(str, len, digestOS)) {
+               printf("***Error on openssl SHA256\n");
+               exit(1);
+       }
+       if(sha256cc(str, len, digestCC)) {
+               printf("***Error on CommonCrypto SHA256\n");
+               exit(1);
+       }
+       if(memcmp(digestOS, digestCC, 32)) {
+               printf("***SHA256 Digest miscompare\n");
+               exit(1);
+       }
+
+       /* SHA384 */
+       if(!quiet) {
+               printf("...testing SHA384\n");
+       }
+       if(sha384os(str, len, digestOS)) {
+               printf("***Error on openssl SHA384\n");
+               exit(1);
+       }
+       if(sha384cc(str, len, digestCC)) {
+               printf("***Error on CommonCrypto SHA384\n");
+               exit(1);
+       }
+       if(memcmp(digestOS, digestCC, 48)) {
+               printf("***SHA384 Digest miscompare\n");
+               exit(1);
+       }
+
+       /* SHA512 */
+       if(!quiet) {
+               printf("...testing SHA512\n");
+       }
+       if(sha512os(str, len, digestOS)) {
+               printf("***Error on openssl SHA512\n");
+               exit(1);
+       }
+       if(sha512cc(str, len, digestCC)) {
+               printf("***Error on CommonCrypto SHA512\n");
+               exit(1);
+       }
+       if(memcmp(digestOS, digestCC, 64)) {
+               printf("***SHA512 Digest miscompare\n");
+               exit(1);
+       }
+
+       if(!quiet) {
+               printf("...success\n");
+       }
+       return 0;
+}