From a4d4f9a9443dd828299d1273bf24e2a35bf5f003 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Thu, 9 Jun 2022 21:25:17 +0200 Subject: [PATCH] Fix outer CAR value. Signed-off-by: Pol Henarejos --- src/hsm/cvc.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/hsm/cvc.c b/src/hsm/cvc.c index 4c9b5e7..4b9f56e 100644 --- a/src/hsm/cvc.c +++ b/src/hsm/cvc.c @@ -202,8 +202,9 @@ size_t asn1_cvc_cert(void *rsa_ecdsa, uint8_t key_type, uint8_t *buf, size_t buf size_t asn1_cvc_aut(void *rsa_ecdsa, uint8_t key_type, uint8_t *buf, size_t buf_len) { size_t cvcert_size = asn1_cvc_cert(rsa_ecdsa, key_type, NULL, 0); - uint8_t *outcar = (uint8_t *)"ESHSM00001"; - size_t lenoutcar = strlen((char *)outcar), outcar_size = asn1_len_tag(0x42, lenoutcar); + size_t outcar_len = 0; + const uint8_t *outcar = cvc_get_chr((uint8_t *)termca+2, (termca[1] << 8) | termca[0], &outcar_len); + size_t outcar_size = asn1_len_tag(0x42, outcar_len); int key_size = 2*file_read_uint16(termca_pk), ret = 0; size_t outsig_size = asn1_len_tag(0x5f37, key_size), tot_len = asn1_len_tag(0x67, cvcert_size+outcar_size+outsig_size); if (buf_len == 0 || buf == NULL) @@ -217,7 +218,7 @@ size_t asn1_cvc_aut(void *rsa_ecdsa, uint8_t key_type, uint8_t *buf, size_t buf_ //cvcert p += asn1_cvc_cert(rsa_ecdsa, key_type, p, cvcert_size); //outcar - *p++ = 0x42; p += format_tlv_len(lenoutcar, p); memcpy(p, outcar, lenoutcar); p += lenoutcar; + *p++ = 0x42; p += format_tlv_len(outcar_len, p); memcpy(p, outcar, outcar_len); p += outcar_len; mbedtls_ecdsa_context ctx; mbedtls_ecdsa_init(&ctx); if (mbedtls_ecp_read_key(MBEDTLS_ECP_DP_SECP192R1, &ctx, termca_pk+2, file_read_uint16(termca_pk)) != 0)