[sw/silicon_creator] Move sigverify.c and unit tests to lib

Signed-off-by: Alphan Ulusoy <alphan@google.com>
diff --git a/sw/device/silicon_creator/lib/meson.build b/sw/device/silicon_creator/lib/meson.build
index c451f91..48a0266 100644
--- a/sw/device/silicon_creator/lib/meson.build
+++ b/sw/device/silicon_creator/lib/meson.build
@@ -42,6 +42,7 @@
 # Defined separately for sigverify_keys unit tests.
 sw_silicon_creator_lib_sigverify_sources_for_boot_stage_tests = files([
   'sigverify_mod_exp_ibex.c',
+  'sigverify.c',
 ])
 
 # Signature verification.
@@ -50,6 +51,7 @@
     'sw_silicon_creator_lib_sigverify',
     sources: [
       'sigverify_mod_exp_ibex.c',
+      'sigverify.c',
     ],
     dependencies: [
       sw_silicon_creator_lib_driver_hmac,
@@ -96,3 +98,17 @@
   ),
   suite: 'mask_rom',
 )
+
+test('sw_silicon_creator_lib_sigverify_unittest', executable(
+    'sw_silicon_creator_lib_sigverify_unittest',
+    sources: [
+      'sigverify_unittest.cc',
+      'sigverify.c',
+    ],
+    dependencies: [
+      sw_vendor_gtest,
+    ],
+    native: true,
+  ),
+  suite: 'mask_rom',
+)
diff --git a/sw/device/silicon_creator/mask_rom/sigverify.c b/sw/device/silicon_creator/lib/sigverify.c
similarity index 98%
rename from sw/device/silicon_creator/mask_rom/sigverify.c
rename to sw/device/silicon_creator/lib/sigverify.c
index 1bb0b56..ec0f7a6 100644
--- a/sw/device/silicon_creator/mask_rom/sigverify.c
+++ b/sw/device/silicon_creator/lib/sigverify.c
@@ -2,7 +2,7 @@
 // Licensed under the Apache License, Version 2.0, see LICENSE for details.
 // SPDX-License-Identifier: Apache-2.0
 
-#include "sw/device/silicon_creator/mask_rom/sigverify.h"
+#include "sw/device/silicon_creator/lib/sigverify.h"
 
 #include "sw/device/lib/base/memory.h"
 #include "sw/device/lib/base/mmio.h"
diff --git a/sw/device/silicon_creator/mask_rom/sigverify.h b/sw/device/silicon_creator/lib/sigverify.h
similarity index 87%
rename from sw/device/silicon_creator/mask_rom/sigverify.h
rename to sw/device/silicon_creator/lib/sigverify.h
index f73e7b5..0948bde 100644
--- a/sw/device/silicon_creator/mask_rom/sigverify.h
+++ b/sw/device/silicon_creator/lib/sigverify.h
@@ -2,8 +2,8 @@
 // Licensed under the Apache License, Version 2.0, see LICENSE for details.
 // SPDX-License-Identifier: Apache-2.0
 
-#ifndef OPENTITAN_SW_DEVICE_SILICON_CREATOR_MASK_ROM_SIGVERIFY_H_
-#define OPENTITAN_SW_DEVICE_SILICON_CREATOR_MASK_ROM_SIGVERIFY_H_
+#ifndef OPENTITAN_SW_DEVICE_SILICON_CREATOR_LIB_SIGVERIFY_H_
+#define OPENTITAN_SW_DEVICE_SILICON_CREATOR_LIB_SIGVERIFY_H_
 
 #include <stddef.h>
 #include <stdint.h>
@@ -47,4 +47,4 @@
 }  // extern "C"
 #endif  // __cplusplus
 
-#endif  // OPENTITAN_SW_DEVICE_SILICON_CREATOR_MASK_ROM_SIGVERIFY_H_
+#endif  // OPENTITAN_SW_DEVICE_SILICON_CREATOR_LIB_SIGVERIFY_H_
diff --git a/sw/device/silicon_creator/lib/sigverify_mod_exp_ibex_unittest.cc b/sw/device/silicon_creator/lib/sigverify_mod_exp_ibex_unittest.cc
index 152e049..be93cf1 100644
--- a/sw/device/silicon_creator/lib/sigverify_mod_exp_ibex_unittest.cc
+++ b/sw/device/silicon_creator/lib/sigverify_mod_exp_ibex_unittest.cc
@@ -6,8 +6,8 @@
 
 #include "gmock/gmock.h"
 #include "gtest/gtest.h"
