Я использую OPTEE-OS и mbedTLS и хочу создать CSR.Я создаю свой ключ EC с помощью API Global Platform:
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 анализирую это значение и создаю a для создания CSR:
mbedtls_pk_context priv_key;
mbedtls_pk_init(&priv_key);
ret = mbedtls_pk_parse_key(
&priv_key,
key,
size,
NULL ,
0
);
Однако извлеченное значение из TEE_GetObjectBufferAttribute не имеет заголовков и footpage:
"-----BEGIN EC PRIVATE KEY-----"
"-----END EC PRIVATE KEY-----"
и является только двоичным массивом (не строкой).В настоящее время я получаю следующий код ошибки: "-15616: PK - Invalid key tag or value".
Можно ли создать mbedtls_pk_context
только с двоичным значением моего личного ключа?