(一)创建公钥和私钥的示例

        此工程提供了两个文件,rsa_private.txtrsa_public.txt。这些文件包含一个示例私钥和公钥,它们仅作为占位符提供,以帮助您使生成系统正常工作。在投入生产之前,应该将它们替换为您自己的文件。

        本节介绍如何生成一组公钥和私钥,将它们格式化为“C”格式,以及使用新密钥更新源文件。
此外,本应用程序说明还描述了带有示例驱动程序库(SDL)的示例代码。本应用程序说明中的代码片段是SDL的一部分。请参阅SDL的参考资料。请参阅sdl_additional_code_examples中16_AN228680_Scure_configuration文件夹的secure configuration.pptx以进行安全配置设置。
此示例代码应用于GHS MULTI环境的CYT2B7系列MCU。

Additional tools required

1. OpenSSL v1.0.2 or later
2. Python 3 (Required for one of the provided scripts that is used to format the public key.)
3. SDL 7.5 or later

        有几种方法可以生成RSA私钥和公钥。在以下方法中,您需要在计算机上安装OpenSSL/Python。OpenSSL的这些源代码或二进制文件可以从互联网上的几个源代码下载。

Scripts

        该项目提供了两个脚本,用于将OpenSSL的输出转换为与C和Secure Image用于存储公钥的结构兼容的格式。这些脚本在以下路径中可用:

<user>\tviibe1m\04_Util\Scripts\Key_2K, Key_3K or Key_4K
<user>: Sample project stored folder

        批处理脚本rsa_keygen.bat调用OpenSSL函数。因此,必须在您的计算机上安装OpenSSL。批处理文件创建一个名为“keys_generated”的目录。将创建两个文件,其中包含使用OpenSSL生成的私钥和公钥。“rsa_private.txt”作为私钥,“rsa_public.txt”作为公钥。
        接下来,批处理文件将调用Python脚本“rsa\o_c.py”。该脚本将生成的公钥文件中的数据格式化为与c和Cypress公钥格式兼容。输出与公钥和私钥文件一起放置在keys_generated目录中的文件rsa\o_c_generated.txt中。
下面显示了用于生成rsa-2048私钥和公钥的rsa_keygen.bat

set OUT_DIR="%~dp0\keys_generated"
set PRIV_NAME=rsa_private_generated.txt
set PUB_NAME=rsa_public_generated.txt
set PRIV_RNAME=rsa_private.txt
set PUB_RNAME=rsa_public.txt
set MOD_NAME=rsa_to_c_generated.txt
if not exist %OUT_DIR% mkdir %OUT_DIR%
:: Generate the RSA-2K public and private keys
openssl genrsa -out %OUT_DIR%\%PRIV_NAME% 2048
openssl rsa -in %OUT_DIR%\%PRIV_NAME% -outform PEM -pubout -out %OUT_DIR%\%PUB_NAME%
copy %OUT_DIR%\%PRIV_NAME% %OUT_DIR%\%PRIV_RNAME%
copy %OUT_DIR%\%PUB_NAME% %OUT_DIR%\%PUB_RNAME%
:: Create C-code ready public key
python %~dp0\rsa_to_c.py %OUT_DIR%\%PUB_NAME% > %OUT_DIR%\%MOD_NAME%

        如果为RSA-3072生成私钥和公钥,请将上面bat文件中的2048(line 9)中的文本更改为3072。如果是RSA-4096,请将文本更改为4096。

9.3 运行脚本
 

        批处理文件rsa_keygen.bat可以从命令行界面调用,也可以在Windows 7或10环境中双击(a)调用。脚本运行后,验证keys_generated文件夹(b)中是否已生成以下文件。

• rsa_private.txt (Private RSA key)
• rsa_public.txt (Public RSA key)
• rsa_to_c_generated.txt (Public key in C format)

 1、首先使用 openssl 生成一个 2048 位的密钥文件rsa_private_generated.txt (私钥),打开rsa_private_generated.txt 文件,私钥文件(RSA-2048)示例内容如下(BEGIN 和END 之间的为密钥):

