此工程提供了两个文件,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 linecmd_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 */

(一)创建公钥和私钥的示例相关推荐

  1. rsa私钥和公钥_如何创建RSA公钥和私钥?

    rsa私钥和公钥 RSA is an algorithm used for Cryptography. It was patented until 2000 in the USA (not the w ...

  2. 公钥和私钥怎么生成_科普 | Eth2 验证者如何生成和保护取款密钥

    来源 | 以太坊爱好者 作者|Jim McDonald责编|晋兆雨 取款密钥是什么? 取款密钥(withdrawal key)是以太坊 2.0 中的验证者用来提现以太币的密钥 [1].以太坊 2.0 ...

  3. java中使用openssl生成的rsa公私钥进行数据加解密_使用openssl生成RSA公钥和私钥对...

    在ubuntu上要使用openssl的话需要先进行安装,命令如下: sudo apt-get install openssl 安装完成就可以使用openssl了. 首先需要进入openssl的交互界面 ...

  4. 生成CA根证书、公钥、私钥指令(数字证书)

    一.生成CA根证书 生成 CA 私钥:openssl genrsa -out ca.key 1024 因为是自签名,省略生成 证书签名请求csr 的过程,直接执行以下命令生成CA证书:openssl ...

  5. 【一】生成CA根证书、公钥、私钥指令(数字证书)

    一.生成CA根证书 生成 CA 私钥:openssl genrsa -out ca.key 1024 因为是自签名,省略生成 证书签名请求csr 的过程,直接执行以下命令生成CA证书:openssl ...

  6. ssh-keygen产生公钥与私钥对,及密钥分发,ssh远程执行常用命令方法,和如何防止SSH登录入侵或被破解

    前言 SSH是安全的加密协议,用于远程连接Linux服务器,默认端口是22,安全协议版本是SSH2 . SSH原理 SSH(远程连接工具)连接原理:ssh服务是一个守护进程(demon),系统后台监听 ...

  7. web3通过助记词获取所有关联的账号:公钥、私钥、地址

    1. 业务逻辑 需要使用bip39协议将助记词转换成种子,再通过ethereumjs-wallet库生成hd钱包,根据路径的不同从hd钱包中获取不同的keypair,keypair中就包含有公钥.私钥 ...

  8. 【Vue+DRF生鲜电商】27.支付宝公钥,私钥,沙箱环境配置

    专题:Vue+Django REST framework前后端分离生鲜电商 Vue+Django REST framework 打造前后端分离的生鲜电商项目(慕课网视频). Github地址:http ...

  9. JAVA产生加密公钥私钥_Java生成非对称型加密的公钥和私钥

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. import java.io.*; import java.security.*; imp ...

最新文章

  1. begin.lydsy 入门OJ题库:1104:纯粹合数
  2. html5考试总结300字,期中考心得300字5
  3. BigDecimalf大小的比较
  4. python爬虫原理-python爬虫之认识爬虫和爬虫原理
  5. 关于python中程序流程结构-Python语言程序设计(第4章:程序结构设计)
  6. linux使用nginx负载udp
  7. prometheus获取Consul上注册的服务
  8. ML之分类预测:基于sklearn库的七八种机器学习算法利用糖尿病(diabetes)数据集(8→1)实现二分类预测
  9. php如何实现添加到购物车_PHP实现添加购物车功能
  10. Laravel 除了首页能正常访问,其它页面均404
  11. 使用Ext JS,不要使用页面做组件重用,尽量不要做页面跳转
  12. java-前端之js
  13. 分享Silverlight/WPF/Windows Phone一周学习导读(3月28日-4月2日)
  14. 新司机的黑裙战斗机 篇三:群晖【番外篇】群晖系统崩溃后的数据抢救
  15. MATLAB字母识别
  16. Matlab 自相关检测 :自相关函数xcorr
  17. BSP板机支持包、linux启动分析、ARM裸机编程
  18. 深度Linux如何安装驱动程序,在Deepin 20系统下手动安装N卡闭源驱动64-440.31.run的步骤...
  19. 银河麒麟服务器操作系统V10SP2搭建时间服务器
  20. 谷歌开放生成式AI Bard,百度文心一言《唐伯虎点秋香》出圈

热门文章

  1. 巧用60分钟k线战法把握卖点
  2. Cordova Plugin /JPush PhoneGap 极光推送_本地推送_消息推送
  3. Android之调节手机屏幕亮度
  4. 无线适配器或访问点有问题
  5. React Native 的 ListView 性能问题已解决
  6. 51nod 1571 最近等对 CQD分治
  7. Java 开发环境配置
  8. 联想yoga14s和联想小新pro13哪个好
  9. 转转闲鱼链接源码搭建+后台管理
  10. xcode windows版 附安装教程