hmactest: convert to opaque HMAC_CTX.
authortb <tb@openbsd.org>
Thu, 18 Nov 2021 15:20:02 +0000 (15:20 +0000)
committertb <tb@openbsd.org>
Thu, 18 Nov 2021 15:20:02 +0000 (15:20 +0000)
regress/lib/libcrypto/hmac/hmactest.c

index 1f120da..64ff52c 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: hmactest.c,v 1.4 2018/07/17 17:06:49 tb Exp $ */
+/*     $OpenBSD: hmactest.c,v 1.5 2021/11/18 15:20:02 tb Exp $ */
 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
  * All rights reserved.
  *
@@ -142,7 +142,7 @@ main(int argc, char *argv[])
        char *p;
 #endif
        int err = 0;
-       HMAC_CTX ctx, ctx2;
+       HMAC_CTX *ctx = NULL, *ctx2 = NULL;
        unsigned char buf[EVP_MAX_MD_SIZE];
        unsigned int len;
 
@@ -166,57 +166,60 @@ main(int argc, char *argv[])
 #endif /* OPENSSL_NO_MD5 */
 
 /* test4 */
-       HMAC_CTX_init(&ctx);
-       if (HMAC_Init_ex(&ctx, NULL, 0, NULL, NULL)) {
+       if ((ctx = HMAC_CTX_new()) == NULL) {
+               printf("HMAC_CTX_init failed (test 4)\n");
+               exit(1);
+       }
+       if (HMAC_Init_ex(ctx, NULL, 0, NULL, NULL)) {
                printf("Should fail to initialise HMAC with empty MD and key (test 4)\n");
                err++;
                goto test5;
        }
-       if (HMAC_Update(&ctx, test[4].data, test[4].data_len)) {
+       if (HMAC_Update(ctx, test[4].data, test[4].data_len)) {
                printf("Should fail HMAC_Update with ctx not set up (test 4)\n");
                err++;
                goto test5;
        }
-       if (HMAC_Init_ex(&ctx, NULL, 0, EVP_sha1(), NULL)) {
+       if (HMAC_Init_ex(ctx, NULL, 0, EVP_sha1(), NULL)) {
                printf("Should fail to initialise HMAC with empty key (test 4)\n");
                err++;
                goto test5;
        }
-       if (HMAC_Update(&ctx, test[4].data, test[4].data_len)) {
+       if (HMAC_Update(ctx, test[4].data, test[4].data_len)) {
                printf("Should fail HMAC_Update with ctx not set up (test 4)\n");
                err++;
                goto test5;
        }
        printf("test 4 ok\n");
  test5:
-       HMAC_CTX_cleanup(&ctx);
-       HMAC_CTX_init(&ctx);
-       if (HMAC_Init_ex(&ctx, test[4].key, test[4].key_len, NULL, NULL)) {
+       HMAC_CTX_cleanup(ctx);
+       HMAC_CTX_init(ctx);
+       if (HMAC_Init_ex(ctx, test[4].key, test[4].key_len, NULL, NULL)) {
                printf("Should fail to initialise HMAC with empty MD (test 5)\n");
                err++;
                goto test6;
        }
-       if (HMAC_Update(&ctx, test[4].data, test[4].data_len)) {
+       if (HMAC_Update(ctx, test[4].data, test[4].data_len)) {
                printf("Should fail HMAC_Update with ctx not set up (test 5)\n");
                err++;
                goto test6;
        }
-       if (HMAC_Init_ex(&ctx, test[4].key, -1, EVP_sha1(), NULL)) {
+       if (HMAC_Init_ex(ctx, test[4].key, -1, EVP_sha1(), NULL)) {
                printf("Should fail to initialise HMAC with invalid key len(test 5)\n");
                err++;
                goto test6;
        }
-       if (!HMAC_Init_ex(&ctx, test[4].key, test[4].key_len, EVP_sha1(), NULL)) {
+       if (!HMAC_Init_ex(ctx, test[4].key, test[4].key_len, EVP_sha1(), NULL)) {
                printf("Failed to initialise HMAC (test 5)\n");
                err++;
                goto test6;
        }
-       if (!HMAC_Update(&ctx, test[4].data, test[4].data_len)) {
+       if (!HMAC_Update(ctx, test[4].data, test[4].data_len)) {
                printf("Error updating HMAC with data (test 5)\n");
                err++;
                goto test6;
        }
-       if (!HMAC_Final(&ctx, buf, &len)) {
+       if (!HMAC_Final(ctx, buf, &len)) {
                printf("Error finalising data (test 5)\n");
                err++;
                goto test6;
@@ -228,22 +231,22 @@ main(int argc, char *argv[])
                err++;
                goto test6;
        }
-       if (HMAC_Init_ex(&ctx, NULL, 0, EVP_sha256(), NULL)) {
+       if (HMAC_Init_ex(ctx, NULL, 0, EVP_sha256(), NULL)) {
                printf("Should disallow changing MD without a new key (test 5)\n");
                err++;
                goto test6;
        }
-       if (!HMAC_Init_ex(&ctx, test[4].key, test[4].key_len, EVP_sha256(), NULL)) {
+       if (!HMAC_Init_ex(ctx, test[4].key, test[4].key_len, EVP_sha256(), NULL)) {
                printf("Failed to reinitialise HMAC (test 5)\n");
                err++;
                goto test6;
        }
-       if (!HMAC_Update(&ctx, test[5].data, test[5].data_len)) {
+       if (!HMAC_Update(ctx, test[5].data, test[5].data_len)) {
                printf("Error updating HMAC with data (sha256) (test 5)\n");
                err++;
                goto test6;
        }
-       if (!HMAC_Final(&ctx, buf, &len)) {
+       if (!HMAC_Final(ctx, buf, &len)) {
                printf("Error finalising data (sha256) (test 5)\n");
                err++;
                goto test6;
@@ -255,17 +258,17 @@ main(int argc, char *argv[])
                err++;
                goto test6;
        }
-       if (!HMAC_Init_ex(&ctx, test[6].key, test[6].key_len, NULL, NULL)) {
+       if (!HMAC_Init_ex(ctx, test[6].key, test[6].key_len, NULL, NULL)) {
                printf("Failed to reinitialise HMAC with key (test 5)\n");
                err++;
                goto test6;
        }
-       if (!HMAC_Update(&ctx, test[6].data, test[6].data_len)) {
+       if (!HMAC_Update(ctx, test[6].data, test[6].data_len)) {
                printf("Error updating HMAC with data (new key) (test 5)\n");
                err++;
                goto test6;
        }
-       if (!HMAC_Final(&ctx, buf, &len)) {
+       if (!HMAC_Final(ctx, buf, &len)) {
                printf("Error finalising data (new key) (test 5)\n");
                err++;
                goto test6;
@@ -279,24 +282,28 @@ main(int argc, char *argv[])
                printf("test 5 ok\n");
        }
  test6:
-       HMAC_CTX_cleanup(&ctx);
-       HMAC_CTX_init(&ctx);
-       if (!HMAC_Init_ex(&ctx, test[7].key, test[7].key_len, EVP_sha1(), NULL)) {
+       HMAC_CTX_cleanup(ctx);
+       HMAC_CTX_init(ctx);
+       if (!HMAC_Init_ex(ctx, test[7].key, test[7].key_len, EVP_sha1(), NULL)) {
                printf("Failed to initialise HMAC (test 6)\n");
                err++;
                goto end;
        }
-       if (!HMAC_Update(&ctx, test[7].data, test[7].data_len)) {
+       if (!HMAC_Update(ctx, test[7].data, test[7].data_len)) {
                printf("Error updating HMAC with data (test 6)\n");
                err++;
                goto end;
        }
-       if (!HMAC_CTX_copy(&ctx2, &ctx)) {
+       if ((ctx2 = HMAC_CTX_new()) == NULL) {
+               printf("HMAC_CTX_new failed (test 6)\n");
+               exit(1);
+       }
+       if (!HMAC_CTX_copy(ctx2, ctx)) {
                printf("Failed to copy HMAC_CTX (test 6)\n");
                err++;
                goto end;
        }
-       if (!HMAC_Final(&ctx2, buf, &len)) {
+       if (!HMAC_Final(ctx2, buf, &len)) {
                printf("Error finalising data (test 6)\n");
                err++;
                goto end;
@@ -310,7 +317,8 @@ main(int argc, char *argv[])
                printf("test 6 ok\n");
        }
 end:
-       HMAC_CTX_cleanup(&ctx);
+       HMAC_CTX_free(ctx);
+       HMAC_CTX_free(ctx2);
        exit(err);
        return(0);
 }