8 #include "sw/device/lib/base/status.h"
10 #include "sw/device/lib/testing/test_framework/check.h"
12 #include "sw/device/silicon_creator/lib/chip_info.h"
13 #include "sw/device/silicon_creator/lib/drivers/hmac.h"
18 OTTF_DEFINE_TEST_CONFIG(.silence_console_prints =
true);
22 kSha256HashSizeInBits = 256,
23 kSha256HashSizeInBytes = kSha256HashSizeInBits / 8,
24 kSha256HashSizeIn32BitWords = kSha256HashSizeInBytes / 4,
41 const size_t kGoldenRomSizeBytes = 32652 -
sizeof(
chip_info_t);
42 const uint32_t kSimDvGoldenRomHash[kSha256HashSizeIn32BitWords] = {
43 0xc16e04d6, 0x2e94b881, 0x0759b405, 0xd0a28cde,
44 0xa8c900f3, 0x57b8c7f6, 0xacc910b0, 0x43000c0a,
46 const uint32_t kFpgaCw310GoldenRomHash[kSha256HashSizeIn32BitWords] = {
47 0xf3508c51, 0xef65a542, 0xc20e55d9, 0xada4c934,
48 0x8015bbca, 0xa863db5a, 0xd1ead827, 0x968d94cb,
50 const uint32_t kSiliconGoldenRomHash[kSha256HashSizeIn32BitWords] = {
51 0x43b60e89, 0xbfa80347, 0xeeceb60a, 0x356bc7f1,
52 0xbd023b8a, 0xe5a4ddfc, 0xf66b45b5, 0x5b2ba0ba,
55 extern const char _rom_chip_info_start[];
66 base_printf(
"ROM Hash: 0x%08x%08x%08x%08x%08x%08x%08x%08x\r\n",
67 rom_hash.digest[7], rom_hash.digest[6], rom_hash.digest[5],
68 rom_hash.digest[4], rom_hash.digest[3], rom_hash.digest[2],
69 rom_hash.digest[1], rom_hash.digest[0]);
71 LOG_INFO(
"rom_chip_info @ %p:", rom_chip_info);
81 TRY_CHECK_ARRAYS_EQ(rom_hash.digest, kSimDvGoldenRomHash,
84 TRY_CHECK_ARRAYS_EQ(rom_hash.digest, kFpgaCw310GoldenRomHash,
87 TRY_CHECK_ARRAYS_EQ(rom_hash.digest, kSiliconGoldenRomHash,
90 LOG_ERROR(
"ROM hash not self-checked for this device type: 0x%x",
98 bool test_main(
void) {
return status_ok(hash_rom()); }