我正在尝试使用“椭圆曲线”在 Trustzone 中进行签名和验证,
但似乎没有它的例子。
有一个使用 mbedTLS 的基准测试,所以我一直在尝试将它移植到我的 trustzone 项目中,
但每当我调试时,
开发板总是卡在“hashcrypt_sha_finalize”中,更具体地说,
/* poll wait for final digest */
while (0U == (base->STATUS & HASHCRYPT_STATUS_DIGEST_MASK))
{
}我搜索了此状态的含义,但找不到有意义的结果。
任何意见将不胜感激。
让我详细说明我在程序中做了什么。
- 将“lpcxpresso55s69_mbedtls_benchmark”项目复制并粘贴到我的项目中
- 由于secure flash memory的大小限制,在build setting中增加flash size,在TZ setting中调整secure flash memory和non-secure flash memory
- 按顺序调用示例中的函数,
- CRYPTO_InitHardware()
- mbedtls_ecdsa_init(&ecdsa)
- mbedtls_ecdsa_genkey(&ecdsa,curve_info->grp_id,myrand,NULL)
- mbedtls_ecdsa_write_signature(&ecdsa,MBEDTLS_MD_SHA256,buf,curve_info->bit_size,tmp,&sig_len,myrand,NULL)
除了最后一个 mbedtls_ecdsa_write_signature() 之外,一切都很好。
在调用该函数期间,它停留在我上面提到的 sha 函数处。