Add AES-CCM to test_fips.cc.

Change-Id: Ic6283bf9feacdf5a15435acccacdbb6c864d6a3f
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/80769
Reviewed-by: Nick Harper <nharper@chromium.org>
Auto-Submit: Adam Langley <agl@google.com>
Commit-Queue: Adam Langley <agl@google.com>
diff --git a/util/fipstools/test_fips.cc b/util/fipstools/test_fips.cc
index 60a642d..ba6f943 100644
--- a/util/fipstools/test_fips.cc
+++ b/util/fipstools/test_fips.cc
@@ -121,7 +121,7 @@
   printf("About to do AES-KWP");
   size_t out_len;
   if (!AES_wrap_key_padded(&aes_key, output, &out_len, sizeof(output),
-                            kPlaintext, 16)) {
+                           kPlaintext, 16)) {
     printf("AES_wrap_key_padded failed\n");
     return 0;
   }
@@ -152,36 +152,72 @@
 
   uint8_t nonce[EVP_AEAD_MAX_NONCE_LENGTH];
   OPENSSL_memset(nonce, 0, sizeof(nonce));
-  bssl::ScopedEVP_AEAD_CTX aead_ctx;
-  if (!EVP_AEAD_CTX_init(aead_ctx.get(), EVP_aead_aes_128_gcm(), kAESKey,
-                         sizeof(kAESKey), 0, NULL)) {
-    printf("EVP_AEAD_CTX_init failed\n");
-    return 0;
+
+  /* AES-CCM */
+  {
+    bssl::ScopedEVP_AEAD_CTX aead_ctx;
+    if (!EVP_AEAD_CTX_init(aead_ctx.get(), EVP_aead_aes_128_ccm_bluetooth(),
+                           kAESKey, sizeof(kAESKey), 0, NULL)) {
+      printf("EVP_AEAD_CTX_init failed\n");
+      return 0;
+    }
+    printf("About to AES-CCM seal ");
+    hexdump(kPlaintext, sizeof(kPlaintext));
+    if (!EVP_AEAD_CTX_seal(
+            aead_ctx.get(), output, &out_len, sizeof(output), nonce,
+            EVP_AEAD_nonce_length(EVP_aead_aes_128_ccm_bluetooth()), kPlaintext,
+            sizeof(kPlaintext), NULL, 0)) {
+      printf("AES-CCM encrypt failed\n");
+      return 0;
+    }
+    printf("  got ");
+    hexdump(output, out_len);
+
+    /* AES-CCM Decryption */
+    printf("About to AES-CCM open ");
+    hexdump(output, out_len);
+    if (!EVP_AEAD_CTX_open(
+            aead_ctx.get(), output, &out_len, sizeof(output), nonce,
+            EVP_AEAD_nonce_length(EVP_aead_aes_128_ccm_bluetooth()), output,
+            out_len, NULL, 0)) {
+      printf("AES-GCM decrypt failed\n");
+      return 0;
+    }
+    printf("  got ");
+    hexdump(output, out_len);
   }
 
   /* AES-GCM Encryption */
-  printf("About to AES-GCM seal ");
-  hexdump(output, sizeof(kPlaintext));
-  if (!EVP_AEAD_CTX_seal(aead_ctx.get(), output, &out_len, sizeof(output),
-                         nonce, EVP_AEAD_nonce_length(EVP_aead_aes_128_gcm()),
-                         kPlaintext, sizeof(kPlaintext), NULL, 0)) {
-    printf("AES-GCM encrypt failed\n");
-    return 0;
-  }
-  printf("  got ");
-  hexdump(output, out_len);
+  {
+    bssl::ScopedEVP_AEAD_CTX aead_ctx;
+    if (!EVP_AEAD_CTX_init(aead_ctx.get(), EVP_aead_aes_128_gcm(), kAESKey,
+                           sizeof(kAESKey), 0, NULL)) {
+      printf("EVP_AEAD_CTX_init failed\n");
+      return 0;
+    }
+    printf("About to AES-GCM seal ");
+    hexdump(kPlaintext, sizeof(kPlaintext));
+    if (!EVP_AEAD_CTX_seal(aead_ctx.get(), output, &out_len, sizeof(output),
+                           nonce, EVP_AEAD_nonce_length(EVP_aead_aes_128_gcm()),
+                           kPlaintext, sizeof(kPlaintext), NULL, 0)) {
+      printf("AES-GCM encrypt failed\n");
+      return 0;
+    }
+    printf("  got ");
+    hexdump(output, out_len);
 
-  /* AES-GCM Decryption */
-  printf("About to AES-GCM open ");
-  hexdump(output, out_len);
-  if (!EVP_AEAD_CTX_open(aead_ctx.get(), output, &out_len, sizeof(output),
-                         nonce, EVP_AEAD_nonce_length(EVP_aead_aes_128_gcm()),
-                         output, out_len, NULL, 0)) {
-    printf("AES-GCM decrypt failed\n");
-    return 0;
+    /* AES-GCM Decryption */
+    printf("About to AES-GCM open ");
+    hexdump(output, out_len);
+    if (!EVP_AEAD_CTX_open(aead_ctx.get(), output, &out_len, sizeof(output),
+                           nonce, EVP_AEAD_nonce_length(EVP_aead_aes_128_gcm()),
+                           output, out_len, NULL, 0)) {
+      printf("AES-GCM decrypt failed\n");
+      return 0;
+    }
+    printf("  got ");
+    hexdump(output, out_len);
   }
-  printf("  got ");
-  hexdump(output, out_len);
 
   /* SHA-1 */
   printf("About to SHA-1 hash ");