From 8b0d85fbd4b830ece272e3d652e960ba81b08a04 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Wed, 22 Mar 2023 22:57:15 +0100 Subject: [PATCH] Fix PRKD generation for AES. Signed-off-by: Pol Henarejos --- src/hsm/cvc.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/hsm/cvc.c b/src/hsm/cvc.c index c54d644..c91c4b4 100644 --- a/src/hsm/cvc.c +++ b/src/hsm/cvc.c @@ -501,9 +501,13 @@ size_t asn1_build_prkd_generic(const uint8_t *label, //Seq 4 *p++ = 0xA1; - p += format_tlv_len(asn1_len_tag(0x30, asn1_len_tag(0x30, asn1_len_tag(0x4, 0)) + asn1_len_tag(0x2, 2)), p); + size_t inseq4_len = asn1_len_tag(0x30, asn1_len_tag(0x4, 0)); + if (key_type & HSM_KEY_EC || key_type & HSM_KEY_RSA) { + inseq4_len += asn1_len_tag(0x2, 2); + } + p += format_tlv_len(asn1_len_tag(0x30, inseq4_len), p); *p++ = 0x30; - p += format_tlv_len(asn1_len_tag(0x30, asn1_len_tag(0x4, 0)) + asn1_len_tag(0x2, 2), p); + p += format_tlv_len(inseq4_len, p); *p++ = 0x30; p += format_tlv_len(asn1_len_tag(0x4, 0), p); *p++ = 0x4;