Fix with ASN1 encapsulation for keypair generation. It only affects RSA 4096 bits.

Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
This commit is contained in:
Pol Henarejos 2022-04-04 22:00:29 +02:00
parent d49e7be972
commit 6e1c47ddf4
No known key found for this signature in database
GPG Key ID: C0095B7870A4CCD3

View File

@ -994,15 +994,19 @@ static int cmd_keypair_gen() {
res_APDU[0] = 0x67;
int outer_len = strlen(cvc.outer_car)+2+2+1+4;
int bytes_length = (cvclen+outer_len)/256;
if (cvclen%256 > 0)
bytes_length++;
if (cvclen < 128)
int bytes_length = 0;
if (cvclen+outer_len < 128)
res_APDU[1] = cvclen+outer_len;
else if (cvclen+outer_len < 256) {
res_APDU[1] = 0x81;
res_APDU[2] = cvclen+outer_len;
bytes_length = 1;
}
else {
res_APDU[1] = 0x80|bytes_length;
for (int b = 1; b <= bytes_length; b++)
res_APDU[1+b] = ((cvclen+outer_len)>>((bytes_length-b)*8))&0xff;
res_APDU[1] = 0x82;
res_APDU[2] = (cvclen+outer_len) >> 8;
res_APDU[3] = (cvclen+outer_len) & 0xff;
bytes_length = 2;
}
memcpy(res_APDU+bytes_length+2, cvcbin, cvclen);
res_APDU[bytes_length+2+cvclen] = 0x42;