diff --git a/src/hsm/cvc.c b/src/hsm/cvc.c index 478c7e5..2c5954c 100644 --- a/src/hsm/cvc.c +++ b/src/hsm/cvc.c @@ -392,6 +392,13 @@ const uint8_t *cvc_get_pub(const uint8_t *data, size_t len, size_t *olen) { return NULL; } +const uint8_t *cvc_get_ext(const uint8_t *data, size_t len, size_t *olen) { + if ((data = cvc_get_body(data, len, olen)) != NULL) { + return cvc_get_field(data, len, olen, 0x65); + } + return NULL; +} + extern PUK puk_store[MAX_PUK_STORE_ENTRIES]; extern int puk_store_entries; diff --git a/src/hsm/cvc.h b/src/hsm/cvc.h index 2305153..90c2774 100644 --- a/src/hsm/cvc.h +++ b/src/hsm/cvc.h @@ -43,6 +43,7 @@ extern const uint8_t *cvc_get_field(const uint8_t *data, size_t len, size_t *ole extern const uint8_t *cvc_get_car(const uint8_t *data, size_t len, size_t *olen); extern const uint8_t *cvc_get_chr(const uint8_t *data, size_t len, size_t *olen); extern const uint8_t *cvc_get_pub(const uint8_t *data, size_t len, size_t *olen); +extern const uint8_t *cvc_get_ext(const uint8_t *data, size_t len, size_t *olen); extern int cvc_verify(const uint8_t *cert, size_t cert_len, const uint8_t *ca, size_t ca_len); extern mbedtls_ecp_group_id cvc_inherite_ec_group(const uint8_t *ca, size_t ca_len); extern int puk_verify(const uint8_t *sig, size_t sig_len, const uint8_t *hash, size_t hash_len, const uint8_t *ca, size_t ca_len);