diff --git a/src/libopensc/opensc-pkcs15.h b/src/libopensc/opensc-pkcs15.h index 571b5153..701d8a9a 100644 --- a/src/libopensc/opensc-pkcs15.h +++ b/src/libopensc/opensc-pkcs15.h @@ -101,11 +101,12 @@ struct sc_pkcs15_pubkey_rsa { struct sc_pkcs15_cert { int version; - unsigned long serial; + u8 *serial; + size_t serial_len; struct sc_pkcs15_pubkey_rsa key; u8 *data; /* DER encoded raw cert */ - int data_len; + size_t data_len; }; struct sc_pkcs15_cert_info { diff --git a/src/libopensc/pkcs15-cert.c b/src/libopensc/pkcs15-cert.c index dd9c12ff..41b69222 100644 --- a/src/libopensc/pkcs15-cert.c +++ b/src/libopensc/pkcs15-cert.c @@ -68,7 +68,7 @@ static int parse_x509_cert(struct sc_context *ctx, const u8 *buf, size_t buflen, }; struct sc_asn1_entry asn1_tbscert[] = { { "version", SC_ASN1_STRUCT, SC_ASN1_CTX | 0 | SC_ASN1_CONS, 0, asn1_version }, - { "serialNumber", SC_ASN1_INTEGER, ASN1_INTEGER, 0, &cert->serial }, + { "serialNumber", SC_ASN1_OCTET_STRING, ASN1_INTEGER, SC_ASN1_ALLOC, &cert->serial, &cert->serial_len }, { "signature", SC_ASN1_STRUCT, ASN1_SEQUENCE | SC_ASN1_CONS, 0, NULL }, { "issuer", SC_ASN1_STRUCT, ASN1_SEQUENCE | SC_ASN1_CONS, 0, NULL }, { "validity", SC_ASN1_STRUCT, ASN1_SEQUENCE | SC_ASN1_CONS, 0, NULL }, diff --git a/src/libopensc/pkcs15.h b/src/libopensc/pkcs15.h index 571b5153..701d8a9a 100644 --- a/src/libopensc/pkcs15.h +++ b/src/libopensc/pkcs15.h @@ -101,11 +101,12 @@ struct sc_pkcs15_pubkey_rsa { struct sc_pkcs15_cert { int version; - unsigned long serial; + u8 *serial; + size_t serial_len; struct sc_pkcs15_pubkey_rsa key; u8 *data; /* DER encoded raw cert */ - int data_len; + size_t data_len; }; struct sc_pkcs15_cert_info {