-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA1evv29SIGUMM/2JHIhZPKVflDKB0iIu87V4zZ6WTyIh9BAJZ
qej3LUSD02JwvoejoVJZrkdUAA1jzNw5mGmbelQyMfBwal78GhYXX2BiKJfmlwob
07NSIQYfmAZGfcJzTKj/DAUK9bDNZvNhwUc8+j8zcuICAVXqzy25qwmSAXwqQuaf
wplzD3zrevOs7N9p973116F1o5AH+uacmVGb1FF7xtrPYH7P9QEALLWy4TIm1bPw
aUVKfex+PX2wdtU6YKl73HOUHXV8IAhGP8rX0H5YA6+uWv8M4RhbcjGFx764MRoL
4rsCpwhaFZtYLdfNq6uLxItF8TwUWZIGOuZY1QIDAQABAoIBAQCyaunOq2An0aiR
h+JUJ882aDx9X4ZSLFoSj7LIC21Kn6vFIECwWcFuW+qm7z+haXesIQbzOEJzGLfY
MQVIfSxTxs1moWbhEP+qsiokPjsgKDEGYEP9OV6SdIz9Op6oXPnVQk4WNE6DxEZM
S0mI7mWJQhUjCCUsAACrczOb14uS9/kUX/X79d3TRU83l4nkqvdIHmmT9UCGZynz
SBB/v7oO6txje7rQpntAlDUqD6fiveCq76kPoXQPuuHlGk27qpEUR/i5aUA/zq8D
8ig2VnDsJU8kHaDBU92y/KM550SRI6dk/NF/32TiC0An2MnyqUpvCGAV2m/ndFNp
OiJG3gUBAoGBAPk9uDcd/UdT78udQ2ttJ5qkFAR42h/G+EAQQ5tRwy7gLRabdTPq
pvdJkBTz+HYAo3sIJEGqXUEmKbNk1TdP5ZgbcameMYTXACvuzUayZ9sfGqrHmS+Q
riw6zqko4ltPQpo2qbmjz8L+5RM9NAJ9yOr7zvK2GNF4+zoVVdRxfWVRAoGBANu5
BdHkFN2WexJt8jFLA+hXSlENZ1cUvXjY/6VHGw2fbDl9Vr2N7dJhJQTuytReJEiV
fSeaHqqP38j0SjDGAUcdvZiS0GSMIo1PGw5ZjldMEMNthfVc1OG901froKp6ZQjJ
gSuTWU6suhzPe1pa5aDMSWi2WRmB4aumK1FGHupFAoGAbgPQTIPwSIvETRwdpk2I
Lbo/G7o8jcpFygFj1itA/G/3dwMnuMLa8EyITLdj9LJTdvshBdstTpSJ06Wud7vM
nFeA1F3/faNpb/r4oTwem5ofK0LvWw+B0gQjNIfXYnaZ73gxcr/b9TaN5vAdBPyA
szhzIK9ARTYhroG8YQm3UAECgYAMqbglJZDySFbldAKuRpV+EXHOBAi9owtcaJ0r
KFLt0Q9KrOeP2xsmscSRaTW1UYujx0HEQ4Sa7dnG2hVghDjUoWko3uU1tkHThQiZ
Jh4m99JLgQdkYao/LFJ+0aybxpwGCp7wJPjTqO689FQ2m+B6COv+JewypSKdYuFC
ONlVRQKBgQDfC2AcKSr8z/Ky0XiBWvlH8s1pdZQT1bjY7fpgNuJAbG2rTdTRVozB
2RYWTUTw257dL/Pq9hHIi8al83mawKOPzc1tfeiVbNRPtU7DwP2lzB4ml9UvvRJa
c1lnmciiiHj9lCTEPw3O8OsQA0Q+M3oMoe9P18mJLn6jtH0woOqWgw==
-----END RSA PRIVATE KEY-----

