Rewritten keypair_gen response (more friendly).

Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
This commit is contained in:
Pol Henarejos
2022-04-13 19:03:33 +02:00
parent 618966b742
commit 69e869852e

View File

@@ -1077,29 +1077,22 @@ static int cmd_keypair_gen() {
return SW_EXEC_ERROR(); return SW_EXEC_ERROR();
} }
res_APDU[0] = 0x67; res_APDU[res_APDU_size++] = 0x67;
int outer_len = strlen(cvc.outer_car)+2+2+1+4; int outer_len = 2+strlen(cvc.outer_car)+3+4;
int bytes_length = 0; int bytes_length = format_tlv_len(cvclen+outer_len, res_APDU+res_APDU_size);
if (cvclen+outer_len < 128) res_APDU_size += bytes_length;
res_APDU[1] = cvclen+outer_len; memcpy(res_APDU+res_APDU_size, cvcbin, cvclen);
else if (cvclen+outer_len < 256) { res_APDU_size += cvclen;
res_APDU[1] = 0x81; res_APDU[res_APDU_size++] = 0x42;
res_APDU[2] = cvclen+outer_len; res_APDU[res_APDU_size++] = strlen(cvc.outer_car);
bytes_length = 1; memcpy(res_APDU+res_APDU_size, cvc.outer_car, strlen(cvc.outer_car));
} res_APDU_size += strlen(cvc.outer_car);
else { memcpy(res_APDU+res_APDU_size, "\x5F\x37\x04",3);
res_APDU[1] = 0x82; res_APDU_size += 3;
res_APDU[2] = (cvclen+outer_len) >> 8; memset(res_APDU+res_APDU_size, 0, 4);
res_APDU[3] = (cvclen+outer_len) & 0xff; res_APDU_size += 4;
bytes_length = 2;
}
memcpy(res_APDU+bytes_length+2, cvcbin, cvclen);
res_APDU[bytes_length+2+cvclen] = 0x42;
res_APDU[bytes_length+2+cvclen+1] = strlen(cvc.outer_car);
memcpy(res_APDU+bytes_length+2+cvclen+2, cvc.outer_car, strlen(cvc.outer_car));
memcpy(res_APDU+bytes_length+2+cvclen+2+strlen(cvc.outer_car), "\x5F\x37\x04",3);
free(cvcbin); free(cvcbin);
res_APDU_size = cvclen+bytes_length+2+outer_len; //res_APDU_size = cvclen+bytes_length+1+outer_len;
apdu.expected_res_size = res_APDU_size; apdu.expected_res_size = res_APDU_size;
//sc_asn1_print_tags(res_APDU, res_APDU_size); //sc_asn1_print_tags(res_APDU, res_APDU_size);