From 0933a6d58327d3e5f97ae5aa3250ec3e52015faa Mon Sep 17 00:00:00 2001
From: tholenst <tholenst@google.com>
Date: Wed, 24 Jul 2019 10:04:07 -0700
Subject: [PATCH] AES CMAC: Copy the tag size into the key.

Previously this was forgotten. I noticed it when the the benchmarks failed. We add this here.

PiperOrigin-RevId: 259762823
---
 cc/mac/aes_cmac_key_manager.cc      | 1 +
 cc/mac/aes_cmac_key_manager_test.cc | 3 +++
 2 files changed, 4 insertions(+)

diff --git a/cc/mac/aes_cmac_key_manager.cc b/cc/mac/aes_cmac_key_manager.cc
index f671c7647..9e3e81d16 100644
--- a/cc/mac/aes_cmac_key_manager.cc
+++ b/cc/mac/aes_cmac_key_manager.cc
@@ -71,6 +71,7 @@ StatusOr<std::unique_ptr<AesCmacKey>> AesCmacKeyFactory::NewKeyFromFormat(
   cmac_key->set_version(AesCmacKeyManager::kVersion);
   cmac_key->set_key_value(
       subtle::Random::GetRandomBytes(cmac_key_format.key_size()));
+  *cmac_key->mutable_params() = cmac_key_format.params();
   return absl::implicit_cast<StatusOr<std::unique_ptr<AesCmacKey>>>(
       std::move(cmac_key));
 }
diff --git a/cc/mac/aes_cmac_key_manager_test.cc b/cc/mac/aes_cmac_key_manager_test.cc
index a51f6c2d6..75135dc19 100644
--- a/cc/mac/aes_cmac_key_manager_test.cc
+++ b/cc/mac/aes_cmac_key_manager_test.cc
@@ -213,6 +213,7 @@ TEST_F(AesCmacKeyManagerTest, testNewKeyBasic) {
     std::unique_ptr<AesCmacKey> cmac_key(
         static_cast<AesCmacKey*>(key.release()));
     EXPECT_EQ(0, cmac_key->version());
+    EXPECT_EQ(16, cmac_key->params().tag_size());
     EXPECT_EQ(key_format.key_size(), cmac_key->key_value().size());
   }
 
@@ -224,6 +225,7 @@ TEST_F(AesCmacKeyManagerTest, testNewKeyBasic) {
     std::unique_ptr<AesCmacKey> cmac_key(
         static_cast<AesCmacKey*>(key.release()));
     EXPECT_EQ(0, cmac_key->version());
+    EXPECT_EQ(16, cmac_key->params().tag_size());
     EXPECT_EQ(key_format.key_size(), cmac_key->key_value().size());
   }
 
@@ -236,6 +238,7 @@ TEST_F(AesCmacKeyManagerTest, testNewKeyBasic) {
     AesCmacKey cmac_key;
     EXPECT_TRUE(cmac_key.ParseFromString(key_data->value()));
     EXPECT_EQ(0, cmac_key.version());
+    EXPECT_EQ(16, cmac_key.params().tag_size());
     EXPECT_EQ(key_format.key_size(), cmac_key.key_value().size());
   }
 }
-- 
GitLab