Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions embedded/ti-c2000-f28p55x/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
out/
*.obj
89 changes: 89 additions & 0 deletions embedded/ti-c2000-f28p55x/28p55x_wolf_flash_lnk.cmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
/* 28p55x_wolf_flash_lnk.cmd
*
* Linker command file for the wolfCrypt test/benchmark on the
* TI LAUNCHXL-F28P55X (TMS320F28P550SJ), running from flash. EABI only
* (build driverlib and this project with --abi=eabi).
*
* Differs from the stock C2000Ware generic flash linker in three ways that
* the ML-DSA-87 verify path requires:
* - A large STACK in low RAM. The C28x stack pointer is 16-bit, so the
* stack must live below 0x10000. RAMLS0-7 (0x8000..0xBFFF, 16 KW) is the
* largest contiguous low block; the verify key struct (~7 KW pinned by
* WOLFSSL_MLDSA_VERIFY_NO_MALLOC) plus Keccak frames live here.
Comment thread
dgarske marked this conversation as resolved.
* - A real heap (.sysmem) in low RAMGS0-1 for the test/benchmark malloc
* temporaries (ML-DSA verify itself allocates nothing).
* - .bss/.data placed in the high RAMGS2-3 + RAMLS8-9 blocks so they do not
* compete with the stack for low RAM.
*
* Copyright (C) 2006-2026 wolfSSL Inc. GPLv3 - see project headers.
*/

-stack 0x4000 /* 16 KW C28x stack (full RAMLS0-7); wolfcrypt_test's deep call
* chain + SHAKE/large-hash locals (~1.6 KW) need the headroom */
-heap 0x2000 /* 8 KW heap (RAMGS1); RAMGS0 now hosts RAM-resident hot code.
* ML-DSA verify uses no heap; test/benchmark temporaries fit. */

MEMORY
{
BEGIN : origin = 0x080000, length = 0x000002

BOOT_RSVD : origin = 0x000002, length = 0x000126 /* M0, used by boot ROM stack */
RAMM0 : origin = 0x000128, length = 0x0002D8
RAMM1 : origin = 0x000400, length = 0x000400

/* Low RAM (< 0x10000): usable for the 16-bit-SP stack and the heap. */
RAMLS_STACK : origin = 0x008000, length = 0x004000 /* RAMLS0-7, 16 KW */
/* RAMGS0 hosts RAM-resident hot code (.TI.ramfunc), RAMGS1 the heap. At
* 150 MHz the flash has wait states; running the Keccak permutation and the
* ML-DSA NTTs from RAM removes the instruction-fetch stalls. */
RAMGS_RAMCODE : origin = 0x00C000, length = 0x002000 /* RAMGS0, 8 KW */
RAMGS_HEAP : origin = 0x00E000, length = 0x002000 /* RAMGS1, 8 KW */

/* High RAM (>= 0x10000): data only (no stack). */
RAMGS_HI : origin = 0x010000, length = 0x004000 /* RAMGS2-3, 16 KW */
RAMLS_HI : origin = 0x014000, length = 0x004000 /* RAMLS8-9, 16 KW */

/* Flash banks (ML-DSA verify code + const test vectors are large). */
FLASH_BANK0 : origin = 0x080002, length = 0x01FFFE
FLASH_BANK1 : origin = 0x0A0000, length = 0x020000
FLASH_BANK2 : origin = 0x0C0000, length = 0x020000
FLASH_BANK3 : origin = 0x0E0000, length = 0x020000
FLASH_BANK4 : origin = 0x100000, length = 0x008000

RESET : origin = 0x3FFFC0, length = 0x000002
}

