[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 {