2. 然后从 rsa_private_generated.txt密钥文件中生成公钥 rsa_public_generated.txt(格式为pem base64编码

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1evv29SIGUMM/2JHIhZP
KVflDKB0iIu87V4zZ6WTyIh9BAJZqej3LUSD02JwvoejoVJZrkdUAA1jzNw5mGmb
elQyMfBwal78GhYXX2BiKJfmlwob07NSIQYfmAZGfcJzTKj/DAUK9bDNZvNhwUc8
+j8zcuICAVXqzy25qwmSAXwqQuafwplzD3zrevOs7N9p973116F1o5AH+uacmVGb
1FF7xtrPYH7P9QEALLWy4TIm1bPwaUVKfex+PX2wdtU6YKl73HOUHXV8IAhGP8rX
0H5YA6+uWv8M4RhbcjGFx764MRoL4rsCpwhaFZtYLdfNq6uLxItF8TwUWZIGOuZY
1QIDAQAB
-----END PUBLIC KEY-----

3、python脚本中会执行如下语句解析获取公钥

    try:
        # build openssl command line
        cmd_line = ['openssl', 'rsa', '-text', '-pubin', '-in',
                  sys.argv[1],
                  '-noout']
        output, error = subprocess.Popen(
            cmd_line, universal_newlines=True,
            stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()

sys.argv[1]为rsa_public_generated.txt输入文件

cmd_line意思是解析公钥内容,不输出公钥文本

9.4安装公钥

        最后,将生成的rsa_to_c_generated.txt文件中的代码复制到main_cm0plus.c源文件中,更新Secure Image中的公钥的,该文件是Secure Image项目的一部分。此文件更新后的示例如下所示。生成的密钥数据中的替换代码如下所示。以下是RSA-2048的示例:

/** Public key in SFlash */
CY_SECTION(".cy_SFlash_public_key") __USED const cy_si_stc_public_key_t cy_publicKey =
{
    .objSize = sizeof(cy_si_stc_public_key_t),
    .signatureScheme = 0UL,
    .publicKeyStruct =
    {
        .moduloAddr = CY_SI_PUBLIC_KEY + offsetof(cy_si_stc_public_key_t, moduloData),
        .moduloSize = CY_SI_PUBLIC_KEY_SIZEOF_BYTE * CY_SI_PUBLIC_KEY_MODULOLENGTH,
        .expAddr = CY_SI_PUBLIC_KEY + offsetof(cy_si_stc_public_key_t, expData),
        .expSize = CY_SI_PUBLIC_KEY_SIZEOF_BYTE * CY_SI_PUBLIC_KEY_EXPLENGTH,
        .barrettAddr = CY_SI_PUBLIC_KEY + offsetof(cy_si_stc_public_key_t, barrettData),
        .inverseModuloAddr = CY_SI_PUBLIC_KEY + offsetof(cy_si_stc_public_key_t,                 
                                                        inverseModuloData),
        .rBarAddr = CY_SI_PUBLIC_KEY + offsetof(cy_si_stc_public_key_t, rBarData),
    },
    .moduloData =
    {
        0x39u, 0xAAu, 0x09u, 0x31u, 0x9Cu, 0x10u, 0x98u, 0x1Eu,
        0x2Bu, 0x32u, 0x5Cu, 0x3Du, 0x72u, 0x5Au, 0xFFu, 0x47u,
        0x26u, 0x18u, 0x63u, 0x86u, 0x65u, 0x3Fu, 0x3Bu, 0x57u,
        0x0Fu, 0xA6u, 0xA3u, 0x8Du, 0x21u, 0x37u, 0x60u, 0xC0u,
        0xF5u, 0xB2u, 0xBDu, 0x4Cu, 0xA8u, 0xE5u, 0xBAu, 0x50u,
        0x21u, 0xE8u, 0xA4u, 0x80u, 0x85u, 0xB1u, 0x32u, 0x9Bu,
        0x9Au, 0xBBu, 0xCFu, 0xBCu, 0x1Au, 0xA1u, 0x94u, 0x80u,
        0x48u, 0x9Au, 0x75u, 0xD0u, 0xAEu, 0x0Au, 0x6Du, 0xDAu,
        0x05u, 0x60u, 0x49u, 0xC5u, 0x8Eu, 0x80u, 0xA0u, 0xB0u,
        0xC1u, 0xA3u, 0x8Eu, 0x86u, 0x95u, 0xF6u, 0xF0u, 0xFFu,
        0x95u, 0xC6u, 0x98u, 0x49u, 0x52u, 0x2Du, 0x0Au, 0x0Bu,
        0xBCu, 0xBAu, 0x0Fu, 0xBEu, 0xC2u, 0x2Du, 0xE6u, 0x71u,
        0x45u, 0x7Eu, 0x6Au, 0xC2u, 0x8Fu, 0x30u, 0xF3u, 0x1Bu,
        0x3Du, 0xD0u, 0x14u, 0x95u, 0x19u, 0x9Au, 0x32u, 0xCAu,
        0x28u, 0x8Du, 0xC1u, 0x5Bu, 0xFFu, 0xD8u, 0x76u, 0x40u,
        0xAAu, 0x5Bu, 0x43u, 0xEBu, 0x6Eu, 0xBBu, 0x87u, 0xC4u,
        0x3Du, 0x3Cu, 0xE6u, 0x73u, 0x06u, 0xEEu, 0xEFu, 0x7Fu,
        0x43u, 0xD5u, 0x12u, 0x40u, 0x90u, 0x82u, 0x6Bu, 0x40u,
        0x73u, 0x2Eu, 0x15u, 0xF3u, 0x08u, 0xA8u, 0x67u, 0xFEu,
        0xEAu, 0x76u, 0x41u, 0xFEu, 0xD3u, 0x5Du, 0x36u, 0x5Bu,
        0x45u, 0x42u, 0x5Cu, 0xD7u, 0xE7u, 0x79u, 0xA0u, 0xDFu,
        0xF8u, 0xBAu, 0x12u, 0x21u, 0x2Eu, 0x3Au, 0x36u, 0x6Du,
        0xF6u, 0x79u, 0x16u, 0xB5u, 0x77u, 0x5Du, 0x80u, 0xB3u,
        0xADu, 0x09u, 0x85u, 0xACu, 0xD4u, 0x9Eu, 0x98u, 0x06u,
        0xFFu, 0xAEu, 0x35u, 0xAFu, 0x1Au, 0xBFu, 0xC6u, 0x7Du,
        0xB9u, 0xCBu, 0x89u, 0x30u, 0x02u, 0xEBu, 0x88u, 0xE8u,
        0x58u, 0xC8u, 0x42u, 0x73u, 0x46u, 0xDDu, 0x01u, 0x58u,
        0x8Fu, 0xAEu, 0xAFu, 0x88u, 0x74u, 0x93u, 0x15u, 0xA5u,
        0x4Cu, 0xEEu, 0x5Cu, 0x5Au, 0x21u, 0xADu, 0x8Cu, 0x99u,
        0x09u, 0x1Cu, 0x31u, 0x1Bu, 0x64u, 0x37u, 0x02u, 0x23u,
        0xE1u, 0x01u, 0xC6u, 0x6Cu, 0x4Cu, 0x77u, 0xBCu, 0xD7u,
        0xC9u, 0x6Eu, 0xC9u, 0x30u, 0x92u, 0xD2u, 0x52u, 0xB3u,
    },
    .expData =
    {
        0x01u, 0x00u, 0x01u, 0x00u,
    },
    .barrettData =
    {
        0xA2u, 0x78u, 0x5Cu, 0x68u, 0x49u, 0xBBu, 0x85u, 0xD6u,
        0xF0u, 0x36u, 0xE3u, 0xAAu, 0xF7u, 0x33u, 0x48u, 0x40u,
        0xC2u, 0xE2u, 0x75u, 0x03u, 0x7Eu, 0x18u, 0xCAu, 0x0Bu,
        0x21u, 0xF3u, 0xDFu, 0x70u, 0xF4u, 0x73u, 0xBCu, 0x4Bu,
        0xA2u, 0xFDu, 0x98u, 0x3Cu, 0x71u, 0x20u, 0xD3u, 0xECu,
        0x57u, 0xC4u, 0xFEu, 0xE5u, 0xBBu, 0x38u, 0xEEu, 0x0Bu,
        0x38u, 0x25u, 0xA5u, 0x0Au, 0xABu, 0xF5u, 0x88u, 0xE5u,
        0x8Eu, 0x98u, 0xA7u, 0xA6u, 0x6Du, 0x2Fu, 0x12u, 0x40u,
        0xC3u, 0x2Du, 0xD5u, 0x34u, 0x15u, 0x7Du, 0x6Au, 0x18u,
        0xE8u, 0x64u, 0x3Au, 0x47u, 0x1Eu, 0xAFu, 0x0Cu, 0x8Eu,
        0x75u, 0xE0u, 0x39u, 0x2Cu, 0x09u, 0x8Cu, 0xE0u, 0x96u,
        0x6Du, 0xD4u, 0xB4u, 0x9Bu, 0x77u, 0xF0u, 0xA8u, 0xDAu,
        0x7Cu, 0x60u, 0x09u, 0xF0u, 0x82u, 0xACu, 0x68u, 0x14u,
        0x46u, 0xEEu, 0x1Du, 0xF7u, 0xCCu, 0x45u, 0xE8u, 0xCAu,
        0x83u, 0x5Au, 0x19u, 0x74u, 0x1Bu, 0xEFu, 0xBAu, 0x98u,
        0x4Bu, 0xC7u, 0x20u, 0x97u, 0x15u, 0xC8u, 0x8Bu, 0x17u,
        0x09u, 0x06u, 0xB3u, 0x6Fu, 0x85u, 0x7Du, 0xC5u, 0x72u,
        0xDCu, 0xD3u, 0x8Du, 0x14u, 0x12u, 0x8Bu, 0x6Cu, 0x81u,
        0x33u, 0x6Fu, 0x57u, 0xF2u, 0x3Bu, 0x1Fu, 0x66u, 0x1Cu,
        0xF9u, 0x3Au, 0xE3u, 0xE3u, 0x3Eu, 0x1Du, 0x86u, 0xDCu,
        0xDCu, 0x85u, 0x29u, 0xD2u, 0x83u, 0x35u, 0x83u, 0x1Du,
        0x44u, 0x51u, 0xD3u, 0x68u, 0x74u, 0x6Au, 0xBFu, 0xAEu,
        0x3Eu, 0xCDu, 0x2Bu, 0xC6u, 0x7Fu, 0xDDu, 0xB5u, 0xB8u,
        0x3Eu, 0x6Au, 0xEFu, 0x72u, 0x14u, 0xE9u, 0x56u, 0xBEu,
        0xD0u, 0xD2u, 0xA0u, 0xA5u, 0x0Du, 0x68u, 0xA4u, 0x4Du,
        0x76u, 0x7Au, 0x1Fu, 0xDFu, 0xD8u, 0x19u, 0x84u, 0x4Cu,
        0x5Eu, 0xE4u, 0x5Fu, 0x1Au, 0xD7u, 0x7Bu, 0x79u, 0xCEu,
        0xF9u, 0xFFu, 0x2Fu, 0x0Au, 0xFFu, 0xC5u, 0x3Au, 0xA8u,
        0xFAu, 0x62u, 0xC5u, 0xDEu, 0x75u, 0xE7u, 0x22u, 0x01u,
        0x4Du, 0x48u, 0x15u, 0x76u, 0x79u, 0x35u, 0x25u, 0x9Du,
        0x33u, 0x0Fu, 0xFAu, 0xA5u, 0xE7u, 0x41u, 0xEDu, 0x06u,
        0xD0u, 0x83u, 0x4Bu, 0xC4u, 0xA4u, 0x5Du, 0x76u, 0x6Du,
        0x01u, 0x00u, 0x00u, 0x00u,
    },
    .inverseModuloData =
    {
        0xF7u, 0xDBu, 0x7Eu, 0xBBu, 0x40u, 0x73u, 0x6Eu, 0x72u,
        0xEFu, 0xA6u, 0x8Au, 0x7Fu, 0x8Au, 0x28u, 0x8Du, 0xB5u,
        0x35u, 0x2Fu, 0xD7u, 0x6Cu, 0x67u, 0x0Au, 0xBAu, 0xE3u,
        0x0Cu, 0xFEu, 0x8Fu, 0xDBu, 0x86u, 0xA7u, 0x3Cu, 0xC4u,
        0xACu, 0x26u, 0xF9u, 0x57u, 0x82u, 0xCAu, 0x66u, 0xC9u,
        0x76u, 0x9Fu, 0x3Bu, 0x36u, 0x38u, 0x14u, 0x72u, 0xF2u,
        0x28u, 0xFCu, 0xBDu, 0x2Eu, 0xFDu, 0x65u, 0x89u, 0x35u,
        0x78u, 0x7Du, 0x99u, 0x07u, 0x1Au, 0x53u, 0xC8u, 0x3Eu,
        0x51u, 0xD3u, 0xF2u, 0xFDu, 0xCEu, 0x92u, 0x8Fu, 0x10u,
        0xD2u, 0x27u, 0xC7u, 0xCCu, 0x0Fu, 0xF4u, 0xC9u, 0xAEu,
        0xCEu, 0x50u, 0x68u, 0x8Cu, 0x76u, 0xE9u, 0x91u, 0xD9u,
        0x42u, 0x55u, 0x1Fu, 0x25u, 0x04u, 0xB1u, 0xBDu, 0xABu,
        0xA1u, 0x16u, 0xBCu, 0xD7u, 0x2Cu, 0x8Bu, 0x55u, 0xC2u,
        0x02u, 0x96u, 0x04u, 0x44u, 0xB4u, 0x71u, 0x88u, 0xF9u,
        0x79u, 0xD0u, 0xF0u, 0x2Du, 0x58u, 0xF9u, 0x93u, 0xD5u,
        0x91u, 0x24u, 0xB8u, 0x2Bu, 0xA9u, 0x3Eu, 0x6Au, 0xE3u,
        0x07u, 0x44u, 0xDCu, 0xD5u, 0x8Du, 0xB1u, 0xA3u, 0xC3u,
        0x09u, 0x57u, 0xC5u, 0x9Au, 0xAEu, 0x93u, 0x0Cu, 0xEEu,
        0x29u, 0xEAu, 0x03u, 0x41u, 0xD0u, 0xE6u, 0xA1u, 0xFFu,
        0x65u, 0x02u, 0x17u, 0x7Eu, 0x31u, 0x3Cu, 0x00u, 0x4Cu,
        0xA9u, 0x32u, 0xF3u, 0xC6u, 0x8Du, 0xA9u, 0x33u, 0xDBu,
        0x62u, 0x23u, 0x4Eu, 0xE3u, 0x1Au, 0xEAu, 0x97u, 0x60u,
        0xA8u, 0x34u, 0xE3u, 0x3Bu, 0x96u, 0xBCu, 0xE5u, 0x2Fu,
        0xC2u, 0x66u, 0x40u, 0xE6u, 0xFFu, 0x92u, 0x84u, 0xF6u,
        0x38u, 0xB7u, 0x59u, 0x81u, 0x96u, 0xEFu, 0x1Fu, 0xD9u,
        0xA9u, 0x20u, 0x8Bu, 0xB2u, 0x77u, 0x49u, 0x0Fu, 0xA9u,
        0x0Fu, 0x7Fu, 0x60u, 0xD4u, 0x6Bu, 0xBAu, 0xC6u, 0x73u,
        0xA2u, 0x25u, 0x44u, 0xA2u, 0xEAu, 0x91u, 0xDBu, 0xA3u,
        0xC2u, 0x8Cu, 0x27u, 0x38u, 0xFCu, 0xEAu, 0xFEu, 0x00u,
        0x6Du, 0x93u, 0xB6u, 0x0Du, 0xF8u, 0x74u, 0xFDu, 0x14u,
        0xC7u, 0xD5u, 0xE7u, 0x7Du, 0x32u, 0x08u, 0x52u, 0x8Du,
        0xACu, 0x66u, 0x03u, 0x4Fu, 0xA9u, 0x33u, 0xA0u, 0x7Bu,
    },
    .rBarData =
    {
        0xC7u, 0x55u, 0xF6u, 0xCEu, 0x63u, 0xEFu, 0x67u, 0xE1u,
        0xD4u, 0xCDu, 0xA3u, 0xC2u, 0x8Du, 0xA5u, 0x00u, 0xB8u,
        0xD9u, 0xE7u, 0x9Cu, 0x79u, 0x9Au, 0xC0u, 0xC4u, 0xA8u,
        0xF0u, 0x59u, 0x5Cu, 0x72u, 0xDEu, 0xC8u, 0x9Fu, 0x3Fu,
        0x0Au, 0x4Du, 0x42u, 0xB3u, 0x57u, 0x1Au, 0x45u, 0xAFu,
        0xDEu, 0x17u, 0x5Bu, 0x7Fu, 0x7Au, 0x4Eu, 0xCDu, 0x64u,
        0x65u, 0x44u, 0x30u, 0x43u, 0xE5u, 0x5Eu, 0x6Bu, 0x7Fu,
        0xB7u, 0x65u, 0x8Au, 0x2Fu, 0x51u, 0xF5u, 0x92u, 0x25u,
        0xFAu, 0x9Fu, 0xB6u, 0x3Au, 0x71u, 0x7Fu, 0x5Fu, 0x4Fu,
        0x3Eu, 0x5Cu, 0x71u, 0x79u, 0x6Au, 0x09u, 0x0Fu, 0x00u,
        0x6Au, 0x39u, 0x67u, 0xB6u, 0xADu, 0xD2u, 0xF5u, 0xF4u,
        0x43u, 0x45u, 0xF0u, 0x41u, 0x3Du, 0xD2u, 0x19u, 0x8Eu,
        0xBAu, 0x81u, 0x95u, 0x3Du, 0x70u, 0xCFu, 0x0Cu, 0xE4u,
        0xC2u, 0x2Fu, 0xEBu, 0x6Au, 0xE6u, 0x65u, 0xCDu, 0x35u,
        0xD7u, 0x72u, 0x3Eu, 0xA4u, 0x00u, 0x27u, 0x89u, 0xBFu,
        0x55u, 0xA4u, 0xBCu, 0x14u, 0x91u, 0x44u, 0x78u, 0x3Bu,
        0xC2u, 0xC3u, 0x19u, 0x8Cu, 0xF9u, 0x11u, 0x10u, 0x80u,
        0xBCu, 0x2Au, 0xEDu, 0xBFu, 0x6Fu, 0x7Du, 0x94u, 0xBFu,
        0x8Cu, 0xD1u, 0xEAu, 0x0Cu, 0xF7u, 0x57u, 0x98u, 0x01u,
        0x15u, 0x89u, 0xBEu, 0x01u, 0x2Cu, 0xA2u, 0xC9u, 0xA4u,
        0xBAu, 0xBDu, 0xA3u, 0x28u, 0x18u, 0x86u, 0x5Fu, 0x20u,
        0x07u, 0x45u, 0xEDu, 0xDEu, 0xD1u, 0xC5u, 0xC9u, 0x92u,
        0x09u, 0x86u, 0xE9u, 0x4Au, 0x88u, 0xA2u, 0x7Fu, 0x4Cu,
        0x52u, 0xF6u, 0x7Au, 0x53u, 0x2Bu, 0x61u, 0x67u, 0xF9u,
        0x00u, 0x51u, 0xCAu, 0x50u, 0xE5u, 0x40u, 0x39u, 0x82u,
        0x46u, 0x34u, 0x76u, 0xCFu, 0xFDu, 0x14u, 0x77u, 0x17u,
        0xA7u, 0x37u, 0xBDu, 0x8Cu, 0xB9u, 0x22u, 0xFEu, 0xA7u,
        0x70u, 0x51u, 0x50u, 0x77u, 0x8Bu, 0x6Cu, 0xEAu, 0x5Au,
        0xB3u, 0x11u, 0xA3u, 0xA5u, 0xDEu, 0x52u, 0x73u, 0x66u,
        0xF6u, 0xE3u, 0xCEu, 0xE4u, 0x9Bu, 0xC8u, 0xFDu, 0xDCu,
        0x1Eu, 0xFEu, 0x39u, 0x93u, 0xB3u, 0x88u, 0x43u, 0x28u,
        0x36u, 0x91u, 0x36u, 0xCFu, 0x6Du, 0x2Du, 0xADu, 0x4Cu,
    },
};

        Cy_FB_Isvalidkey可以检查公钥结构是否有效。See the “Flash Boot” chapter in the architecture TRM [2] for more details。
        根据RSA密钥的大小,需要在以下文件中更改公钥格式的模数位长度

<user>\ tviibe1m\src\cy_si_keystorage.h
<user>: Sample project stored folder
 

#define CY_SI_PUBLIC_KEY_MODULOLENGTH (256UL) /**< Modulus length of the RSA 2K key */
//#define CY_SI_PUBLIC_KEY_MODULOLENGTH (384UL) /**< Modulus length of the RSA 3K key */
//#define CY_SI_PUBLIC_KEY_MODULOLENGTH (512UL) /**< Modulus length of the RSA 4K key */

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值