SECTIONS
{
codestart : > BEGIN
/* Hot crypto relocated to RAM (loaded from flash, copied by Device_init's
* Ramfuncs memcpy). Listed before .text so these subsections are claimed
* here, not by the generic .text below. --gen_func_subsections=on makes
* each function its own .text:<name> input section. */
.TI.ramfunc : { sha3.obj(.text:BlockSha3)
wc_mldsa.obj(.text:mldsa_ntt_c)
wc_mldsa.obj(.text:mldsa_invntt_c)
wc_mldsa.obj(.text:mldsa_ntt_small_c) }
LOAD = FLASH_BANK0,
RUN = RAMGS_RAMCODE,
LOAD_START(RamfuncsLoadStart),
LOAD_SIZE(RamfuncsLoadSize),
LOAD_END(RamfuncsLoadEnd),
RUN_START(RamfuncsRunStart),
RUN_SIZE(RamfuncsRunSize),
RUN_END(RamfuncsRunEnd),
ALIGN(8)
.text : >> FLASH_BANK0 | FLASH_BANK1 | FLASH_BANK2 | FLASH_BANK3 | FLASH_BANK4, ALIGN(8)
.cinit : > FLASH_BANK0 | FLASH_BANK1 | FLASH_BANK2 | FLASH_BANK3 | FLASH_BANK4, ALIGN(8)
.switch : > FLASH_BANK0 | FLASH_BANK1 | FLASH_BANK2 | FLASH_BANK3 | FLASH_BANK4, ALIGN(8)
.reset : > RESET, TYPE = DSECT /* unused */

.stack : > RAMLS_STACK

.bss : >> RAMGS_HI | RAMLS_HI
.bss:output : > RAMGS_HI
.init_array : > FLASH_BANK0 | FLASH_BANK1 | FLASH_BANK2 | FLASH_BANK3 | FLASH_BANK4, ALIGN(8)
.const : >> FLASH_BANK0 | FLASH_BANK1 | FLASH_BANK2 | FLASH_BANK3 | FLASH_BANK4, ALIGN(8)
.data : >> RAMGS_HI | RAMLS_HI
.sysmem : > RAMGS_HEAP
}
79 changes: 79 additions & 0 deletions embedded/ti-c2000-f28p55x/28p55x_wolf_sign_lnk.cmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
/* 28p55x_wolf_sign_lnk.cmd
*
* Linker command file for the FULL ML-DSA-87 (keygen + sign + verify) build of
* the wolfCrypt example on the TI LAUNCHXL-F28P55X (TMS320F28P550SJ), running
* from flash. EABI only. Selected by `make SIGN=1`.
*
* ML-DSA-87 keygen/sign/verify need a much larger heap than the verify-only
* build. Even with every small-memory path enabled the peak is ~30 KW in a
* single allocation, so this script dedicates the whole contiguous RAMGS0-3
* block (32 KW) to the heap (.sysmem). The stack stays in low RAMLS0-7 (the
* 16-bit SP needs RAM < 0x10000) and .bss/.data live in RAMLS8-9. The full
* wolfcrypt test/benchmark are NOT built in this mode (they would not fit
* alongside the 32 KW heap), so .bss is small.
*
* Copyright (C) 2006-2026 wolfSSL Inc. GPLv3 - see project headers.
*/

-stack 0x3000 /* 12 KW C28x stack (< 0x10000); big arrays go to heap via
* WOLFSSL_SMALL_STACK */
-heap 0x7E00 /* ~31.5 KW heap - ML-DSA-87 keygen/sign peak ~30.5 KW */

MEMORY
{
BEGIN : origin = 0x080000, length = 0x000002

BOOT_RSVD : origin = 0x000002, length = 0x000126 /* M0, used by boot ROM stack */
RAMM0 : origin = 0x000128, length = 0x0002D8
RAMM1 : origin = 0x000400, length = 0x000400

/* Low RAM (< 0x10000): the 16-bit-SP stack (12 KW), plus 4 KW of RAM-
* resident hot code carved from the top of RAMLS0-7. The stack only uses
* 0x3000, so 0xB000..0xBFFF is free for the Keccak permutation. */
RAMLS_STACK : origin = 0x008000, length = 0x003000 /* RAMLS0-5, 12 KW */
RAMLS_RAMCODE : origin = 0x00B000, length = 0x001000 /* RAMLS6-7, 4 KW */

/* RAMGS0-3 is one contiguous 32 KW block (0xC000..0x13FFF): the heap. */
RAMGS_BIG : origin = 0x00C000, length = 0x008000 /* RAMGS0-3, 32 KW */

/* High RAM: .bss/.data (no stack here). */
RAMLS_HI : origin = 0x014000, length = 0x004000 /* RAMLS8-9, 16 KW */

/* Flash banks (ML-DSA sign code is large). */
FLASH_BANK0 : origin = 0x080002, length = 0x01FFFE
FLASH_BANK1 : origin = 0x0A0000, length = 0x020000
FLASH_BANK2 : origin = 0x0C0000, length = 0x020000
FLASH_BANK3 : origin = 0x0E0000, length = 0x020000
FLASH_BANK4 : origin = 0x100000, length = 0x008000

RESET : origin = 0x3FFFC0, length = 0x000002
}

SECTIONS
{
codestart : > BEGIN
.text : >> FLASH_BANK0 | FLASH_BANK1 | FLASH_BANK2 | FLASH_BANK3, ALIGN(8)
.cinit : > FLASH_BANK0, ALIGN(8)
.switch : > FLASH_BANK0, ALIGN(8)
.reset : > RESET, TYPE = DSECT /* unused */

.stack : > RAMLS_STACK

.bss : > RAMLS_HI
.bss:output : > RAMLS_HI
.init_array : > FLASH_BANK0, ALIGN(8)
.const : >> FLASH_BANK0 | FLASH_BANK1, ALIGN(8)
.data : > RAMLS_HI
.sysmem : > RAMGS_BIG

.TI.ramfunc : { sha3.obj(.text:BlockSha3) }
LOAD = FLASH_BANK0,
RUN = RAMLS_RAMCODE,
LOAD_START(RamfuncsLoadStart),
LOAD_SIZE(RamfuncsLoadSize),
LOAD_END(RamfuncsLoadEnd),
RUN_START(RamfuncsRunStart),
RUN_SIZE(RamfuncsRunSize),
RUN_END(RamfuncsRunEnd),
ALIGN(8)
}
69 changes: 69 additions & 0 deletions embedded/ti-c2000-f28p55x/Header/rsa2048_kat.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
/* RSA-2048 SHA-256 PKCS#1 v1.5 verify KAT (openssl-generated). */
#ifndef RSA2048_KAT_H
#define RSA2048_KAT_H

static const byte kat_rsa2048_n[256] = {
0x9e,0xc7,0x03,0xbc,0x24,0x7e,0xaf,0xbd,0x45,0x36,0xf9,0x52,
0x97,0x0c,0x35,0x3a,0xbe,0xe6,0xe8,0x0f,0x2e,0x79,0xa2,0xd8,
0xf0,0x7d,0x6c,0x72,0x27,0x7b,0x38,0x58,0xab,0x90,0xe2,0xe0,
0x06,0xf1,0x40,0xc9,0x1b,0xba,0x6f,0xcd,0x2b,0xc6,0xad,0x1d,
0x7d,0x26,0x0d,0x0b,0x40,0x66,0xe9,0x92,0xb1,0x47,0x2f,0x9d,
0x97,0xfc,0x94,0xd0,0xeb,0x4c,0x02,0xa2,0xf2,0xd0,0xe8,0x52,
0xc1,0xbe,0x31,0xb5,0x06,0x17,0x80,0x9a,0x31,0x48,0x30,0x3e,
0xbd,0x2a,0x66,0x59,0x1a,0x87,0x1d,0xdf,0xea,0xff,0x4c,0xe9,
0xb3,0x87,0xd9,0xac,0x47,0x38,0xbd,0x74,0xa1,0x8a,0x36,0x99,
0x62,0xfd,0xe0,0xae,0x46,0x72,0x67,0x69,0x94,0x58,0x4e,0xcc,
0x15,0xd9,0xea,0x62,0x6d,0x18,0x11,0xfb,0x28,0x1f,0xc1,0x2b,
0xca,0x8b,0x6d,0x96,0x62,0x42,0x52,0x8c,0x11,0xc0,0xd3,0xb6,
0x22,0xbf,0xc7,0xb1,0x24,0xe1,0x9d,0x39,0x49,0xc5,0xff,0x01,
0xbb,0x15,0xc5,0x22,0x6a,0xfa,0xa6,0x74,0xb2,0xf9,0x9e,0xb5,
0x1d,0x50,0x80,0xee,0x1f,0xcb,0x24,0xf4,0xb5,0x50,0xf2,0x2b,
0xea,0xf6,0x12,0x74,0x12,0xf0,0xf5,0xf2,0x00,0xde,0x58,0x16,
0x16,0x38,0x07,0xbb,0xf0,0x45,0x5f,0xab,0xf3,0x18,0xda,0x25,
0xdf,0x1f,0xf2,0x0c,0xb6,0x58,0x76,0x78,0x18,0x2a,0x8f,0xf5,
0x52,0x52,0xc7,0xc6,0xa0,0xf5,0x02,0x4c,0xfe,0xbd,0xf4,0x02,
0xd8,0x78,0x83,0xc0,0xc5,0xc2,0xd2,0x60,0xca,0xbb,0xbf,0xa2,
0xbd,0x90,0x66,0xff,0x10,0x28,0xf3,0xa7,0x32,0x2c,0xf1,0x59,
0x28,0x41,0x75,0x35,
};
static const byte kat_rsa2048_e[3] = {
0x01,0x00,0x01,
};
static const byte kat_rsa2048_sig[256] = {
0x92,0x96,0x49,0x52,0x64,0x83,0x87,0x39,0x3a,0xae,0x1e,0x1a,
0x45,0x3f,0x94,0x5b,0xd2,0x0c,0x44,0x51,0xfa,0x12,0xf3,0x88,
0x59,0x35,0x78,0xe5,0x0e,0xcf,0x76,0xa2,0x81,0x71,0x0e,0xe0,
0x2c,0x0f,0x1d,0x24,0xae,0x11,0xa0,0x94,0xd2,0x21,0xc0,0xd3,
0x18,0x2e,0xfc,0x59,0x09,0x34,0x7b,0x94,0x08,0x83,0x3d,0xe5,
0x1f,0x27,0x70,0x5e,0x14,0x11,0x7c,0xdf,0x7a,0xda,0xf7,0x73,
0x31,0xe5,0xbc,0xcb,0x86,0xb2,0x0f,0x8c,0xa9,0x06,0xc0,0xd1,
0x3b,0xd5,0x9a,0xd8,0x8a,0x51,0xd9,0x51,0xd1,0x48,0xb8,0xff,
0xa3,0x61,0x38,0xc4,0x9e,0x7f,0xc0,0x06,0x4c,0x0b,0xec,0xae,
0xbc,0xf3,0xc8,0xa0,0x20,0x76,0xf0,0x51,0xf9,0xc2,0xfe,0x01,
0xdc,0x31,0xf6,0xdf,0xe7,0xe6,0xf9,0x2c,0x6f,0x93,0x3d,0x3e,
0x89,0x73,0x6f,0xc9,0x5f,0xad,0x60,0x1f,0x48,0x81,0x09,0xd6,
0xab,0x2b,0xcf,0xb5,0x9a,0x70,0x3d,0x04,0x0f,0x59,0xcc,0xc2,
0x7f,0x95,0x9a,0x3e,0xd5,0xb7,0x8b,0x7e,0xb0,0x6e,0xcc,0xee,
0xfc,0xe5,0x17,0xa2,0x2c,0xf1,0xf6,0x1f,0xaf,0xf7,0x05,0x2c,
0x15,0xea,0xae,0x26,0x8b,0xde,0xb8,0x53,0xf7,0x9a,0x4f,0x09,
0x2a,0x27,0x9b,0x78,0x1a,0xaf,0x22,0xf5,0xfa,0x22,0xe8,0x75,
0x39,0x79,0x46,0x8f,0xc2,0x40,0xd3,0x0f,0xae,0xad,0xfd,0x84,
0x03,0x20,0x30,0xb9,0x65,0xf4,0xab,0x44,0x8b,0x57,0xa6,0xbb,
0x44,0xa8,0x86,0xa1,0x4f,0xad,0x94,0x31,0x18,0xdd,0x26,0x3b,
0x71,0x39,0x8b,0x22,0x3f,0xcc,0x2f,0x65,0x3f,0x87,0xee,0xfa,
0xaf,0x4a,0x91,0x93,
};
static const byte kat_rsa2048_msg[35] = {
0x77,0x6f,0x6c,0x66,0x43,0x72,0x79,0x70,0x74,0x20,0x52,0x53,
0x41,0x20,0x76,0x65,0x72,0x69,0x66,0x79,0x20,0x4b,0x41,0x54,
0x20,0x6f,0x6e,0x20,0x54,0x49,0x20,0x43,0x32,0x38,0x78,
};
static const byte kat_rsa2048_digestinfo[51] = {
0x30,0x31,0x30,0x0d,0x06,0x09,0x60,0x86,0x48,0x01,0x65,0x03,
0x04,0x02,0x01,0x05,0x00,0x04,0x20,0x55,0x1e,0x09,0xfe,0xd6,
0x65,0x76,0x79,0xbd,0xe6,0x13,0xbb,0xa8,0x7e,0xf4,0xe9,0x3c,
0x89,0x57,0x97,0x0c,0x04,0x12,0x5f,0xf7,0x47,0x59,0x5e,0x6b,
0x62,0xac,0xc0,
};

#endif /* RSA2048_KAT_H */
120 changes: 120 additions & 0 deletions embedded/ti-c2000-f28p55x/Header/rsa2048_priv.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
/* RSA-2048 raw private components (openssl-generated) - TEST ONLY. */
#ifndef RSA2048_PRIV_RAW_H
#define RSA2048_PRIV_RAW_H
static const byte kat_rsapriv_n[256] = {
0xb7,0x5a,0x6e,0x91,0x67,0x11,0xf4,0xdd,0x1b,0x64,0x91,0x92,
0x49,0x75,0x1a,0xff,0x4b,0x1d,0x94,0xb7,0x06,0x41,0x47,0x75,
0x94,0x8d,0x70,0xf4,0xa1,0x21,0x7d,0xf6,0xce,0x80,0xfc,0xac,
0x4b,0x16,0xaf,0xba,0x6f,0x9d,0x69,0x27,0x4e,0x50,0x94,0x62,
0x68,0xa5,0xc4,0x6a,0x39,0x0f,0x1d,0x4d,0xa3,0x56,0xac,0x72,
0xed,0xa0,0x30,0x4c,0x77,0xb0,0x7f,0x0d,0x4b,0x3b,0x4a,0xbe,
0x0b,0x84,0x29,0x2b,0xce,0xfb,0x97,0x98,0xba,0x05,0x2c,0x0f,
0x17,0x85,0x90,0x82,0x1d,0xb5,0x6a,0x42,0x06,0x02,0xf9,0x0b,
0x28,0x98,0xe6,0xc0,0xf4,0x83,0xd7,0xd2,0x62,0x89,0xa6,0x75,
0xce,0x0c,0x5c,0xe0,0x02,0xc5,0xd5,0x21,0x25,0xf8,0x03,0xd6,
0xe1,0x6c,0xac,0x20,0x00,0x48,0xc9,0x64,0x10,0x8f,0xf3,0x67,
0xbd,0xc7,0x01,0xbf,0x0d,0xbb,0x95,0xd9,0x85,0xa4,0xff,0xdc,
0xbc,0x23,0x35,0x4e,0xdd,0x81,0x57,0xcf,0xdf,0xf8,0xa1,0x2b,
0x62,0xb7,0x2d,0x06,0x66,0x01,0x0b,0x89,0xe2,0x25,0x96,0x36,
0xcf,0x38,0x26,0xd2,0x17,0x06,0xc8,0x42,0x55,0xcf,0xa0,0x55,
0xd2,0x53,0xc9,0x6d,0x14,0x4e,0x35,0x19,0x3b,0x43,0x2d,0x9d,
0x19,0x13,0xa2,0x27,0x57,0x2e,0x06,0xbc,0x48,0x21,0x32,0x3e,
0x1f,0x94,0x96,0xf5,0x30,0x97,0x11,0x8b,0xe2,0x1a,0xc8,0x42,
0x00,0x0a,0x7e,0xee,0xfc,0xc3,0x60,0x5c,0xe5,0x8a,0x13,0x4b,
0x3e,0xb0,0x45,0xc7,0x54,0x09,0x80,0x6c,0xea,0x6d,0x66,0xda,
0xad,0x91,0x51,0x1e,0x2d,0xf8,0xe5,0x09,0x5c,0x48,0x5f,0x9f,
0x12,0x49,0x02,0x41,
};
static const byte kat_rsapriv_e[3] = {
0x01,0x00,0x01,
};
static const byte kat_rsapriv_d[256] = {
0x06,0xf1,0xd1,0xa8,0xc7,0xb4,0xde,0x27,0xa6,0xc3,0x35,0x21,
0x4b,0x8f,0x78,0x2d,0x8d,0xb8,0x89,0xda,0xb1,0xcd,0xb4,0xa9,
0x6f,0x2e,0x39,0x46,0x46,0xb9,0x18,0x46,0x8a,0x15,0x48,0x1c,
0xb5,0x7e,0x5f,0x3b,0x0a,0x41,0xb5,0xcb,0x23,0x93,0xf9,0x3e,
0xcd,0xf4,0x63,0x5f,0x5b,0x98,0x67,0x35,0x7a,0xd7,0x8c,0x52,
0x11,0x0e,0x85,0x6d,0xcc,0x05,0xbf,0x16,0x2f,0x90,0x88,0x18,
0xf1,0x22,0x39,0x15,0xfb,0xf1,0xbb,0x10,0xf1,0x90,0xc3,0x15,
0xb2,0x40,0x20,0x94,0x51,0x10,0x3f,0x3d,0x4f,0x71,0x7a,0xe1,
0xd1,0x90,0x93,0x02,0xe1,0x70,0x01,0xf3,0x69,0xc0,0x89,0x71,
0xc2,0x53,0x65,0x0c,0x26,0x06,0xbc,0xb7,0x13,0xf3,0x54,0x1f,
0xe6,0x2b,0x61,0xcc,0x97,0x7e,0x2a,0x44,0x83,0xa8,0xe0,0x02,
0x89,0x30,0x60,0x69,0x94,0x27,0x78,0xb3,0xf4,0x00,0x4b,0x48,
0x2a,0x3c,0xd0,0x7b,0x00,0xea,0xd6,0x8b,0x2b,0x5c,0xe5,0x07,
0x2f,0x06,0x70,0xf8,0x09,0x56,0xf9,0xb1,0x3c,0x84,0xcd,0xeb,
0xf0,0xa4,0x9e,0x4c,0x24,0x72,0x41,0xb0,0xf3,0x81,0x6e,0x81,
0xd2,0x31,0xc4,0x25,0x3f,0x60,0x72,0x53,0x4a,0xae,0x55,0xcb,
0x88,0x3d,0xcc,0x89,0xb9,0x6f,0x11,0x91,0xa7,0x20,0x63,0x22,
0x44,0xd9,0x9a,0xec,0x58,0x50,0xdc,0x7d,0x27,0xde,0x30,0xa4,
0x0d,0x23,0x2f,0x6f,0x8a,0xcc,0x4d,0x01,0xed,0x93,0x4d,0xeb,
0x1f,0x91,0xec,0xec,0x9d,0xfe,0x0f,0xc3,0x50,0x55,0xbb,0x72,
0x12,0xe7,0xff,0x81,0x94,0x6b,0x6e,0xd8,0xeb,0xa3,0xee,0xdb,
0xa6,0xb7,0xef,0x71,
};
static const byte kat_rsapriv_u[128] = {
0x85,0x96,0x06,0xc4,0x31,0x12,0xb4,0x0d,0x8b,0x37,0x78,0x7a,
0x11,0x31,0xc6,0x9e,0x57,0x66,0x9b,0x18,0xc2,0xf6,0x87,0xd0,
0x14,0x42,0x17,0x75,0x64,0x21,0xcf,0x76,0x7c,0x82,0x84,0x66,
0xbd,0x1d,0x4f,0x65,0x66,0x84,0xa9,0x74,0xd1,0x49,0x32,0xbc,
0x4c,0x33,0xed,0xb4,0x50,0xdf,0x38,0x3e,0x0b,0xa9,0x5c,0xf4,
0x5f,0x9f,0x6d,0xfb,0x8c,0x6b,0x8c,0x52,0x6e,0xbb,0x9a,0xcd,
0x1c,0xf9,0x8f,0x80,0x6f,0x4d,0x62,0xd3,0xb0,0xc7,0x57,0xde,
0x7c,0xf2,0x56,0xeb,0x12,0x65,0xfc,0x32,0xe0,0x14,0x3e,0x01,
0xf2,0xcf,0xc1,0x46,0x20,0x8a,0x7e,0xc2,0xeb,0x36,0x23,0x6a,
0xa3,0x51,0x68,0xb9,0xef,0x6c,0x37,0x86,0x51,0xa5,0x4d,0x0f,
0xbf,0x1d,0x98,0xcc,0xa5,0x5b,0x52,0x91,
};
static const byte kat_rsapriv_p[128] = {
0xf9,0xd7,0x4c,0xb7,0xe5,0xfb,0x52,0x2d,0x03,0x15,0x75,0x09,
0xf9,0x9e,0xe4,0xb9,0x2c,0x2d,0x9f,0x71,0xe8,0x69,0x77,0x04,
0xd4,0x5e,0x78,0x68,0x21,0x90,0xc9,0x0d,0x30,0xc1,0xb2,0x62,
0x26,0x53,0x68,0x8f,0xb6,0x72,0x78,0xf3,0xdf,0x66,0xac,0x55,
0xe4,0x5a,0xb4,0x4d,0xf0,0x62,0x35,0xe8,0x70,0x16,0x2b,0x5e,
0x0e,0x00,0x94,0x38,0x58,0x74,0x31,0x6d,0xad,0x10,0x34,0x04,
0x51,0xaf,0xa1,0x45,0x53,0x13,0x45,0x9a,0x2f,0xbf,0x42,0x8d,
0xea,0x4e,0x92,0xde,0x83,0xad,0xa6,0x06,0xb6,0x84,0x13,0x79,
0xee,0x35,0x40,0x5f,0xf3,0xdc,0xd2,0xb0,0x26,0x60,0xec,0x7e,
0x75,0x85,0x8f,0xdb,0x2a,0x87,0xfb,0x1a,0xc2,0x01,0x24,0x6f,
0x4a,0x2c,0x22,0x37,0xa3,0x05,0x0f,0x39,
};
static const byte kat_rsapriv_q[128] = {
0xbb,0xdf,0x8a,0x4f,0x15,0x9b,0x4e,0x6c,0xac,0xd1,0xb7,0x5d,
0xa4,0x63,0x9e,0x25,0x98,0xe1,0xe3,0xf3,0xf7,0x67,0x80,0x0d,
0xe9,0x12,0x72,0xcd,0xb7,0x88,0x6b,0x17,0x85,0xd8,0x15,0x73,
0xed,0x37,0x96,0xd9,0x22,0x90,0x50,0x7b,0x0e,0x68,0xa2,0xb2,
0x2d,0xd0,0x66,0x23,0x9a,0xb8,0xca,0xec,0xac,0x80,0x42,0xe4,
0xb6,0x70,0x50,0xa5,0xbf,0x6d,0xad,0x0e,0x21,0xfa,0x3e,0x01,
0x3e,0x66,0x66,0xb2,0x84,0x11,0x56,0xee,0x04,0xf9,0x09,0x8b,
0x2b,0xb7,0x03,0x93,0x9e,0xae,0x6a,0xd7,0x7d,0xc6,0x3e,0x3e,
0x76,0x2f,0x91,0x69,0x6c,0x98,0xc4,0x96,0x1d,0xf0,0x2d,0x46,
0xb3,0xb5,0x5a,0x7c,0x64,0xfd,0xe5,0xb8,0x59,0x60,0x7b,0x3c,
0x17,0xbf,0x02,0x2b,0xf1,0xfa,0x03,0x49,
};
static const byte kat_rsapriv_dP[128] = {
0x9c,0xa9,0xb3,0xd2,0xb0,0xe4,0xa9,0xff,0xcd,0xaa,0x3b,0xcc,
0xb8,0x79,0x39,0x45,0x1f,0xfd,0xaf,0xb8,0x96,0x9a,0xe3,0x65,
0xe4,0xe1,0x24,0x31,0x6f,0xb2,0xc1,0x4f,0x83,0x1e,0x42,0x84,
0x27,0x32,0x30,0x23,0xc5,0xac,0xfc,0x49,0x37,0xf1,0xc2,0xe8,
0xcd,0x1b,0x4f,0x6a,0x7b,0xec,0xa9,0x8f,0x0a,0x11,0xec,0xb9,
0xba,0xa0,0x04,0x51,0x5c,0xad,0xe7,0x7c,0xb5,0x83,0xae,0x8a,
0x72,0xca,0x65,0x9e,0xf9,0xdb,0xe0,0xce,0x31,0x58,0x86,0x1c,
0x45,0x2b,0x66,0x0f,0x1f,0x94,0xd8,0xc1,0xe6,0xda,0xe4,0xf7,
0x95,0x36,0x51,0x1a,0x99,0xe9,0x03,0x38,0x2f,0xa8,0xa1,0x43,
0x1e,0xe0,0x54,0x77,0x82,0xb0,0xe7,0xf5,0x3c,0x67,0xc8,0xf7,
0xfc,0x13,0xb6,0x95,0x1a,0xa5,0x06,0x89,
};
static const byte kat_rsapriv_dQ[128] = {
0x6a,0x61,0x20,0x5a,0xb9,0x7c,0x50,0x42,0xde,0xf4,0x7c,0xe4,
0xac,0x31,0xb0,0x19,0xcf,0xe0,0x90,0x87,0xd3,0x1e,0x2a,0xf7,
0x35,0x73,0x39,0xc8,0x5c,0x55,0x05,0x76,0xb3,0x55,0xf0,0x87,
0xcc,0xd9,0x7e,0x34,0x03,0x0b,0x3e,0x56,0xff,0x88,0xa6,0x1f,
0x48,0x2b,0xc9,0xb9,0xfd,0x61,0x07,0x9e,0x4d,0xea,0xee,0x75,
0xbd,0x0c,0x09,0xce,0x60,0x7f,0x84,0xcf,0x0c,0xd4,0x3a,0x89,
0xcf,0xc0,0x82,0x04,0x31,0x1d,0xf4,0x60,0x20,0x36,0xb7,0x7d,
0xb3,0x4a,0x14,0xdf,0x60,0xa9,0x98,0x5b,0xde,0x9f,0x03,0x1d,
0xb1,0x24,0x2c,0x2d,0x4a,0xcd,0x91,0xfb,0x02,0x86,0xbd,0xcc,
0x5b,0xf3,0xa3,0x81,0xee,0x59,0x89,0xdb,0x01,0xd8,0xcc,0xce,
0xf1,0x0f,0x39,0xf6,0x92,0x34,0xa3,0xe9,
};
#endif
Loading