diff --git a/src/libopensc/opensc-pkcs15.h b/src/libopensc/opensc-pkcs15.h index 2307709b..571b5153 100644 --- a/src/libopensc/opensc-pkcs15.h +++ b/src/libopensc/opensc-pkcs15.h @@ -262,6 +262,7 @@ int sc_pkcs15_read_pubkey(struct sc_pkcs15_card *card, struct sc_pkcs15_pubkey_rsa **out); int sc_pkcs15_parse_pubkey_rsa(struct sc_context *ctx, struct sc_pkcs15_pubkey_rsa *pubkey); +void sc_pkcs15_free_pubkey(struct sc_pkcs15_pubkey_rsa *pubkey); void sc_pkcs15_print_cert_info(const struct sc_pkcs15_cert_info *cert); int sc_pkcs15_read_certificate(struct sc_pkcs15_card *card, diff --git a/src/libopensc/pkcs15-pubkey.c b/src/libopensc/pkcs15-pubkey.c index 133dccf7..3cd22f60 100644 --- a/src/libopensc/pkcs15-pubkey.c +++ b/src/libopensc/pkcs15-pubkey.c @@ -231,3 +231,11 @@ sc_pkcs15_read_pubkey(struct sc_pkcs15_card *p15card, *out = pubkey; return 0; } + +void sc_pkcs15_free_pubkey(struct sc_pkcs15_pubkey_rsa *key) +{ + assert(key != NULL); + free(key->modulus); + free(key->data); + free(key); +} diff --git a/src/libopensc/pkcs15.h b/src/libopensc/pkcs15.h index 2307709b..571b5153 100644 --- a/src/libopensc/pkcs15.h +++ b/src/libopensc/pkcs15.h @@ -262,6 +262,7 @@ int sc_pkcs15_read_pubkey(struct sc_pkcs15_card *card, struct sc_pkcs15_pubkey_rsa **out); int sc_pkcs15_parse_pubkey_rsa(struct sc_context *ctx, struct sc_pkcs15_pubkey_rsa *pubkey); +void sc_pkcs15_free_pubkey(struct sc_pkcs15_pubkey_rsa *pubkey); void sc_pkcs15_print_cert_info(const struct sc_pkcs15_cert_info *cert); int sc_pkcs15_read_certificate(struct sc_pkcs15_card *card,