+#include "sw/device/silicon_creator/lib/sigverify.h"
 #include "sw/device/silicon_creator/lib/sigverify_mod_exp.h"
-#include "sw/device/silicon_creator/mask_rom/sigverify.h"
 
 namespace sigverify_mod_exp_ibex_unittest {
 namespace {
diff --git a/sw/device/silicon_creator/mask_rom/sigverify_unittest.cc b/sw/device/silicon_creator/lib/sigverify_unittest.cc
similarity index 88%
rename from sw/device/silicon_creator/mask_rom/sigverify_unittest.cc
rename to sw/device/silicon_creator/lib/sigverify_unittest.cc
index 7f24b4b..19280cf 100644
--- a/sw/device/silicon_creator/mask_rom/sigverify_unittest.cc
+++ b/sw/device/silicon_creator/lib/sigverify_unittest.cc
@@ -2,13 +2,12 @@
 // Licensed under the Apache License, Version 2.0, see LICENSE for details.
 // SPDX-License-Identifier: Apache-2.0
 
-#include "sw/device/silicon_creator/mask_rom/sigverify.h"
+#include "sw/device/silicon_creator/lib/sigverify.h"
 
 #include <cstring>
 
 #include "gmock/gmock.h"
 #include "gtest/gtest.h"
-#include "sigverify_keys.h"
 #include "sw/device/silicon_creator/lib/drivers/mock_hmac.h"
 #include "sw/device/silicon_creator/lib/mock_sigverify_mod_exp.h"
 
@@ -88,6 +87,8 @@
  protected:
   mask_rom_test::MockSigverifyModExp sigverify_mod_exp_;
   mask_rom_test::MockHmac hmac_;
+  // The content of this key is not significant since we use mocks.
+  sigverify_rsa_key_t key_{};
 };
 
 TEST_F(SigVerifyTest, GoodSignature) {
@@ -96,20 +97,17 @@
       .WillOnce(Return(kErrorOk));
   EXPECT_CALL(hmac_, sha256_final(NotNull()))
       .WillOnce(DoAll(SetArgPointee<0>(kTestDigest), Return(kErrorOk)));
-  EXPECT_CALL(sigverify_mod_exp_,
-              ibex(&kSigVerifyRsaKeys[0], &kSignature, NotNull()))
+  EXPECT_CALL(sigverify_mod_exp_, ibex(&key_, &kSignature, NotNull()))
       .WillOnce(DoAll(SetArgPointee<2>(kEncMsg), Return(kErrorOk)));
 
-  // FIXME: Parameterize with key ids.
   EXPECT_EQ(sigverify_rsa_verify(kSignedRegion.data(), sizeof(kSignedRegion),
-                                 &kSignature, &kSigVerifyRsaKeys[0]),
+                                 &kSignature, &key_),
             kErrorOk);
 }
 
 TEST_F(SigVerifyTest, BadSignature) {
   // Corrupt the words of the encoded message by flipping their bits and check
   // that signature verification fails.
-  // FIXME: Make this a parameterized test.
   for (size_t i = 0; i < kSigVerifyRsaNumWords; ++i) {
     auto bad_enc_msg = kEncMsg;
     bad_enc_msg.data[i] = ~bad_enc_msg.data[i];
@@ -120,13 +118,11 @@
         .WillOnce(Return(kErrorOk));
     EXPECT_CALL(hmac_, sha256_final(NotNull()))
         .WillOnce(DoAll(SetArgPointee<0>(kTestDigest), Return(kErrorOk)));
-    EXPECT_CALL(sigverify_mod_exp_,
-                ibex(&kSigVerifyRsaKeys[0], &kSignature, NotNull()))
+    EXPECT_CALL(sigverify_mod_exp_, ibex(&key_, &kSignature, NotNull()))
         .WillOnce(DoAll(SetArgPointee<2>(bad_enc_msg), Return(kErrorOk)));
 
-    // FIXME: Parameterize with key ids.
     EXPECT_EQ(sigverify_rsa_verify(kSignedRegion.data(), sizeof(kSignedRegion),
-                                   &kSignature, &kSigVerifyRsaKeys[0]),
+                                   &kSignature, &key_),
               kErrorSigverifyBadEncodedMessage);
   }
 }
