sc-hsm: Fixed bug decoding CVCs without domain parameter
This commit is contained in:
parent
33da14c459
commit
7c714860a2
|
@ -42,8 +42,8 @@ void sc_hsm_set_serialnr(sc_card_t *card, char *serial);
|
||||||
#define C_ASN1_CVC_PUBKEY_SIZE 10
|
#define C_ASN1_CVC_PUBKEY_SIZE 10
|
||||||
static const struct sc_asn1_entry c_asn1_cvc_pubkey[C_ASN1_CVC_PUBKEY_SIZE] = {
|
static const struct sc_asn1_entry c_asn1_cvc_pubkey[C_ASN1_CVC_PUBKEY_SIZE] = {
|
||||||
{ "publicKeyOID", SC_ASN1_OBJECT, SC_ASN1_UNI | SC_ASN1_OBJECT, 0, NULL, NULL },
|
{ "publicKeyOID", SC_ASN1_OBJECT, SC_ASN1_UNI | SC_ASN1_OBJECT, 0, NULL, NULL },
|
||||||
{ "primeOrModulus", SC_ASN1_OCTET_STRING, SC_ASN1_CTX | 1, SC_ASN1_ALLOC, NULL, NULL },
|
{ "primeOrModulus", SC_ASN1_OCTET_STRING, SC_ASN1_CTX | 1, SC_ASN1_OPTIONAL | SC_ASN1_ALLOC, NULL, NULL },
|
||||||
{ "coefficientAorExponent", SC_ASN1_OCTET_STRING, SC_ASN1_CTX | 2, SC_ASN1_ALLOC, NULL, NULL },
|
{ "coefficientAorExponent", SC_ASN1_OCTET_STRING, SC_ASN1_CTX | 2, SC_ASN1_OPTIONAL | SC_ASN1_ALLOC, NULL, NULL },
|
||||||
{ "coefficientB", SC_ASN1_OCTET_STRING, SC_ASN1_CTX | 3, SC_ASN1_OPTIONAL | SC_ASN1_ALLOC, NULL, NULL },
|
{ "coefficientB", SC_ASN1_OCTET_STRING, SC_ASN1_CTX | 3, SC_ASN1_OPTIONAL | SC_ASN1_ALLOC, NULL, NULL },
|
||||||
{ "basePointG", SC_ASN1_OCTET_STRING, SC_ASN1_CTX | 4, SC_ASN1_OPTIONAL | SC_ASN1_ALLOC, NULL, NULL },
|
{ "basePointG", SC_ASN1_OCTET_STRING, SC_ASN1_CTX | 4, SC_ASN1_OPTIONAL | SC_ASN1_ALLOC, NULL, NULL },
|
||||||
{ "order", SC_ASN1_OCTET_STRING, SC_ASN1_CTX | 5, SC_ASN1_OPTIONAL | SC_ASN1_ALLOC, NULL, NULL },
|
{ "order", SC_ASN1_OCTET_STRING, SC_ASN1_CTX | 5, SC_ASN1_OPTIONAL | SC_ASN1_ALLOC, NULL, NULL },
|
||||||
|
@ -338,7 +338,7 @@ static int sc_pkcs15emu_sc_hsm_add_prkd(sc_pkcs15_card_t * p15card, u8 keyid) {
|
||||||
/* Check if the certificate is a X.509 certificate */
|
/* Check if the certificate is a X.509 certificate */
|
||||||
r = sc_read_binary(p15card->card, 0, efbin, 1, 0);
|
r = sc_read_binary(p15card->card, 0, efbin, 1, 0);
|
||||||
|
|
||||||
if (r != SC_SUCCESS) {
|
if (r < 0) {
|
||||||
return SC_SUCCESS;
|
return SC_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -520,6 +520,8 @@ static int sc_pkcs15emu_sc_hsm_init (sc_pkcs15_card_t * p15card)
|
||||||
|
|
||||||
ptr = efbin;
|
ptr = efbin;
|
||||||
len = r;
|
len = r;
|
||||||
|
|
||||||
|
memset(&devcert, 0 ,sizeof(devcert));
|
||||||
r = sc_pkcs15emu_sc_hsm_decode_cvc(p15card, (const u8 **)&ptr, &len, &devcert);
|
r = sc_pkcs15emu_sc_hsm_decode_cvc(p15card, (const u8 **)&ptr, &len, &devcert);
|
||||||
LOG_TEST_RET(card->ctx, r, "Could not decode EF.C_DevAut");
|
LOG_TEST_RET(card->ctx, r, "Could not decode EF.C_DevAut");
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue