Help with ECDSA Verification in LPC55S28 Bootloader (32KB Size Limit)

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Help with ECDSA Verification in LPC55S28 Bootloader (32KB Size Limit)

919 Views
SegFault02
Contributor I

Hello NXP Community,

I'm developing a secure bootloader for the LPC55S28 and have run into a significant code size issue when implementing ECDSA signature verification.

Current Issue

My bootloader needs to verify ECDSA P-256 signatures, and it must fit within a 32KB flash region. When using mbedTLS for ECDSA verification (even with a minimal configuration that only enables ECDSA), my code size explodes from approximately 13KB to 56KB:

Spoiler
Name Run address Load address Size Type
.text 0x0 n/a 56412 section
mpi_mul_hlp 0x9ae2 n/a 6388 local function
ecp_mod_p256 0x839c n/a 2032 local function
shiftleft 0x2bd0 n/a 1792 local function
MultprecCiosMul521_ct 0x4fdc n/a 1772 local function
shiftright 0x2514 n/a 1724 local function
double_scalar_multiplication 0x3fb4 n/a 1580 global function
MultprecCiosMul_ct 0x1b4c n/a 1444 local function
mbedtls_mpi_div_mpi 0xb69c n/a 1316 global function
mbedtls_mpi_inv_mod 0xbdfa n/a 1090 global function
precompute_double_scalar_LUT16 0x3aac n/a 1084 local function
invert_mod_p384 0x4884 n/a 1062 local function
ecp_double_jac 0x7d6c n/a 972 local function
ecp_add_mixed 0xac8 n/a 912 local function
mbedtls_ecp_muladd_restartable 0xea8 n/a 868 global function
Jac_addition 0x33ec n/a 776 global function
StrFormatPrintf 0x735c n/a 700 global function
invert_mod_p521 0x4d14 n/a 616 local function
invert_mod_p256 0x45e0 n/a 576 local function
verify_ecdsa_signature 0x4a4 n/a 544 local function
Jac_add_affine 0x36f4 n/a 536 global function
ecdsa_verify_restartable 0x12c0 n/a 504 local function
USART_Init 0x6404 n/a 460 global function
mbedtls_mpi_gcd 0xbc4a n/a 432 global function
CASPER_montadd 0x21f0 n/a 428 local function
hashcrypt_sha_process_message_data 0x5ddc n/a 420 local function
Jac_double 0x390c n/a 416 global function
USART_SetBaudRate 0x6650 n/a 396 global function
mbedtls_mpi_mul_mpi 0xb3d6 n/a 382 global function
CLOCK_SetFLASHAccessCyclesForFreq 0x5888 n/a 380 global function
__aeabi_uldivmod 0xd048 n/a 372 global function
mbedtls_mpi_add_abs 0x96ba n/a 366 global function
read_and_verify_toc 0x6c4 n/a 364 local function
CASPER_ECC_SECP521R1_MulAdd 0x19f4 n/a 344 global function
CASPER_half 0x239c n/a 340 local function
lowpower_set_system_voltage 0x6024 n/a 340 local function
mbedtls_mpi_shift_l 0x91bc n/a 330 global function
mbedtls_mpi_sub_abs 0x98ba n/a 326 global function
CASPER_ECC_SECP256R1_MulAdd 0x179c n/a 324 global function
DbgConsole_Init 0x2b0 n/a 312 global function
mbedtls_mpi_shift_r 0x9306 n/a 310 global function
mbedtls_mpi_cmp_mpi 0x9540 n/a 310 global function
__Vectors 0x0 n/a 304 global object
g_pfnVectors 0x0 n/a 304 global object
CASPER_ECC_SECP384R1_MulAdd 0x18e0 n/a 276 global function
HAL_UartInitCommon 0x68cc n/a 272 local function
mbedtls_mpi_cmp_abs 0x943c n/a 260 global function
CASPER_montsub 0x20f0 n/a 256 local function
CASPER_MEMCPY 0x14e0 n/a 252 global function
fseek 0x6d50 n/a 248 global function
ecp_normalize_jac 0x7c78 n/a 244 local function
hashcrypt_sha_finalize 0xc5e2 n/a 238 local function
lowpower_set_dcdc_power_profile 0x6178 n/a 236 local function
mbedtls_mpi_copy 0x8cf6 n/a 210 global function
ecp_modp 0x9f8 n/a 208 local function
HASHCRYPT_SHA_Update 0xc7ac n/a 208 global function
precompute_double_scalar_LUT4 0x3ee8 n/a 204 local function
mbedtls_ecp_point_read_binary 0x930 n/a 200 global function
malloc 0x6b2c n/a 200 global function
mbedtls_mpi_write_binary 0x90f4 n/a 200 global function
ConvertRadixNumToString 0x7208 n/a 194 local function
HASHCRYPT_SHA_Finish 0xc87c n/a 184 global function
mbedtls_int_div_int 0xb5e8 n/a 180 local function
mbedtls_ecp_fix_negative 0x82f0 n/a 172 local function
lowpower_set_voltage_for_process 0xc934 n/a 170 local function
Jac_toAffine 0x3348 n/a 164 global function
HASHCRYPT_DriverIRQHandler 0x5f80 n/a 164 global function
ecp_group_load 0x81c2 n/a 162 local function
CLOCK_AttachClk 0x56e8 n/a 160 global function
add_sub_mpi 0x9a00 n/a 156 local function
mbedtls_ecp_group_free 0x7966 n/a 152 global function
lowpower_get_part_process_corner 0x6264 n/a 148 local function
mbedtls_mpi_mul_int 0xb554 n/a 148 global function
derive_mpi 0xc23c n/a 148 local function
mpi_sub_hlp 0x9828 n/a 146 local function
casper_select 0x15dc n/a 144 local function
hashcrypt_get_data 0xc454 n/a 144 local function
USART_WriteBlocking 0x67dc n/a 140 global function
PrintGetPrecision 0x6fba n/a 140 local function
mbedtls_mpi_mod_mpi 0xbbc0 n/a 138 global function
mbedtls_ecp_group_load 0x1238 n/a 136 global function
main 0x8ac n/a 132 global function
mbedtls_mpi_grow 0x8c1c n/a 132 global function
CLOCK_SetClkDiv 0x5788 n/a 128 global function
CLOCK_SetupFROClocking 0x5808 n/a 128 global function
USART_GetDefaultConfig 0x65d0 n/a 128 global function
mbedtls_ecp_group_init 0x7888 n/a 126 global function
jump_to_application 0x830 n/a 124 local function
mbedtls_mpi_read_binary 0x907a n/a 122 global function
CASPER_ecc_init 0x166c n/a 120 global function
multiply_casper 0x32d0 n/a 120 local function
_initio 0x6bf4 n/a 120 global function
FLEXCOMM_SetPeriph 0xc3e0 n/a 116 local function
CASPER_ECC_equal 0x16e4 n/a 112 global function
_Cwritebuf 0x6ca8 n/a 108 global function
hashcrypt_sha_one_block 0xc576 n/a 108 local function
PrintGetWidth 0x6f50 n/a 106 local function
DbgConsole_Vprintf 0x3e8 n/a 104 global function
toMontgomery_ECC_P384 0x4cac n/a 104 local function
mbedtls_mpi_bitlen 0x8f30 n/a 104 global function
_fdopen 0xcee2 n/a 104 global function
DbgConsole_PrintCallback 0x6ebe n/a 102 local function
mbedtls_mpi_lsb 0x8e88 n/a 102 global function
mpi_bigendian_to_host 0x9014 n/a 102 local function
ResetISR 0x180 n/a 100 global function
toMontgomery_ECC_P256 0x4820 n/a 100 local function
SystemInit 0x6868 n/a 100 weak function
HAL_UartSendBlocking 0x69dc n/a 100 global function
FLEXCOMM_PeripheralIsPresent 0xc37c n/a 100 local function
mbedtls_ecp_copy 0x7a48 n/a 98 global function
toMontgomery_ECC_P521 0x4f7c n/a 96 local function
RESET_ClearPeripheralReset 0x63a4 n/a 96 global function
mbedtls_mpi_sub_mod 0x7b64 n/a 96 local function
SerialManager_Init 0xcb56 n/a 96 global function
SerialManager_OpenReadHandle 0xcc06 n/a 96 global function
reverse_array 0x8138 n/a 94 local function
HASHCRYPT_SHA 0xc6fe n/a 94 global function
FLEXCOMM0_DriverIRQHandler 0x5aa0 n/a 92 global function
FLEXCOMM1_DriverIRQHandler 0x5afc n/a 92 global function
FLEXCOMM2_DriverIRQHandler 0x5b58 n/a 92 global function
FLEXCOMM3_DriverIRQHandler 0x5bb4 n/a 92 global function
FLEXCOMM4_DriverIRQHandler 0x5c10 n/a 92 global function
FLEXCOMM5_DriverIRQHandler 0x5c6c n/a 92 global function
FLEXCOMM6_DriverIRQHandler 0x5cc8 n/a 92 global function
FLEXCOMM7_DriverIRQHandler 0x5d24 n/a 92 global function
FLEXCOMM8_DriverIRQHandler 0x5d80 n/a 92 global function
RESET_SetPeripheralReset 0x6348 n/a 92 global function
mbedtls_mpi_add_mod 0x7bc4 n/a 92 local function
mbedtls_mpi_lset 0x8dea n/a 92 global function
BOARD_BootClockFROHF96M 0x6a98 n/a 88 global function
mbedtls_mpi_shift_l_mod 0x7c20 n/a 88 local function
fclose 0xcf9c n/a 88 global function
mbedtls_mpi_resize_clear 0x8ca0 n/a 86 local function
DbgConsole_SendDataReliable 0x25c n/a 84 global function
calculate_sha256 0x450 n/a 84 local function
mbedtls_ecp_set_zero 0x7aaa n/a 82 global function
_fflush 0xcf4a n/a 82 global function
ecp_add 0xe58 n/a 80 global function
FLEXCOMM_Init 0x5a50 n/a 80 global function
POWER_SetVoltageForFreq 0x62f8 n/a 80 global function
HASHCRYPT_SHA_Init 0xc75c n/a 80 global function
SerialManager_OpenWriteHandle 0xcbb6 n/a 80 global function
calloc 0xcdc6 n/a 80 global function
strlen 0xce54 n/a 78 global function
FLEXCOMM_GetInstance 0x5a04 n/a 76 global function
mbedtls_mpi_free 0x8bd0 n/a 76 global function
CASPER_ECC_equal_to_zero 0x1754 n/a 72 global function
mpi_uint_bigendian_to_host_c 0x8fb4 n/a 72 local function
add32 0x8264 n/a 70 local function
sub32 0x82aa n/a 70 local function
ftell 0x6e48 n/a 68 global function
PrintOutputdifFobpu 0x70aa n/a 68 local function
PrintOutputxX 0x70ee n/a 68 local function
mbedtls_mpi_cmp_int 0x9676 n/a 68 global function
SerialManager_Write 0xcb12 n/a 68 local function
mbedtls_mpi_get_bit 0x8e46 n/a 66 global function
mbedtls_clz 0x8eee n/a 66 local function
PrintGetRadixFromobpu 0x71c8 n/a 64 local function
mbedtls_mpi_mul_mod 0x7b24 n/a 64 local function
_deferredlazyseek 0xcea2 n/a 64 global function
_do_fflush 0xd008 n/a 64 global function
toc_verification_key 0xda84 n/a 64 local object
PrintFilterLengthFlag 0x718a n/a 62 local function
Serial_UartInit 0xcc86 n/a 62 global function
setvbuf 0xce16 n/a 62 global function
BOARD_InitDEBUG_UARTPins 0x6af0 n/a 60 global function
_sbrk 0x6c6c n/a 60 global function
fflush 0x6d14 n/a 60 global function
hashcrypt_sha_check_input_args 0xc53a n/a 60 local function
BOARD_InitDebugConsole 0x6a40 n/a 56 global function
PrintIsobpu 0x7046 n/a 56 local function
USART_EnableContinuousSCLK 0xc9fa n/a 56 local function
SerialManager_StartWriting 0xcada n/a 56 local function
Serial_UartWrite 0xccc4 n/a 56 global function
HardFault_Handler 0x77f8 n/a 54 global function
HAL_UartInit 0xca62 n/a 54 global function
mbedtls_ecp_point_free 0x7932 n/a 52 global function
mbedtls_ecp_keypair_free_o 0x79fe n/a 52 global function
__aeabi_lowlevel_memset 0xd1f2 n/a 50 global function
mbedtls_ecdsa_verify 0xc2e8 n/a 48 global function
CLOCK_EnableClock 0xc34c n/a 48 local function
free 0xcd96 n/a 48 global function
mbedtls_ecp_get_type 0x782e n/a 46 global function
IOCON_PinMuxSet 0xcd46 n/a 46 local function
__assertion_failed 0x230 n/a 44 global function
ecp_mpi_set1 0x120c n/a 44 local function
DbgConsole_Printf 0x6f24 n/a 44 global function
PrintIsdi 0x707e n/a 44 local function
PrintIsfF 0x7132 n/a 44 local function
PrintIsxX 0x715e n/a 44 local function
mbedtls_ecp_point_init 0x785c n/a 44 global function
mbedtls_ecp_keypair_init 0x7906 n/a 44 global function
ecp_mpi_load 0x8196 n/a 44 local function
hashcrypt_engine_init 0xc4e4 n/a 44 local function
hashcrypt_sha_check_input_alg 0xc510 n/a 42 local function
__aeabi_memcpy4 0xd1c8 n/a 42 global function
__aeabi_memcpy8 0xd1c8 n/a 42 global function
mbedtls_platform_zeroize 0x14b8 n/a 40 global function
mbedtls_ecp_is_zero 0x7afc n/a 40 global function
StrFormatExaminedi 0x72ca n/a 38 local function
StrFormatExaminexX 0x72f0 n/a 38 local function
StrFormatExamineobpu 0x7316 n/a 38 local function
mbedtls_mpi_init 0x8baa n/a 38 global function
casper_get_word 0x24f0 n/a 36 local function
mbedtls_mpi_sub_mpi 0x9abe n/a 36 global function
s_flexcommBaseAddrs 0xdbd8 n/a 36 local object
s_flexcommResets 0xdc10 n/a 36 local object
mpi_sint_abs 0x8dc8 n/a 34 local function
mbedtls_mpi_add_mpi 0x9a9c n/a 34 global function
HAL_UartGetStatus 0xca40 n/a 34 local function
DisableGlobalIRQ 0xca98 n/a 34 local function
POWER_DisablePD 0x56c8 n/a 32 local function
ConvertPrecisionWidthToLength 0x733c n/a 32 local function
EnableGlobalIRQ 0xcaba n/a 32 local function
SerialManager_WriteBlocking 0xcc66 n/a 32 global function
secp256r1_p 0xdac4 n/a 32 local object
secp256r1_a 0xdae4 n/a 32 local object
secp256r1_b 0xdb04 n/a 32 local object
secp256r1_gx 0xdb24 n/a 32 local object
secp256r1_gy 0xdb44 n/a 32 local object
secp256r1_n 0xdb64 n/a 32 local object
s_UsartAdapterBase 0xdc34 n/a 32 local object
data_init 0x1e8 n/a 30 global function
mbedtls_mpi_zeroize 0x8b8c n/a 30 local function
mbedtls_ecdsa_free 0xc32e n/a 30 global function
mbedtls_mpi_size 0x8f98 n/a 28 global function
RESET_PeripheralReset 0xc9de n/a 28 global function
fsl_assert_hook 0x6ea4 n/a 26 weak function
__check_heap_overflow 0x6e8c n/a 24 global function
mpi_uint_bigendian_to_host 0x8ffc n/a 24 local function
mbedtls_ecdsa_can_do 0xc2d0 n/a 24 global function
hashcrypt_save_running_hash 0xc6d0 n/a 24 local function
mbedtls_ecp_keypair_free 0x7a32 n/a 22 global function
mbedtls_ecdsa_init 0xc318 n/a 22 global function
hashcrypt_restore_running_hash 0xc6e8 n/a 22 local function
remove 0xcff4 n/a 20 global function
bss_init 0x206 n/a 18 global function
s_flexcommClocks 0xdbfc n/a 18 local object
SystemInitHook 0xca32 n/a 14 weak function
BOARD_InitPeripherals 0xccfc n/a 14 global function
__main 0xcd80 n/a 14 global function
BOARD_InitBootPeripherals 0xcd0a n/a 12 global function
BOARD_InitBootPins 0xcd74 n/a 12 global function
__aeabi_memcpy 0xd1be n/a 10 global function

