Merge pull request #8838 from miyazakh/fsp_fix2

Fix Renesas SCE on RA6M4
This commit is contained in:
JacobBarthelmeh
2025-06-05 09:43:05 -06:00
committed by GitHub
6 changed files with 100 additions and 69 deletions

View File

@@ -127,15 +127,37 @@ The wolfssl Project Summary is listed below and is relevant for every project.
SEGGER_RTT_Conf.h\
SEGGER_RTT_printf.c
+ To connect RTT block, you can configure RTT viewer configuration based on where RTT block is in map file\
e.g.\
+ To connect RTT block, you can configure RTT viewer configuration based on where RTT block is in a map file.
+ To place RTT block specific area, you can add the following line to `fsp.ld`:
```
.bss :
{
. = ALIGN(4);
__bss_start__ = .;
*(.bss*)
*(COMMON)
KEEP(*(.rtt_block)) /* <-- for SEGGER_RTT control block */
. = ALIGN(4);
__bss_end__ = .;
} > RAM
```
Also, adding the following line to `SEGGER_RTT.c`:
```
SEGGER_RTT_CB _SEGGER_RTT __attribute__((section(".rtt_block")));
```
As the result, you can find the following similar line in the map file.
e.g.
[test_RA6M4.map]
```
COMMON 0x200232a8 0xa8 ./src/SEGGER_RTT/SEGGER_RTT.o\
.rtt_block 0x20023648 0xa8 ./src/SEGGER_RTT/SEGGER_RTT.o
0x20023648 _SEGGER_RTT
````
you can specify "RTT control block" to 0x200232a8 by Address\
OR\
you can specify "RTT control block" to 0x20020000 0x10000 by Search Range
you can specify "RTT control block" to 0x20023648 by Address
OR
you can specify "RTT control block" to 0x20023000 0x1000 by Search Range
## Run Client
1.) Enable TLS_CLIENT definition in wolfssl_demo.h of test_RA6M4 project

View File

@@ -72,32 +72,32 @@ const st_user_key_block_data_t g_key_block_data =
* This is used for Root Certificate verify by SCE */
const unsigned char ca_cert_der_sign[] =
{
0x42, 0xDC, 0x1F, 0xF5, 0x71, 0x54, 0x13, 0xB5, 0x86, 0x30,
0x34, 0xF3, 0x04, 0x50, 0x69, 0x50, 0x6C, 0x94, 0x05, 0x60,
0xC6, 0x34, 0x12, 0xCC, 0xA1, 0x68, 0x56, 0x1F, 0x54, 0x4D,
0x6C, 0x3E, 0xCB, 0xFB, 0xEB, 0xEF, 0x4E, 0xCF, 0xA8, 0xB0,
0xA7, 0xDE, 0xAD, 0x64, 0xBA, 0xB8, 0xE5, 0x0C, 0x97, 0x31,
0x16, 0xEE, 0xF7, 0x73, 0xCC, 0xAF, 0x54, 0x20, 0xE1, 0xFF,
0xF7, 0x94, 0x6D, 0x7B, 0xC7, 0x83, 0xA3, 0xE5, 0xF6, 0x01,
0xA1, 0xA7, 0x90, 0xF1, 0x3D, 0xCE, 0x95, 0xD8, 0x15, 0x29,
0x7A, 0x6C, 0xC1, 0x43, 0xB8, 0x29, 0x30, 0xC9, 0x38, 0x36,
0x85, 0x03, 0x23, 0x3D, 0xAE, 0x40, 0xAA, 0x0A, 0x38, 0xF8,
0x06, 0xDB, 0xA5, 0x7B, 0xBF, 0x72, 0x12, 0xD7, 0xB1, 0x35,
0x82, 0x47, 0xA8, 0x9E, 0xCB, 0xFF, 0xD1, 0x34, 0xA2, 0x15,
0xBB, 0xC8, 0x35, 0xE7, 0x91, 0x58, 0x52, 0xD8, 0xA6, 0x9F,
0x1D, 0x68, 0xD2, 0x92, 0x0E, 0xAD, 0x42, 0xB9, 0xE5, 0x72,
0xE9, 0x3B, 0x24, 0xF2, 0x05, 0xEA, 0x9F, 0xAD, 0x07, 0xE0,
0xD8, 0x40, 0x33, 0x7D, 0x1C, 0x8C, 0x71, 0x7E, 0x37, 0x22,
0x1B, 0x13, 0x27, 0xE5, 0xBC, 0x6E, 0x6E, 0x6A, 0xE5, 0x66,
0x4C, 0xAB, 0x74, 0x74, 0x12, 0xE4, 0x12, 0x36, 0xD5, 0xB0,
0x56, 0x0E, 0x79, 0xFB, 0x56, 0xA0, 0x09, 0x4B, 0xBD, 0xE0,
0xF5, 0x75, 0x0E, 0xA1, 0xB1, 0xDC, 0xA6, 0xC5, 0x0B, 0x7E,
0x79, 0x83, 0xD5, 0xCE, 0x2A, 0xB3, 0x2C, 0xE8, 0x49, 0xDE,
0x18, 0xB2, 0x50, 0x58, 0x58, 0x2E, 0x31, 0xAD, 0xF1, 0x25,
0x71, 0xD2, 0x74, 0xA1, 0xC8, 0x1C, 0xF6, 0xF7, 0xE6, 0xDA,
0xA3, 0x9F, 0x32, 0x5A, 0xA0, 0xBC, 0x1D, 0x13, 0xAC, 0x9C,
0x41, 0x97, 0xDB, 0xA4, 0xF4, 0xE2, 0xE4, 0x28, 0xD3, 0x30,
0xC3, 0x14, 0xF2, 0xB0, 0xBF, 0x94
0xAF, 0x76, 0x00, 0x5E, 0x2C, 0x9C, 0xCB, 0xAF, 0x96, 0x9F,
0x7A, 0x0E, 0xA1, 0x41, 0x36, 0xBE, 0x72, 0x8C, 0xED, 0x86,
0x31, 0xEF, 0x03, 0x19, 0x2D, 0x68, 0xB0, 0x17, 0xD2, 0x3F,
0x15, 0xAC, 0x51, 0x00, 0x98, 0xE9, 0xE0, 0x07, 0x39, 0x00,
0x83, 0x63, 0xE3, 0x0F, 0xCA, 0xD5, 0x8A, 0xBD, 0xBB, 0xC5,
0x5C, 0xC7, 0xE4, 0xE0, 0xCB, 0x2F, 0x9F, 0x4E, 0xE8, 0xB0,
0xBF, 0xA6, 0x12, 0x95, 0xFF, 0x5C, 0xA8, 0xF7, 0x89, 0xD4,
0xA0, 0x84, 0x74, 0x50, 0x91, 0x11, 0x16, 0xEA, 0xEC, 0x59,
0x03, 0x63, 0x2C, 0xBC, 0x7B, 0x16, 0xD5, 0xAB, 0x2F, 0x7A,
0xF8, 0xC0, 0x51, 0xC2, 0x58, 0x9C, 0x2C, 0x89, 0xFB, 0x26,
0x88, 0x13, 0x3F, 0x77, 0xD8, 0x2F, 0x3F, 0x52, 0x5C, 0x65,
0x0F, 0x04, 0xF8, 0xAC, 0x54, 0x4F, 0x9C, 0x36, 0x80, 0x4A,
0xE7, 0x54, 0x5A, 0x86, 0x6E, 0xD5, 0x34, 0xC9, 0x31, 0x12,
0x9D, 0x64, 0x8F, 0x3D, 0xA3, 0x9D, 0x07, 0x87, 0xF5, 0xD7,
0x54, 0x6E, 0xFA, 0x53, 0xF0, 0x09, 0xCE, 0x0A, 0xD3, 0xCA,
0x63, 0x23, 0x0A, 0x07, 0xF5, 0xA2, 0x28, 0x67, 0xCD, 0xC7,
0x1E, 0x0C, 0x4F, 0x15, 0x6B, 0xBA, 0x50, 0xDE, 0x08, 0x7B,
0x56, 0x18, 0x8C, 0xA2, 0xE0, 0x9C, 0x5A, 0x31, 0xBA, 0xAC,
0xD3, 0x8B, 0xFC, 0x7F, 0xE1, 0x60, 0x26, 0x93, 0x47, 0xA6,
0x42, 0x67, 0x50, 0x0F, 0x0B, 0x90, 0x27, 0xE3, 0x53, 0x35,
0xFD, 0x20, 0x2A, 0xEF, 0xB1, 0x68, 0x81, 0xF8, 0x05, 0x19,
0xB2, 0x37, 0x57, 0xE8, 0x14, 0x5E, 0xD0, 0xC8, 0x10, 0xB0,
0xAA, 0x15, 0x27, 0xA3, 0xBF, 0x09, 0xC1, 0xC4, 0xAC, 0x5B,
0xB4, 0xE4, 0x9A, 0xD3, 0x3A, 0x59, 0xF0, 0x2A, 0x05, 0xFE,
0xA6, 0xA6, 0x86, 0x96, 0x9C, 0xF7, 0x6C, 0xA3, 0x3B, 0x3A,
0x54, 0xA0, 0x38, 0x6D, 0x84, 0x73
};
const int sizeof_ca_cert_der_sign = sizeof(ca_cert_der_sign);
@@ -108,32 +108,32 @@ const int sizeof_ca_cert_der_sign = sizeof(ca_cert_der_sign);
*/
const unsigned char ca_ecc_cert_der_sign[] =
{
0x34, 0x5E, 0xA6, 0xED, 0xA7, 0x19, 0xC1, 0x57, 0x3F, 0x89,
0x71, 0xEC, 0xA0, 0x26, 0x94, 0x67, 0xFF, 0x2A, 0xE3, 0x88,
0xAF, 0xD5, 0xD8, 0x7A, 0x23, 0x9D, 0xD5, 0x4A, 0x11, 0x0D,
0x28, 0xB7, 0x00, 0xB3, 0xC9, 0xD9, 0x5C, 0xAD, 0xB0, 0x5C,
0xD6, 0xFF, 0xD5, 0x98, 0x9A, 0x3D, 0xFC, 0xC2, 0x1A, 0xC8,
0x9C, 0x17, 0x60, 0xD7, 0xA8, 0x10, 0x62, 0x56, 0x87, 0xD7,
0x95, 0x71, 0xE5, 0xC8, 0x65, 0xA9, 0x16, 0xC0, 0x21, 0x08,
0x31, 0x51, 0xED, 0x51, 0x02, 0xED, 0x1C, 0x8A, 0xEA, 0x82,
0x93, 0x0E, 0x9C, 0xBD, 0x25, 0x1B, 0xD7, 0x91, 0x12, 0xC1,
0x49, 0xC5, 0x2E, 0x1D, 0x04, 0x5D, 0x60, 0x63, 0x68, 0xF3,
0x5A, 0x18, 0x60, 0xF3, 0xD9, 0x88, 0x2C, 0xCC, 0x56, 0x49,
0xA4, 0x07, 0x9C, 0xA7, 0x50, 0x36, 0x83, 0xFB, 0x39, 0x83,
0x1F, 0xB9, 0x6B, 0x1F, 0x19, 0x2B, 0x4B, 0x6D, 0xEC, 0xC5,
0xC5, 0x08, 0x8D, 0x38, 0x80, 0xEC, 0x8D, 0xC1, 0x8B, 0x74,
0xC4, 0xD7, 0x60, 0xB4, 0x29, 0xA9, 0xE1, 0x2B, 0x98, 0xF6,
0x9C, 0xFB, 0x73, 0x40, 0x80, 0xA8, 0x5D, 0x64, 0xDA, 0x12,
0xE0, 0x43, 0x5B, 0xC9, 0x65, 0xB2, 0x76, 0x11, 0xB7, 0x06,
0x0C, 0x81, 0x62, 0x18, 0xD3, 0x34, 0x0C, 0xAC, 0xD0, 0x61,
0x98, 0x5A, 0x3E, 0x94, 0x6F, 0xAA, 0x51, 0xF2, 0x75, 0xF7,
0xBE, 0x6C, 0xA8, 0xCB, 0xDC, 0xFD, 0x3C, 0x9C, 0xF3, 0x15,
0xA5, 0x5B, 0x8A, 0x81, 0x11, 0x15, 0x50, 0x3D, 0x8B, 0xA9,
0x3E, 0xD9, 0xAA, 0x22, 0x0B, 0xB5, 0x20, 0x83, 0x7C, 0xAF,
0x74, 0x4C, 0x51, 0x60, 0x44, 0xC2, 0x04, 0xA0, 0xB2, 0x17,
0x57, 0xE0, 0xEE, 0x63, 0x13, 0xBF, 0xEA, 0x21, 0x16, 0x4D,
0x2D, 0xFB, 0x0D, 0x66, 0x66, 0x43, 0x1F, 0xAB, 0xFE, 0xE3,
0x14, 0xAD, 0xE4, 0xE2, 0xEB, 0xBF
0x5A, 0x12, 0x05, 0x7F, 0x18, 0x16, 0x41, 0x18, 0x37, 0x11,
0x67, 0x22, 0xCE, 0x03, 0x92, 0xDB, 0xCB, 0xE2, 0xD2, 0x5B,
0x35, 0x3A, 0x2E, 0x35, 0xE8, 0x86, 0x6F, 0xB6, 0x3F, 0x86,
0x99, 0xFB, 0xB7, 0x7A, 0xB1, 0x38, 0xAE, 0x79, 0x7D, 0x98,
0x2D, 0x81, 0xBD, 0x74, 0xB1, 0x7D, 0xAD, 0xCE, 0x4F, 0x63,
0xD2, 0xB3, 0x06, 0xDF, 0x00, 0x91, 0x12, 0x21, 0x53, 0xAE,
0xEB, 0x0E, 0x4E, 0xDA, 0xF1, 0xD7, 0x29, 0x2E, 0xC8, 0xF2,
0x42, 0xEB, 0x90, 0xDE, 0xE3, 0xF2, 0x4B, 0x9A, 0xC0, 0x16,
0x51, 0x4C, 0xE3, 0x54, 0xCD, 0xE7, 0x33, 0xE6, 0x0A, 0xD4,
0x0F, 0x51, 0x6D, 0xA5, 0x69, 0x5E, 0xD7, 0xDD, 0x5A, 0xF9,
0x95, 0xE7, 0x89, 0x71, 0x56, 0x22, 0x37, 0x24, 0x2D, 0x39,
0x21, 0xE4, 0xC9, 0x4F, 0x22, 0x2E, 0x01, 0xA0, 0xA1, 0x2F,
0xDC, 0x75, 0xD9, 0xED, 0x25, 0x37, 0xB6, 0x7E, 0xAB, 0xF7,
0xFA, 0xCD, 0x68, 0x9B, 0x89, 0x1F, 0x21, 0x43, 0x8C, 0xAC,
0xE6, 0x55, 0xC2, 0xDE, 0xF5, 0xCE, 0xA9, 0x1B, 0x6D, 0x7E,
0x64, 0x3D, 0x91, 0x5A, 0x8D, 0x55, 0x8D, 0x32, 0x56, 0x0D,
0xE2, 0x65, 0x73, 0xBE, 0x21, 0x2E, 0x7D, 0xFF, 0x2C, 0xA4,
0x28, 0x0F, 0x37, 0x0F, 0xEA, 0xE7, 0xC4, 0xAC, 0x73, 0x7E,
0x5F, 0x35, 0x35, 0xD2, 0xE1, 0x76, 0x5B, 0xB3, 0x44, 0xA2,
0xD7, 0x8E, 0x99, 0xE5, 0x7E, 0xD1, 0x61, 0xAB, 0x78, 0xFC,
0x70, 0x61, 0x34, 0x99, 0x41, 0x1F, 0x83, 0xFF, 0x71, 0x8D,
0x83, 0xC5, 0x03, 0x3A, 0x64, 0x54, 0xD0, 0x68, 0x83, 0xC7,
0x3B, 0x75, 0x62, 0x86, 0x7B, 0xF3, 0x4B, 0xFE, 0xAC, 0x4B,
0x6F, 0x45, 0x70, 0xC4, 0x71, 0x03, 0x9F, 0x90, 0x32, 0x35,
0xA8, 0x44, 0x63, 0x2B, 0x89, 0xF4, 0xCE, 0x38, 0x40, 0x61,
0xC4, 0x9A, 0x2E, 0x84, 0xD5, 0x08
};
static const int sizeof_ca_ecc_cert_der_sign = sizeof(ca_ecc_cert_der_sign);
#endif /* USE_CERT_BUFFERS_256 */

View File

@@ -3554,6 +3554,10 @@ int SetKeysSide(WOLFSSL* ssl, enum encrypt_side side)
ret = PROTOCOLCB_UNAVAILABLE;
if (ssl->ctx->EncryptKeysCb) {
void* ctx = wolfSSL_GetEncryptKeysCtx(ssl);
#if defined(WOLFSSL_RENESAS_FSPSM_TLS)
FSPSM_ST* cbInfo = (FSPSM_ST*)ctx;
cbInfo->side = side;
#endif
ret = ssl->ctx->EncryptKeysCb(ssl, ctx);
}
if (!ssl->ctx->EncryptKeysCb ||

View File

@@ -171,10 +171,6 @@ static int Renesas_cmn_CryptoDevCb(int devIdArg, wc_CryptoInfo* info, void* ctx)
if (info == NULL || ctx == NULL)
return BAD_FUNC_ARG;
#if defined(DEBUG_WOLFSSL)
printf("CryptoDevCb: Algo Type %d session key set: %d\n",
info->algo_type, cbInfo->session_key_set);
#endif
#if defined(DEBUG_CRYPTOCB)
wc_CryptoCb_InfoString(info);
#endif
@@ -831,11 +827,22 @@ static int Renesas_cmn_EncryptKeys(WOLFSSL* ssl, void* ctx)
#elif defined(WOLFSSL_RENESAS_FSPSM_TLS)
FSPSM_ST* cbInfo = (FSPSM_ST*)ctx;
if (cbInfo->keyflgs_tls.bits.session_key_set == 1) {
switch(cbInfo->side) {
case 1:/* ENCRYPT_SIDE_ONLY */
ssl->encrypt.setup = 1;
break;
case 2:/* DECRYPT_SIDE_ONLY */
ssl->decrypt.setup = 1;
break;
case 3:/* ENCRYPT AND DECRYPT */
ssl->decrypt.setup = 1;
ssl->encrypt.setup = 1;
break;
default:break;
}
#endif
ret = 0;
wolfSSL_CTX_SetTlsFinishedCb(ssl->ctx, Renesas_cmn_TlsFinished);
wolfSSL_SetTlsFinishedCtx(ssl, cbInfo);
}

View File

@@ -834,15 +834,13 @@ WOLFSSL_LOCAL int wc_fspsm_generateSessionKey(WOLFSSL *ssl,
if (enc) {
enc->aes->ctx.keySize = ssl->specs.key_size;
enc->aes->ctx.setup = 1;
/* ready for use */
enc->setup = 1;
/* ready-for-use flag will be set when SetKeySide() is called */
}
/* set up key size and marked ready */
if (dec) {
dec->aes->ctx.keySize = ssl->specs.key_size;
dec->aes->ctx.setup = 1;
/* ready for use */
dec->setup = 1;
/* ready-for-use flag will be set when SetKeySide() is called */
}
if (cbInfo->cipher == SCE_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 ||

View File

@@ -66,7 +66,7 @@ typedef struct FSPSM_tag_ST {
uint8_t clientRandom[FSPSM_TLS_CLIENTRANDOM_SZ];
uint8_t serverRandom[FSPSM_TLS_SERVERRANDOM_SZ];
uint8_t cipher;
uint8_t side; /* for key set side */
#endif
/* installed key handling */