我正在使用 OPTEE-OS 和 mbedTLS 并想创建一个 CSR。我正在使用 Global Platform API 创建我的 EC 密钥:
res = TEE_AllocateTransientObject(
TEE_TYPE_ECDSA_KEYPAIR,
DSEC_ECDSA_SHA256_KEY_BITS,
&key_pair);
if (res != TEE_SUCCESS) {
return res;
}
然后提取私钥:
res = TEE_GetObjectBufferAttribute(
key_pair,
TEE_ATTR_ECC_PRIVATE_VALUE,
buffer,
&bufferlen);
if (res != TEE_SUCCESS) {
return res;
}
然后使用 mbedTLS 解析这个值并创建一个来创建一个 CSR:
mbedtls_pk_context priv_key;
mbedtls_pk_init(&priv_key);
ret = mbedtls_pk_parse_key(
&priv_key,
key,
size,
NULL ,
0
);
但是,从 TEE_GetObjectBufferAttribute 中提取的值没有标题和足迹:
"-----BEGIN EC PRIVATE KEY-----"
"-----END EC PRIVATE KEY-----"
并且只是一个二进制数组(不是字符串)。我目前收到以下错误代码:"-15616: PK - Invalid key tag or value".
有没有办法mbedtls_pk_context
只用我的私钥的二进制值创建一个?