As far as I know, the CASPER  can't perform ECDSA verification on its own - it seems to require mbedTLS as a wrapper, which brings in all the additional code.

I've deactivated almost everything in the ksdk_mbedtls_config.h file.

Questions

  1. Is there a way to use the CASPER hardware directly for ECDSA verification without the mbedTLS overhead?
  2. Are there any ROM-based cryptographic functions in the LPC55S28 that could handle ECDSA verification?
  3. Does anyone have a minimal implementation of ECDSA P-256 verification for the LPC55S28 that could fit within my 32KB constraint?
  4. Are there alternatives to mbedTLS with a smaller footprint?
0 Kudos
Reply
1 Reply

123 Views
Alice_Yang
NXP TechSupport
NXP TechSupport
This ticket was handled via email due to an issue with the community platform at that time.
0 Kudos
Reply
%3CLINGO-SUB%20id%3D%22lingo-sub-2065738%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EHelp%20with%20ECDSA%20Verification%20in%20LPC55S28%20Bootloader%20(32KB%20Size%20Limit)%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2065738%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%20class%3D%22%22%3EHello%20NXP%20Community%2C%3C%2FP%3E%3CP%20class%3D%22%22%3EI'm%20developing%20a%20secure%20bootloader%20for%20the%20LPC55S28%20and%20have%20run%20into%20a%20significant%20code%20size%20issue%20when%20implementing%20ECDSA%20signature%20verification.%3C%2FP%3E%3CH3%20id%3D%22toc-hId-1946120992%22%20id%3D%22toc-hId-2033974617%22%3ECurrent%20Issue%3C%2FH3%3E%3CP%20class%3D%22%22%3EMy%20bootloader%20needs%20to%20verify%20ECDSA%20P-256%20signatures%2C%20and%20it%20must%20fit%20within%20a%2032KB%20flash%20region.%20When%20using%20mbedTLS%20for%20ECDSA%20verification%20(even%20with%20a%20minimal%20configuration%20that%20only%20enables%20ECDSA)%2C%20my%20code%20size%20explodes%20from%20approximately%2013KB%20to%2056KB%3A%3C%2FP%3E%3CDIV%20class%3D%22lia-spoiler-container%22%3E%3CA%20class%3D%22lia-spoiler-link%22%20href%3D%22%23%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%20target%3D%22_blank%22%3ESpoiler%3C%2FA%3E%3CNOSCRIPT%3E%20(Highlight%20to%20read)%3C%2FNOSCRIPT%3E%3CDIV%20class%3D%22lia-spoiler-border%22%3E%3CDIV%20class%3D%22lia-spoiler-content%22%3EName%20Run%20address%20Load%20address%20Size%20Type%3CBR%20%2F%3E.text%200x0%20n%2Fa%2056412%20section%3CBR%20%2F%3Empi_mul_hlp%200x9ae2%20n%2Fa%206388%20local%20function%3CBR%20%2F%3Eecp_mod_p256%200x839c%20n%2Fa%202032%20local%20function%3CBR%20%2F%3Eshiftleft%200x2bd0%20n%2Fa%201792%20local%20function%3CBR%20%2F%3EMultprecCiosMul521_ct%200x4fdc%20n%2Fa%201772%20local%20function%3CBR%20%2F%3Eshiftright%200x2514%20n%2Fa%201724%20local%20function%3CBR%20%2F%3Edouble_scalar_multiplication%200x3fb4%20n%2Fa%201580%20global%20function%3CBR%20%2F%3EMultprecCiosMul_ct%200x1b4c%20n%2Fa%201444%20local%20function%3CBR%20%2F%3Embedtls_mpi_div_mpi%200xb69c%20n%2Fa%201316%20global%20function%3CBR%20%2F%3Embedtls_mpi_inv_mod%200xbdfa%20n%2Fa%201090%20global%20function%3CBR%20%2F%3Eprecompute_double_scalar_LUT16%200x3aac%20n%2Fa%201084%20local%20function%3CBR%20%2F%3Einvert_mod_p384%200x4884%20n%2Fa%201062%20local%20function%3CBR%20%2F%3Eecp_double_jac%200x7d6c%20n%2Fa%20972%20local%20function%3CBR%20%2F%3Eecp_add_mixed%200xac8%20n%2Fa%20912%20local%20function%3CBR%20%2F%3Embedtls_ecp_muladd_restartable%200xea8%20n%2Fa%20868%20global%20function%3CBR%20%2F%3EJac_addition%200x33ec%20n%2Fa%20776%20global%20function%3CBR%20%2F%3EStrFormatPrintf%200x735c%20n%2Fa%20700%20global%20function%3CBR%20%2F%3Einvert_mod_p521%200x4d14%20n%2Fa%20616%20local%20function%3CBR%20%2F%3Einvert_mod_p256%200x45e0%20n%2Fa%20576%20local%20function%3CBR%20%2F%3Everify_ecdsa_signature%200x4a4%20n%2Fa%20544%20local%20function%3CBR%20%2F%3EJac_add_affine%200x36f4%20n%2Fa%20536%20global%20function%3CBR%20%2F%3Eecdsa_verify_restartable%200x12c0%20n%2Fa%20504%20local%20function%3CBR%20%2F%3EUSART_Init%200x6404%20n%2Fa%20460%20global%20function%3CBR%20%2F%3Embedtls_mpi_gcd%200xbc4a%20n%2Fa%20432%20global%20function%3CBR%20%2F%3ECASPER_montadd%200x21f0%20n%2Fa%20428%20local%20function%3CBR%20%2F%3Ehashcrypt_sha_process_message_data%200x5ddc%20n%2Fa%20420%20local%20function%3CBR%20%2F%3EJac_double%200x390c%20n%2Fa%20416%20global%20function%3CBR%20%2F%3EUSART_SetBaudRate%200x6650%20n%2Fa%20396%20global%20function%3CBR%20%2F%3Embedtls_mpi_mul_mpi%200xb3d6%20n%2Fa%20382%20global%20function%3CBR%20%2F%3ECLOCK_SetFLASHAccessCyclesForFreq%200x5888%20n%2Fa%20380%20global%20function%3CBR%20%2F%3E__aeabi_uldivmod%200xd048%20n%2Fa%20372%20global%20function%3CBR%20%2F%3Embedtls_mpi_add_abs%200x96ba%20n%2Fa%20366%20global%20function%3CBR%20%2F%3Eread_and_verify_toc%200x6c4%20n%2Fa%20364%20local%20function%3CBR%20%2F%3ECASPER_ECC_SECP521R1_MulAdd%200x19f4%20n%2Fa%20344%20global%20function%3CBR%20%2F%3ECASPER_half%200x239c%20n%2Fa%20340%20local%20function%3CBR%20%2F%3Elowpower_set_system_voltage%200x6024%20n%2Fa%20340%20local%20function%3CBR%20%2F%3Embedtls_mpi_shift_l%200x91bc%20n%2Fa%20330%20global%20function%3CBR%20%2F%3Embedtls_mpi_sub_abs%200x98ba%20n%2Fa%20326%20global%20function%3CBR%20%2F%3ECASPER_ECC_SECP256R1_MulAdd%200x179c%20n%2Fa%20324%20global%20function%3CBR%20%2F%3EDbgConsole_Init%200x2b0%20n%2Fa%20312%20global%20function%3CBR%20%2F%3Embedtls_mpi_shift_r%200x9306%20n%2Fa%20310%20global%20function%3CBR%20%2F%3Embedtls_mpi_cmp_mpi%200x9540%20n%2Fa%20310%20global%20function%3CBR%20%2F%3E__Vectors%200x0%20n%2Fa%20304%20global%20object%3CBR%20%2F%3Eg_pfnVectors%200x0%20n%2Fa%20304%20global%20object%3CBR%20%2F%3ECASPER_ECC_SECP384R1_MulAdd%200x18e0%20n%2Fa%20276%20global%20function%3CBR%20%2F%3EHAL_UartInitCommon%200x68cc%20n%2Fa%20272%20local%20function%3CBR%20%2F%3Embedtls_mpi_cmp_abs%200x943c%20n%2Fa%20260%20global%20function%3CBR%20%2F%3ECASPER_montsub%200x20f0%20n%2Fa%20256%20local%20function%3CBR%20%2F%3ECASPER_MEMCPY%200x14e0%20n%2Fa%20252%20global%20function%3CBR%20%2F%3Efseek%200x6d50%20n%2Fa%20248%20global%20function%3CBR%20%2F%3Eecp_normalize_jac%200x7c78%20n%2Fa%20244%20local%20function%3CBR%20%2F%3Ehashcrypt_sha_finalize%200xc5e2%20n%2Fa%20238%20local%20function%3CBR%20%2F%3Elowpower_set_dcdc_power_profile%200x6178%20n%2Fa%20236%20local%20function%3CBR%20%2F%3Embedtls_mpi_copy%200x8cf6%20n%2Fa%20210%20global%20function%3CBR%20%2F%3Eecp_modp%200x9f8%20n%2Fa%20208%20local%20function%3CBR%20%2F%3EHASHCRYPT_SHA_Update%200xc7ac%20n%2Fa%20208%20global%20function%3CBR%20%2F%3Eprecompute_double_scalar_LUT4%200x3ee8%20n%2Fa%20204%20local%20function%3CBR%20%2F%3Embedtls_ecp_point_read_binary%200x930%20n%2Fa%20200%20global%20function%3CBR%20%2F%3Emalloc%200x6b2c%20n%2Fa%20200%20global%20function%3CBR%20%2F%3Embedtls_mpi_write_binary%200x90f4%20n%2Fa%20200%20global%20function%3CBR%20%2F%3EConvertRadixNumToString%200x7208%20n%2Fa%20194%20local%20function%3CBR%20%2F%3EHASHCRYPT_SHA_Finish%200xc87c%20n%2Fa%20184%20global%20function%3CBR%20%2F%3Embedtls_int_div_int%200xb5e8%20n%2Fa%20180%20local%20function%3CBR%20%2F%3Embedtls_ecp_fix_negative%200x82f0%20n%2Fa%20172%20local%20function%3CBR%20%2F%3Elowpower_set_voltage_for_process%200xc934%20n%2Fa%20170%20local%20function%3CBR%20%2F%3EJac_toAffine%200x3348%20n%2Fa%20164%20global%20function%3CBR%20%2F%3EHASHCRYPT_DriverIRQHandler%200x5f80%20n%2Fa%20164%20global%20function%3CBR%20%2F%3Eecp_group_load%200x81c2%20n%2Fa%20162%20local%20function%3CBR%20%2F%3ECLOCK_AttachClk%200x56e8%20n%2Fa%20160%20global%20function%3CBR%20%2F%3Eadd_sub_mpi%200x9a00%20n%2Fa%20156%20local%20function%3CBR%20%2F%3Embedtls_ecp_group_free%200x7966%20n%2Fa%20152%20global%20function%3CBR%20%2F%3Elowpower_get_part_process_corner%200x6264%20n%2Fa%20148%20local%20function%3CBR%20%2F%3Embedtls_mpi_mul_int%200xb554%20n%2Fa%20148%20global%20function%3CBR%20%2F%3Ederive_mpi%200xc23c%20n%2Fa%20148%20local%20function%3CBR%20%2F%3Empi_sub_hlp%200x9828%20n%2Fa%20146%20local%20function%3CBR%20%2F%3Ecasper_select%200x15dc%20n%2Fa%20144%20local%20function%3CBR%20%2F%3Ehashcrypt_get_data%200xc454%20n%2Fa%20144%20local%20function%3CBR%20%2F%3EUSART_WriteBlocking%200x67dc%20n%2Fa%20140%20global%20function%3CBR%20%2F%3EPrintGetPrecision%200x6fba%20n%2Fa%20140%20local%20function%3CBR%20%2F%3Embedtls_mpi_mod_mpi%200xbbc0%20n%2Fa%20138%20global%20function%3CBR%20%2F%3Embedtls_ecp_group_load%200x1238%20n%2Fa%20136%20global%20function%3CBR%20%2F%3Emain%200x8ac%20n%2Fa%20132%20global%20function%3CBR%20%2F%3Embedtls_mpi_grow%200x8c1c%20n%2Fa%20132%20global%20function%3CBR%20%2F%3ECLOCK_SetClkDiv%200x5788%20n%2Fa%20128%20global%20function%3CBR%20%2F%3ECLOCK_SetupFROClocking%200x5808%20n%2Fa%20128%20global%20function%3CBR%20%2F%3EUSART_GetDefaultConfig%200x65d0%20n%2Fa%20128%20global%20function%3CBR%20%2F%3Embedtls_ecp_group_init%200x7888%20n%2Fa%20126%20global%20function%3CBR%20%2F%3Ejump_to_application%200x830%20n%2Fa%20124%20local%20function%3CBR%20%2F%3Embedtls_mpi_read_binary%200x907a%20n%2Fa%20122%20global%20function%3CBR%20%2F%3ECASPER_ecc_init%200x166c%20n%2Fa%20120%20global%20function%3CBR%20%2F%3Emultiply_casper%200x32d0%20n%2Fa%20120%20local%20function%3CBR%20%2F%3E_initio%200x6bf4%20n%2Fa%20120%20global%20function%3CBR%20%2F%3EFLEXCOMM_SetPeriph%200xc3e0%20n%2Fa%20116%20local%20function%3CBR%20%2F%3ECASPER_ECC_equal%200x16e4%20n%2Fa%20112%20global%20function%3CBR%20%2F%3E_Cwritebuf%200x6ca8%20n%2Fa%20108%20global%20function%3CBR%20%2F%3Ehashcrypt_sha_one_block%200xc576%20n%2Fa%20108%20local%20function%3CBR%20%2F%3EPrintGetWidth%200x6f50%20n%2Fa%20106%20local%20function%3CBR%20%2F%3EDbgConsole_Vprintf%200x3e8%20n%2Fa%20104%20global%20function%3CBR%20%2F%3EtoMontgomery_ECC_P384%200x4cac%20n%2Fa%20104%20local%20function%3CBR%20%2F%3Embedtls_mpi_bitlen%200x8f30%20n%2Fa%20104%20global%20function%3CBR%20%2F%3E_fdopen%200xcee2%20n%2Fa%20104%20global%20function%3CBR%20%2F%3EDbgConsole_PrintCallback%200x6ebe%20n%2Fa%20102%20local%20function%3CBR%20%2F%3Embedtls_mpi_lsb%200x8e88%20n%2Fa%20102%20global%20function%3CBR%20%2F%3Empi_bigendian_to_host%200x9014%20n%2Fa%20102%20local%20function%3CBR%20%2F%3EResetISR%200x180%20n%2Fa%20100%20global%20function%3CBR%20%2F%3EtoMontgomery_ECC_P256%200x4820%20n%2Fa%20100%20local%20function%3CBR%20%2F%3ESystemInit%200x6868%20n%2Fa%20100%20weak%20function%3CBR%20%2F%3EHAL_UartSendBlocking%200x69dc%20n%2Fa%20100%20global%20function%3CBR%20%2F%3EFLEXCOMM_PeripheralIsPresent%200xc37c%20n%2Fa%20100%20local%20function%3CBR%20%2F%3Embedtls_ecp_copy%200x7a48%20n%2Fa%2098%20global%20function%3CBR%20%2F%3EtoMontgomery_ECC_P521%200x4f7c%20n%2Fa%2096%20local%20function%3CBR%20%2F%3ERESET_ClearPeripheralReset%200x63a4%20n%2Fa%2096%20global%20function%3CBR%20%2F%3Embedtls_mpi_sub_mod%200x7b64%20n%2Fa%2096%20local%20function%3CBR%20%2F%3ESerialManager_Init%200xcb56%20n%2Fa%2096%20global%20function%3CBR%20%2F%3ESerialManager_OpenReadHandle%200xcc06%20n%2Fa%2096%20global%20function%3CBR%20%2F%3Ereverse_array%200x8138%20n%2Fa%2094%20local%20function%3CBR%20%2F%3EHASHCRYPT_SHA%200xc6fe%20n%2Fa%2094%20global%20function%3CBR%20%2F%3EFLEXCOMM0_DriverIRQHandler%200x5aa0%20n%2Fa%2092%20global%20function%3CBR%20%2F%3EFLEXCOMM1_DriverIRQHandler%200x5afc%20n%2Fa%2092%20global%20function%3CBR%20%2F%3EFLEXCOMM2_DriverIRQHandler%200x5b58%20n%2Fa%2092%20global%20function%3CBR%20%2F%3EFLEXCOMM3_DriverIRQHandler%200x5bb4%20n%2Fa%2092%20global%20function%3CBR%20%2F%3EFLEXCOMM4_DriverIRQHandler%200x5c10%20n%2Fa%2092%20global%20function%3CBR%20%2F%3EFLEXCOMM5_DriverIRQHandler%200x5c6c%20n%2Fa%2092%20global%20function%3CBR%20%2F%3EFLEXCOMM6_DriverIRQHandler%200x5cc8%20n%2Fa%2092%20global%20function%3CBR%20%2F%3EFLEXCOMM7_DriverIRQHandler%200x5d24%20n%2Fa%2092%20global%20function%3CBR%20%2F%3EFLEXCOMM8_DriverIRQHandler%200x5d80%20n%2Fa%2092%20global%20function%3CBR%20%2F%3ERESET_SetPeripheralReset%200x6348%20n%2Fa%2092%20global%20function%3CBR%20%2F%3Embedtls_mpi_add_mod%200x7bc4%20n%2Fa%2092%20local%20function%3CBR%20%2F%3Embedtls_mpi_lset%200x8dea%20n%2Fa%2092%20global%20function%3CBR%20%2F%3EBOARD_BootClockFROHF96M%200x6a98%20n%2Fa%2088%20global%20function%3CBR%20%2F%3Embedtls_mpi_shift_l_mod%200x7c20%20n%2Fa%2088%20local%20function%3CBR%20%2F%3Efclose%200xcf9c%20n%2Fa%2088%20global%20function%3CBR%20%2F%3Embedtls_mpi_resize_clear%200x8ca0%20n%2Fa%2086%20local%20function%3CBR%20%2F%3EDbgConsole_SendDataReliable%200x25c%20n%2Fa%2084%20global%20function%3CBR%20%2F%3Ecalculate_sha256%200x450%20n%2Fa%2084%20local%20function%3CBR%20%2F%3Embedtls_ecp_set_zero%200x7aaa%20n%2Fa%2082%20global%20function%3CBR%20%2F%3E_fflush%200xcf4a%20n%2Fa%2082%20global%20function%3CBR%20%2F%3Eecp_add%200xe58%20n%2Fa%2080%20global%20function%3CBR%20%2F%3EFLEXCOMM_Init%200x5a50%20n%2Fa%2080%20global%20function%3CBR%20%2F%3EPOWER_SetVoltageForFreq%200x62f8%20n%2Fa%2080%20global%20function%3CBR%20%2F%3EHASHCRYPT_SHA_Init%200xc75c%20n%2Fa%2080%20global%20function%3CBR%20%2F%3ESerialManager_OpenWriteHandle%200xcbb6%20n%2Fa%2080%20global%20function%3CBR%20%2F%3Ecalloc%200xcdc6%20n%2Fa%2080%20global%20function%3CBR%20%2F%3Estrlen%200xce54%20n%2Fa%2078%20global%20function%3CBR%20%2F%3EFLEXCOMM_GetInstance%200x5a04%20n%2Fa%2076%20global%20function%3CBR%20%2F%3Embedtls_mpi_free%200x8bd0%20n%2Fa%2076%20global%20function%3CBR%20%2F%3ECASPER_ECC_equal_to_zero%200x1754%20n%2Fa%2072%20global%20function%3CBR%20%2F%3Empi_uint_bigendian_to_host_c%200x8fb4%20n%2Fa%2072%20local%20function%3CBR%20%2F%3Eadd32%200x8264%20n%2Fa%2070%20local%20function%3CBR%20%2F%3Esub32%200x82aa%20n%2Fa%2070%20local%20function%3CBR%20%2F%3Eftell%200x6e48%20n%2Fa%2068%20global%20function%3CBR%20%2F%3EPrintOutputdifFobpu%200x70aa%20n%2Fa%2068%20local%20function%3CBR%20%2F%3EPrintOutputxX%200x70ee%20n%2Fa%2068%20local%20function%3CBR%20%2F%3Embedtls_mpi_cmp_int%200x9676%20n%2Fa%2068%20global%20function%3CBR%20%2F%3ESerialManager_Write%200xcb12%20n%2Fa%2068%20local%20function%3CBR%20%2F%3Embedtls_mpi_get_bit%200x8e46%20n%2Fa%2066%20global%20function%3CBR%20%2F%3Embedtls_clz%200x8eee%20n%2Fa%2066%20local%20function%3CBR%20%2F%3EPrintGetRadixFromobpu%200x71c8%20n%2Fa%2064%20local%20function%3CBR%20%2F%3Embedtls_mpi_mul_mod%200x7b24%20n%2Fa%2064%20local%20function%3CBR%20%2F%3E_deferredlazyseek%200xcea2%20n%2Fa%2064%20global%20function%3CBR%20%2F%3E_do_fflush%200xd008%20n%2Fa%2064%20global%20function%3CBR%20%2F%3Etoc_verification_key%200xda84%20n%2Fa%2064%20local%20object%3CBR%20%2F%3EPrintFilterLengthFlag%200x718a%20n%2Fa%2062%20local%20function%3CBR%20%2F%3ESerial_UartInit%200xcc86%20n%2Fa%2062%20global%20function%3CBR%20%2F%3Esetvbuf%200xce16%20n%2Fa%2062%20global%20function%3CBR%20%2F%3EBOARD_InitDEBUG_UARTPins%200x6af0%20n%2Fa%2060%20global%20function%3CBR%20%2F%3E_sbrk%200x6c6c%20n%2Fa%2060%20global%20function%3CBR%20%2F%3Efflush%200x6d14%20n%2Fa%2060%20global%20function%3CBR%20%2F%3Ehashcrypt_sha_check_input_args%200xc53a%20n%2Fa%2060%20local%20function%3CBR%20%2F%3EBOARD_InitDebugConsole%200x6a40%20n%2Fa%2056%20global%20function%3CBR%20%2F%3EPrintIsobpu%200x7046%20n%2Fa%2056%20local%20function%3CBR%20%2F%3EUSART_EnableContinuousSCLK%200xc9fa%20n%2Fa%2056%20local%20function%3CBR%20%2F%3ESerialManager_StartWriting%200xcada%20n%2Fa%2056%20local%20function%3CBR%20%2F%3ESerial_UartWrite%200xccc4%20n%2Fa%2056%20global%20function%3CBR%20%2F%3EHardFault_Handler%200x77f8%20n%2Fa%2054%20global%20function%3CBR%20%2F%3EHAL_UartInit%200xca62%20n%2Fa%2054%20global%20function%3CBR%20%2F%3Embedtls_ecp_point_free%200x7932%20n%2Fa%2052%20global%20function%3CBR%20%2F%3Embedtls_ecp_keypair_free_o%200x79fe%20n%2Fa%2052%20global%20function%3CBR%20%2F%3E__aeabi_lowlevel_memset%200xd1f2%20n%2Fa%2050%20global%20function%3CBR%20%2F%3Embedtls_ecdsa_verify%200xc2e8%20n%2Fa%2048%20global%20function%3CBR%20%2F%3ECLOCK_EnableClock%200xc34c%20n%2Fa%2048%20local%20function%3CBR%20%2F%3Efree%200xcd96%20n%2Fa%2048%20global%20function%3CBR%20%2F%3Embedtls_ecp_get_type%200x782e%20n%2Fa%2046%20global%20function%3CBR%20%2F%3EIOCON_PinMuxSet%200xcd46%20n%2Fa%2046%20local%20function%3CBR%20%2F%3E__assertion_failed%200x230%20n%2Fa%2044%20global%20function%3CBR%20%2F%3Eecp_mpi_set1%200x120c%20n%2Fa%2044%20local%20function%3CBR%20%2F%3EDbgConsole_Printf%200x6f24%20n%2Fa%2044%20global%20function%3CBR%20%2F%3EPrintIsdi%200x707e%20n%2Fa%2044%20local%20function%3CBR%20%2F%3EPrintIsfF%200x7132%20n%2Fa%2044%20local%20function%3CBR%20%2F%3EPrintIsxX%200x715e%20n%2Fa%2044%20local%20function%3CBR%20%2F%3Embedtls_ecp_point_init%200x785c%20n%2Fa%2044%20global%20function%3CBR%20%2F%3Embedtls_ecp_keypair_init%200x7906%20n%2Fa%2044%20global%20function%3CBR%20%2F%3Eecp_mpi_load%200x8196%20n%2Fa%2044%20local%20function%3CBR%20%2F%3Ehashcrypt_engine_init%200xc4e4%20n%2Fa%2044%20local%20function%3CBR%20%2F%3Ehashcrypt_sha_check_input_alg%200xc510%20n%2Fa%2042%20local%20function%3CBR%20%2F%3E__aeabi_memcpy4%200xd1c8%20n%2Fa%2042%20global%20function%3CBR%20%2F%3E__aeabi_memcpy8%200xd1c8%20n%2Fa%2042%20global%20function%3CBR%20%2F%3Embedtls_platform_zeroize%200x14b8%20n%2Fa%2040%20global%20function%3CBR%20%2F%3Embedtls_ecp_is_zero%200x7afc%20n%2Fa%2040%20global%20function%3CBR%20%2F%3EStrFormatExaminedi%200x72ca%20n%2Fa%2038%20local%20function%3CBR%20%2F%3EStrFormatExaminexX%200x72f0%20n%2Fa%2038%20local%20function%3CBR%20%2F%3EStrFormatExamineobpu%200x7316%20n%2Fa%2038%20local%20function%3CBR%20%2F%3Embedtls_mpi_init%200x8baa%20n%2Fa%2038%20global%20function%3CBR%20%2F%3Ecasper_get_word%200x24f0%20n%2Fa%2036%20local%20function%3CBR%20%2F%3Embedtls_mpi_sub_mpi%200x9abe%20n%2Fa%2036%20global%20function%3CBR%20%2F%3Es_flexcommBaseAddrs%200xdbd8%20n%2Fa%2036%20local%20object%3CBR%20%2F%3Es_flexcommResets%200xdc10%20n%2Fa%2036%20local%20object%3CBR%20%2F%3Empi_sint_abs%200x8dc8%20n%2Fa%2034%20local%20function%3CBR%20%2F%3Embedtls_mpi_add_mpi%200x9a9c%20n%2Fa%2034%20global%20function%3CBR%20%2F%3EHAL_UartGetStatus%200xca40%20n%2Fa%2034%20local%20function%3CBR%20%2F%3EDisableGlobalIRQ%200xca98%20n%2Fa%2034%20local%20function%3CBR%20%2F%3EPOWER_DisablePD%200x56c8%20n%2Fa%2032%20local%20function%3CBR%20%2F%3EConvertPrecisionWidthToLength%200x733c%20n%2Fa%2032%20local%20function%3CBR%20%2F%3EEnableGlobalIRQ%200xcaba%20n%2Fa%2032%20local%20function%3CBR%20%2F%3ESerialManager_WriteBlocking%200xcc66%20n%2Fa%2032%20global%20function%3CBR%20%2F%3Esecp256r1_p%200xdac4%20n%2Fa%2032%20local%20object%3CBR%20%2F%3Esecp256r1_a%200xdae4%20n%2Fa%2032%20local%20object%3CBR%20%2F%3Esecp256r1_b%200xdb04%20n%2Fa%2032%20local%20object%3CBR%20%2F%3Esecp256r1_gx%200xdb24%20n%2Fa%2032%20local%20object%3CBR%20%2F%3Esecp256r1_gy%200xdb44%20n%2Fa%2032%20local%20object%3CBR%20%2F%3Esecp256r1_n%200xdb64%20n%2Fa%2032%20local%20object%3CBR%20%2F%3Es_UsartAdapterBase%200xdc34%20n%2Fa%2032%20local%20object%3CBR%20%2F%3Edata_init%200x1e8%20n%2Fa%2030%20global%20function%3CBR%20%2F%3Embedtls_mpi_zeroize%200x8b8c%20n%2Fa%2030%20local%20function%3CBR%20%2F%3Embedtls_ecdsa_free%200xc32e%20n%2Fa%2030%20global%20function%3CBR%20%2F%3Embedtls_mpi_size%200x8f98%20n%2Fa%2028%20global%20function%3CBR%20%2F%3ERESET_PeripheralReset%200xc9de%20n%2Fa%2028%20global%20function%3CBR%20%2F%3Efsl_assert_hook%200x6ea4%20n%2Fa%2026%20weak%20function%3CBR%20%2F%3E__check_heap_overflow%200x6e8c%20n%2Fa%2024%20global%20function%3CBR%20%2F%3Empi_uint_bigendian_to_host%200x8ffc%20n%2Fa%2024%20local%20function%3CBR%20%2F%3Embedtls_ecdsa_can_do%200xc2d0%20n%2Fa%2024%20global%20function%3CBR%20%2F%3Ehashcrypt_save_running_hash%200xc6d0%20n%2Fa%2024%20local%20function%3CBR%20%2F%3Embedtls_ecp_keypair_free%200x7a32%20n%2Fa%2022%20global%20function%3CBR%20%2F%3Embedtls_ecdsa_init%200xc318%20n%2Fa%2022%20global%20function%3CBR%20%2F%3Ehashcrypt_restore_running_hash%200xc6e8%20n%2Fa%2022%20local%20function%3CBR%20%2F%3Eremove%200xcff4%20n%2Fa%2020%20global%20function%3CBR%20%2F%3Ebss_init%200x206%20n%2Fa%2018%20global%20function%3CBR%20%2F%3Es_flexcommClocks%200xdbfc%20n%2Fa%2018%20local%20object%3CBR%20%2F%3ESystemInitHook%200xca32%20n%2Fa%2014%20weak%20function%3CBR%20%2F%3EBOARD_InitPeripherals%200xccfc%20n%2Fa%2014%20global%20function%3CBR%20%2F%3E__main%200xcd80%20n%2Fa%2014%20global%20function%3CBR%20%2F%3EBOARD_InitBootPeripherals%200xcd0a%20n%2Fa%2012%20global%20function%3CBR%20%2F%3EBOARD_InitBootPins%200xcd74%20n%2Fa%2012%20global%20function%3CBR%20%2F%3E__aeabi_memcpy%200xd1be%20n%2Fa%2010%20global%20function%3C%2FDIV%3E%3CNOSCRIPT%3E%3CDIV%20class%3D%22lia-spoiler-noscript-container%22%3E%3CDIV%20class%3D%22lia-spoiler-noscript-content%22%3EName%20Run%20address%20Load%20address%20Size%20Type.text%200x0%20n%2Fa%2056412%20sectionmpi_mul_hlp%200x9ae2%20n%2Fa%206388%20local%20functionecp_mod_p256%200x839c%20n%2Fa%202032%20local%20functionshiftleft%200x2bd0%20n%2Fa%201792%20local%20functionMultprecCiosMul521_ct%200x4fdc%20n%2Fa%201772%20local%20functionshiftright%200x2514%20n%2Fa%201724%20local%20functiondouble_scalar_multiplication%200x3fb4%20n%2Fa%201580%20global%20functionMultprecCiosMul_ct%200x1b4c%20n%2Fa%201444%20local%20functionmbedtls_mpi_div_mpi%200xb69c%20n%2Fa%201316%20global%20functionmbedtls_mpi_inv_mod%200xbdfa%20n%2Fa%201090%20global%20functionprecompute_double_scalar_LUT16%200x3aac%20n%2Fa%201084%20local%20functioninvert_mod_p384%200x4884%20n%2Fa%201062%20local%20functionecp_double_jac%200x7d6c%20n%2Fa%20972%20local%20functionecp_add_mixed%200xac8%20n%2Fa%20912%20local%20functionmbedtls_ecp_muladd_restartable%200xea8%20n%2Fa%20868%20global%20functionJac_addition%200x33ec%20n%2Fa%20776%20global%20functionStrFormatPrintf%200x735c%20n%2Fa%20700%20global%20functioninvert_mod_p521%200x4d14%20n%2Fa%20616%20local%20functioninvert_mod_p256%200x45e0%20n%2Fa%20576%20local%20functionverify_ecdsa_signature%200x4a4%20n%2Fa%20544%20local%20functionJac_add_affine%200x36f4%20n%2Fa%20536%20global%20functionecdsa_verify_restartable%200x12c0%20n%2Fa%20504%20local%20functionUSART_Init%200x6404%20n%2Fa%20460%20global%20functionmbedtls_mpi_gcd%200xbc4a%20n%2Fa%20432%20global%20functionCASPER_montadd%200x21f0%20n%2Fa%20428%20local%20functionhashcrypt_sha_process_message_data%200x5ddc%20n%2Fa%20420%20local%20functionJac_double%200x390c%20n%2Fa%20416%20global%20functionUSART_SetBaudRate%200x6650%20n%2Fa%20396%20global%20functionmbedtls_mpi_mul_mpi%200xb3d6%20n%2Fa%20382%20global%20functionCLOCK_SetFLASHAccessCyclesForFreq%200x5888%20n%2Fa%20380%20global%20function__aeabi_uldivmod%200xd048%20n%2Fa%20372%20global%20functionmbedtls_mpi_add_abs%200x96ba%20n%2Fa%20366%20global%20functionread_and_verify_toc%200x6c4%20n%2Fa%20364%20local%20functionCASPER_ECC_SECP521R1_MulAdd%200x19f4%20n%2Fa%20344%20global%20functionCASPER_half%200x239c%20n%2Fa%20340%20local%20functionlowpower_set_system_voltage%200x6024%20n%2Fa%20340%20local%20functionmbedtls_mpi_shift_l%200x91bc%20n%2Fa%20330%20global%20functionmbedtls_mpi_sub_abs%200x98ba%20n%2Fa%20326%20global%20functionCASPER_ECC_SECP256R1_MulAdd%200x179c%20n%2Fa%20324%20global%20functionDbgConsole_Init%200x2b0%20n%2Fa%20312%20global%20functionmbedtls_mpi_shift_r%200x9306%20n%2Fa%20310%20global%20functionmbedtls_mpi_cmp_mpi%200x9540%20n%2Fa%20310%20global%20function__Vectors%200x0%20n%2Fa%20304%20global%20objectg_pfnVectors%200x0%20n%2Fa%20304%20global%20objectCASPER_ECC_SECP384R1_MulAdd%200x18e0%20n%2Fa%20276%20global%20functionHAL_UartInitCommon%200x68cc%20n%2Fa%20272%20local%20functionmbedtls_mpi_cmp_abs%200x943c%20n%2Fa%20260%20global%20functionCASPER_montsub%200x20f0%20n%2Fa%20256%20local%20functionCASPER_MEMCPY%200x14e0%20n%2Fa%20252%20global%20functionfseek%200x6d50%20n%2Fa%20248%20global%20functionecp_normalize_jac%200x7c78%20n%2Fa%20244%20local%20functionhashcrypt_sha_finalize%200xc5e2%20n%2Fa%20238%20local%20functionlowpower_set_dcdc_power_profile%200x6178%20n%2Fa%20236%20local%20functionmbedtls_mpi_copy%200x8cf6%20n%2Fa%20210%20global%20functionecp_modp%200x9f8%20n%2Fa%20208%20local%20functionHASHCRYPT_SHA_Update%200xc7ac%20n%2Fa%20208%20global%20functionprecompute_double_scalar_LUT4%200x3ee8%20n%2Fa%20204%20local%20functionmbedtls_ecp_point_read_binary%200x930%20n%2Fa%20200%20global%20functionmalloc%200x6b2c%20n%2Fa%20200%20global%20functionmbedtls_mpi_write_binary%200x90f4%20n%2Fa%20200%20global%20functionConvertRadixNumToString%200x7208%20n%2Fa%20194%20local%20functionHASHCRYPT_SHA_Finish%200xc87c%20n%2Fa%20184%20global%20functionmbedtls_int_div_int%200xb5e8%20n%2Fa%20180%20local%20functionmbedtls_ecp_fix_negative%200x82f0%20n%2Fa%20172%20local%20functionlowpower_set_voltage_for_process%200xc934%20n%2Fa%20170%20local%20functionJac_toAffine%200x3348%20n%2Fa%20164%20global%20functionHASHCRYPT_DriverIRQHandler%200x5f80%20n%2Fa%20164%20global%20functionecp_group_load%200x81c2%20n%2Fa%20162%20local%20functionCLOCK_AttachClk%200x56e8%20n%2Fa%20160%20global%20functionadd_sub_mpi%200x9a00%20n%2Fa%20156%20local%20functionmbedtls_ecp_group_free%200x7966%20n%2Fa%20152%20global%20functionlowpower_get_part_process_corner%200x6264%20n%2Fa%20148%20local%20functionmbedtls_mpi_mul_int%200xb554%20n%2Fa%20148%20global%20functionderive_mpi%200xc23c%20n%2Fa%20148%20local%20functionmpi_sub_hlp%200x9828%20n%2Fa%20146%20local%20functioncasper_select%200x15dc%20n%2Fa%20144%20local%20functionhashcrypt_get_data%200xc454%20n%2Fa%20144%20local%20functionUSART_WriteBlocking%200x67dc%20n%2Fa%20140%20global%20functionPrintGetPrecision%200x6fba%20n%2Fa%20140%20local%20functionmbedtls_mpi_mod_mpi%200xbbc0%20n%2Fa%20138%20global%20functionmbedtls_ecp_group_load%200x1238%20n%2Fa%20136%20global%20functionmain%200x8ac%20n%2Fa%20132%20global%20functionmbedtls_mpi_grow%200x8c1c%20n%2Fa%20132%20global%20functionCLOCK_SetClkDiv%200x5788%20n%2Fa%20128%20global%20functionCLOCK_SetupFROClocking%200x5808%20n%2Fa%20128%20global%20functionUSART_GetDefaultConfig%200x65d0%20n%2Fa%20128%20global%20functionmbedtls_ecp_group_init%200x7888%20n%2Fa%20126%20global%20functionjump_to_application%200x830%20n%2Fa%20124%20local%20functionmbedtls_mpi_read_binary%200x907a%20n%2Fa%20122%20global%20functionCASPER_ecc_init%200x166c%20n%2Fa%20120%20global%20functionmultiply_casper%200x32d0%20n%2Fa%20120%20local%20function_initio%200x6bf4%20n%2Fa%20120%20global%20functionFLEXCOMM_SetPeriph%200xc3e0%20n%2Fa%20116%20local%20functionCASPER_ECC_equal%200x16e4%20n%2Fa%20112%20global%20function_Cwritebuf%200x6ca8%20n%2Fa%20108%20global%20functionhashcrypt_sha_one_block%200xc576%20n%2Fa%20108%20local%20functionPrintGetWidth%200x6f50%20n%2Fa%20106%20local%20functionDbgConsole_Vprintf%200x3e8%20n%2Fa%20104%20global%20functiontoMontgomery_ECC_P384%200x4cac%20n%2Fa%20104%20local%20functionmbedtls_mpi_bitlen%200x8f30%20n%2Fa%20104%20global%20function_fdopen%200xcee2%20n%2Fa%20104%20global%20functionDbgConsole_PrintCallback%200x6ebe%20n%2Fa%20102%20local%20functionmbedtls_mpi_lsb%200x8e88%20n%2Fa%20102%20global%20functionmpi_bigendian_to_host%200x9014%20n%2Fa%20102%20local%20functionResetISR%200x180%20n%2Fa%20100%20global%20functiontoMontgomery_ECC_P256%200x4820%20n%2Fa%20100%20local%20functionSystemInit%200x6868%20n%2Fa%20100%20weak%20functionHAL_UartSendBlocking%200x69dc%20n%2Fa%20100%20global%20functionFLEXCOMM_PeripheralIsPresent%200xc37c%20n%2Fa%20100%20local%20functionmbedtls_ecp_copy%200x7a48%20n%2Fa%2098%20global%20functiontoMontgomery_ECC_P521%200x4f7c%20n%2Fa%2096%20local%20functionRESET_ClearPeripheralReset%200x63a4%20n%2Fa%2096%20global%20functionmbedtls_mpi_sub_mod%200x7b64%20n%2Fa%2096%20local%20functionSerialManager_Init%200xcb56%20n%2Fa%2096%20global%20functionSerialManager_OpenReadHandle%200xcc06%20n%2Fa%2096%20global%20functionreverse_array%200x8138%20n%2Fa%2094%20local%20functionHASHCRYPT_SHA%200xc6fe%20n%2Fa%2094%20global%20functionFLEXCOMM0_DriverIRQHandler%200x5aa0%20n%2Fa%2092%20global%20functionFLEXCOMM1_DriverIRQHandler%200x5afc%20n%2Fa%2092%20global%20functionFLEXCOMM2_DriverIRQHandler%200x5b58%20n%2Fa%2092%20global%20functionFLEXCOMM3_DriverIRQHandler%200x5bb4%20n%2Fa%2092%20global%20functionFLEXCOMM4_DriverIRQHandler%200x5c10%20n%2Fa%2092%20global%20functionFLEXCOMM5_DriverIRQHandler%200x5c6c%20n%2Fa%2092%20global%20functionFLEXCOMM6_DriverIRQHandler%200x5cc8%20n%2Fa%2092%20global%20functionFLEXCOMM7_DriverIRQHandler%200x5d24%20n%2Fa%2092%20global%20functionFLEXCOMM8_DriverIRQHandler%200x5d80%20n%2Fa%2092%20global%20functionRESET_SetPeripheralReset%200x6348%20n%2Fa%2092%20global%20functionmbedtls_mpi_add_mod%200x7bc4%20n%2Fa%2092%20local%20functionmbedtls_mpi_lset%200x8dea%20n%2Fa%2092%20global%20functionBOARD_BootClockFROHF96M%200x6a98%20n%2Fa%2088%20global%20functionmbedtls_mpi_shift_l_mod%200x7c20%20n%2Fa%2088%20local%20functionfclose%200xcf9c%20n%2Fa%2088%20global%20functionmbedtls_mpi_resize_clear%200x8ca0%20n%2Fa%2086%20local%20functionDbgConsole_SendDataReliable%200x25c%20n%2Fa%2084%20global%20functioncalculate_sha256%200x450%20n%2Fa%2084%20local%20functionmbedtls_ecp_set_zero%200x7aaa%20n%2Fa%2082%20global%20function_fflush%200xcf4a%20n%2Fa%2082%20global%20functionecp_add%200xe58%20n%2Fa%2080%20global%20functionFLEXCOMM_Init%200x5a50%20n%2Fa%2080%20global%20functionPOWER_SetVoltageForFreq%200x62f8%20n%2Fa%2080%20global%20functionHASHCRYPT_SHA_Init%200xc75c%20n%2Fa%2080%20global%20functionSerialManager_OpenWriteHandle%200xcbb6%20n%2Fa%2080%20global%20functioncalloc%200xcdc6%20n%2Fa%2080%20global%20functionstrlen%200xce54%20n%2Fa%2078%20global%20functionFLEXCOMM_GetInstance%200x5a04%20n%2Fa%2076%20global%20functionmbedtls_mpi_free%200x8bd0%20n%2Fa%2076%20global%20functionCASPER_ECC_equal_to_zero%200x1754%20n%2Fa%2072%20global%20functionmpi_uint_bigendian_to_host_c%200x8fb4%20n%2Fa%2072%20local%20functionadd32%200x8264%20n%2Fa%2070%20local%20functionsub32%200x82aa%20n%2Fa%2070%20local%20functionftell%200x6e48%20n%2Fa%2068%20global%20functionPrintOutputdifFobpu%200x70aa%20n%2Fa%2068%20local%20functionPrintOutputxX%200x70ee%20n%2Fa%2068%20local%20functionmbedtls_mpi_cmp_int%200x9676%20n%2Fa%2068%20global%20functionSerialManager_Write%200xcb12%20n%2Fa%2068%20local%20functionmbedtls_mpi_get_bit%200x8e46%20n%2Fa%2066%20global%20functionmbedtls_clz%200x8eee%20n%2Fa%2066%20local%20functionPrintGetRadixFromobpu%200x71c8%20n%2Fa%2064%20local%20functionmbedtls_mpi_mul_mod%200x7b24%20n%2Fa%2064%20local%20function_deferredlazyseek%200xcea2%20n%2Fa%2064%20global%20function_do_fflush%200xd008%20n%2Fa%2064%20global%20functiontoc_verification_key%200xda84%20n%2Fa%2064%20local%20objectPrintFilterLengthFlag%200x718a%20n%2Fa%2062%20local%20functionSerial_UartInit%200xcc86%20n%2Fa%2062%20global%20functionsetvbuf%200xce16%20n%2Fa%2062%20global%20functionBOARD_InitDEBUG_UARTPins%200x6af0%20n%2Fa%2060%20global%20function_sbrk%200x6c6c%20n%2Fa%2060%20global%20functionfflush%200x6d14%20n%2Fa%2060%20global%20functionhashcrypt_sha_check_input_args%200xc53a%20n%2Fa%2060%20local%20functionBOARD_InitDebugConsole%200x6a40%20n%2Fa%2056%20global%20functionPrintIsobpu%200x7046%20n%2Fa%2056%20local%20functionUSART_EnableContinuousSCLK%200xc9fa%20n%2Fa%2056%20local%20functionSerialManager_StartWriting%200xcada%20n%2Fa%2056%20local%20functionSerial_UartWrite%200xccc4%20n%2Fa%2056%20global%20functionHardFault_Handler%200x77f8%20n%2Fa%2054%20global%20functionHAL_UartInit%200xca62%20n%2Fa%2054%20global%20functionmbedtls_ecp_point_free%200x7932%20n%2Fa%2052%20global%20functionmbedtls_ecp_keypair_free_o%200x79fe%20n%2Fa%2052%20global%20function__aeabi_lowlevel_memset%200xd1f2%20n%2Fa%2050%20global%20functionmbedtls_ecdsa_verify%200xc2e8%20n%2Fa%2048%20global%20functionCLOCK_EnableClock%200xc34c%20n%2Fa%2048%20local%20functionfree%200xcd96%20n%2Fa%2048%20global%20functionmbedtls_ecp_get_type%200x782e%20n%2Fa%2046%20global%20functionIOCON_PinMuxSet%200xcd46%20n%2Fa%2046%20local%20function__assertion_failed%200x230%20n%2Fa%2044%20global%20functionecp_mpi_set1%200x120c%20n%2Fa%2044%20local%20functionDbgConsole_Printf%200x6f24%20n%2Fa%2044%20global%20functionPrintIsdi%200x707e%20n%2Fa%2044%20local%20functionPrintIsfF%200x7132%20n%2Fa%2044%20local%20functionPrintIsxX%200x715e%20n%2Fa%2044%20local%20functionmbedtls_ecp_point_init%200x785c%20n%2Fa%2044%20global%20functionmbedtls_ecp_keypair_init%200x7906%20n%2Fa%2044%20global%20functionecp_mpi_load%200x8196%20n%2Fa%2044%20local%20functionhashcrypt_engine_init%200xc4e4%20n%2Fa%2044%20local%20functionhashcrypt_sha_check_input_alg%200xc510%20n%2Fa%2042%20local%20function__aeabi_memcpy4%200xd1c8%20n%2Fa%2042%20global%20function__aeabi_memcpy8%200xd1c8%20n%2Fa%2042%20global%20functionmbedtls_platform_zeroize%200x14b8%20n%2Fa%2040%20global%20functionmbedtls_ecp_is_zero%200x7afc%20n%2Fa%2040%20global%20functionStrFormatExaminedi%200x72ca%20n%2Fa%2038%20local%20functionStrFormatExaminexX%200x72f0%20n%2Fa%2038%20local%20functionStrFormatExamineobpu%200x7316%20n%2Fa%2038%20local%20functionmbedtls_mpi_init%200x8baa%20n%2Fa%2038%20global%20functioncasper_get_word%200x24f0%20n%2Fa%2036%20local%20functionmbedtls_mpi_sub_mpi%200x9abe%20n%2Fa%2036%20global%20functions_flexcommBaseAddrs%200xdbd8%20n%2Fa%2036%20local%20objects_flexcommResets%200xdc10%20n%2Fa%2036%20local%20objectmpi_sint_abs%200x8dc8%20n%2Fa%2034%20local%20functionmbedtls_mpi_add_mpi%200x9a9c%20n%2Fa%2034%20global%20functionHAL_UartGetStatus%200xca40%20n%2Fa%2034%20local%20functionDisableGlobalIRQ%200xca98%20n%2Fa%2034%20local%20functionPOWER_DisablePD%200x56c8%20n%2Fa%2032%20local%20functionConvertPrecisionWidthToLength%200x733c%20n%2Fa%2032%20local%20functionEnableGlobalIRQ%200xcaba%20n%2Fa%2032%20local%20functionSerialManager_WriteBlocking%200xcc66%20n%2Fa%2032%20global%20functionsecp256r1_p%200xdac4%20n%2Fa%2032%20local%20objectsecp256r1_a%200xdae4%20n%2Fa%2032%20local%20objectsecp256r1_b%200xdb04%20n%2Fa%2032%20local%20objectsecp256r1_gx%200xdb24%20n%2Fa%2032%20local%20objectsecp256r1_gy%200xdb44%20n%2Fa%2032%20local%20objectsecp256r1_n%200xdb64%20n%2Fa%2032%20local%20objects_UsartAdapterBase%200xdc34%20n%2Fa%2032%20local%20objectdata_init%200x1e8%20n%2Fa%2030%20global%20functionmbedtls_mpi_zeroize%200x8b8c%20n%2Fa%2030%20local%20functionmbedtls_ecdsa_free%200xc32e%20n%2Fa%2030%20global%20functionmbedtls_mpi_size%200x8f98%20n%2Fa%2028%20global%20functionRESET_PeripheralReset%200xc9de%20n%2Fa%2028%20global%20functionfsl_assert_hook%200x6ea4%20n%2Fa%2026%20weak%20function__check_heap_overflow%200x6e8c%20n%2Fa%2024%20global%20functionmpi_uint_bigendian_to_host%200x8ffc%20n%2Fa%2024%20local%20functionmbedtls_ecdsa_can_do%200xc2d0%20n%2Fa%2024%20global%20functionhashcrypt_save_running_hash%200xc6d0%20n%2Fa%2024%20local%20functionmbedtls_ecp_keypair_free%200x7a32%20n%2Fa%2022%20global%20functionmbedtls_ecdsa_init%200xc318%20n%2Fa%2022%20global%20functionhashcrypt_restore_running_hash%200xc6e8%20n%2Fa%2022%20local%20functionremove%200xcff4%20n%2Fa%2020%20global%20functionbss_init%200x206%20n%2Fa%2018%20global%20functions_flexcommClocks%200xdbfc%20n%2Fa%2018%20local%20objectSystemInitHook%200xca32%20n%2Fa%2014%20weak%20functionBOARD_InitPeripherals%200xccfc%20n%2Fa%2014%20global%20function__main%200xcd80%20n%2Fa%2014%20global%20functionBOARD_InitBootPeripherals%200xcd0a%20n%2Fa%2012%20global%20functionBOARD_InitBootPins%200xcd74%20n%2Fa%2012%20global%20function__aeabi_memcpy%200xd1be%20n%2Fa%2010%20global%20function%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FNOSCRIPT%3E%3C%2FDIV%3E%3C%2FDIV%3E%3CP%20class%3D%22%22%3EAs%20far%20as%20I%20know%2C%20the%20CASPER%26nbsp%3B%20can't%20perform%20ECDSA%20verification%20on%20its%20own%20-%20it%20seems%20to%20require%20mbedTLS%20as%20a%20wrapper%2C%20which%20brings%20in%20all%20the%20additional%20code.%3C%2FP%3E%3CP%20class%3D%22%22%3EI've%20deactivated%20almost%20everything%20in%20the%26nbsp%3Bksdk_mbedtls_config.h%20file.%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%3CH3%20id%3D%22toc-hId-138666529%22%20id%3D%22toc-hId-226520154%22%3EQuestions%3C%2FH3%3E%3COL%3E%3CLI%3EIs%20there%20a%20way%20to%20use%20the%20CASPER%20hardware%20directly%20for%20ECDSA%20verification%20without%20the%20mbedTLS%20overhead%3F%3C%2FLI%3E%3CLI%3EAre%20there%20any%20ROM-based%20cryptographic%20functions%20in%20the%20LPC55S28%20that%20could%20handle%20ECDSA%20verification%3F%3C%2FLI%3E%3CLI%3EDoes%20anyone%20have%20a%20minimal%20implementation%20of%20ECDSA%20P-256%20verification%20for%20the%20LPC55S28%20that%20could%20fit%20within%20my%2032KB%20constraint%3F%3C%2FLI%3E%3CLI%3EAre%20there%20alternatives%20to%20mbedTLS%20with%20a%20smaller%20footprint%3F%3C%2FLI%3E%3C%2FOL%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2388777%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Help%20with%20ECDSA%20Verification%20in%20LPC55S28%20Bootloader%20(32KB%20Size%20Limit)%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2388777%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CDIV%3EThis%20ticket%20was%20handled%20via%20email%20due%20to%20an%20issue%20with%20the%20community%20platform%20at%20that%20time.%3C%2FDIV%3E%3C%2FLINGO-BODY%3E