diff --git a/sw/device/silicon_creator/mask_rom/mask_rom.c b/sw/device/silicon_creator/mask_rom/mask_rom.c
index e41eb43..7bbd693 100644
--- a/sw/device/silicon_creator/mask_rom/mask_rom.c
+++ b/sw/device/silicon_creator/mask_rom/mask_rom.c
@@ -16,8 +16,8 @@
 #include "sw/device/lib/runtime/print.h"
 #include "sw/device/silicon_creator/lib/drivers/keymgr.h"
 #include "sw/device/silicon_creator/lib/drivers/uart.h"
+#include "sw/device/silicon_creator/lib/sigverify.h"
 #include "sw/device/silicon_creator/mask_rom/romextimage.h"
-#include "sw/device/silicon_creator/mask_rom/sigverify.h"
 #include "sw/device/silicon_creator/mask_rom/sigverify_keys.h"
 
 #include "hw/top_earlgrey/sw/autogen/top_earlgrey.h"
diff --git a/sw/device/silicon_creator/mask_rom/meson.build b/sw/device/silicon_creator/mask_rom/meson.build
index 4979d12..e927bdb 100644
--- a/sw/device/silicon_creator/mask_rom/meson.build
+++ b/sw/device/silicon_creator/mask_rom/meson.build
@@ -19,7 +19,6 @@
     'sw_silicon_creator_mask_rom_sigverify',
     sources: [
       'sigverify_keys.c',
-      'sigverify.c',
     ],
     dependencies: [
       sw_silicon_creator_lib_sigverify,
@@ -136,21 +135,6 @@
   )
 endforeach
 
-test('sw_silicon_creator_mask_rom_sigverify_unittest', executable(
-    'sw_silicon_creator_mask_rom_sigverify_unittest',
-    sources: [
-      'sigverify_unittest.cc',
-      'sigverify.c',
-      'sigverify_keys.c',
-    ],
-    dependencies: [
-      sw_vendor_gtest,
-    ],
-    native: true,
-  ),
-  suite: 'mask_rom',
-)
-
 test('sw_silicon_creator_mask_rom_romextimage_unittest', executable(
     'sw_silicon_creator_mask_rom_romextimage_unittest',
     sources: [
@@ -172,7 +156,6 @@
     sources: [
       'sigverify_keys.c',
       'sigverify_keys_unittest.cc',
-      'sigverify.c',
     ] + sw_silicon_creator_lib_sigverify_sources_for_boot_stage_tests,
     dependencies: [
       sw_vendor_gtest,
diff --git a/sw/device/silicon_creator/mask_rom/sigverify_keys.c b/sw/device/silicon_creator/mask_rom/sigverify_keys.c
index fc57a17..726703b 100644
--- a/sw/device/silicon_creator/mask_rom/sigverify_keys.c
+++ b/sw/device/silicon_creator/mask_rom/sigverify_keys.c
@@ -6,7 +6,7 @@
 
 #include <stddef.h>
 
-#include "sw/device/silicon_creator/mask_rom/sigverify.h"
+#include "sw/device/silicon_creator/lib/sigverify.h"
 
 /**
  * Public keys for signature verification.
diff --git a/sw/device/silicon_creator/mask_rom/sigverify_keys_unittest.cc b/sw/device/silicon_creator/mask_rom/sigverify_keys_unittest.cc
index 00076c0..15d0c85 100644
--- a/sw/device/silicon_creator/mask_rom/sigverify_keys_unittest.cc
+++ b/sw/device/silicon_creator/mask_rom/sigverify_keys_unittest.cc
@@ -9,8 +9,8 @@
 #include "gmock/gmock.h"
 #include "gtest/gtest.h"
 #include "sw/device/silicon_creator/lib/drivers/mock_hmac.h"
+#include "sw/device/silicon_creator/lib/sigverify.h"
 #include "sw/device/silicon_creator/lib/sigverify_mod_exp.h"
-#include "sw/device/silicon_creator/mask_rom/sigverify.h"
 
 namespace sigverify_keys_unittest {
 namespace {