summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjsing <>2019-10-25 14:40:18 +0000
committerjsing <>2019-10-25 14:40:18 +0000
commit807a786996712e07f0fe283c5bbf5400b5f2ac2c (patch)
tree68ebed3fb9fa7f19c5d7523dd821d19e11f378b0
parent53fd42f3a7b759c3d6f04e948d57e410697eec0d (diff)
downloadopenbsd-807a786996712e07f0fe283c5bbf5400b5f2ac2c.tar.gz
openbsd-807a786996712e07f0fe283c5bbf5400b5f2ac2c.tar.bz2
openbsd-807a786996712e07f0fe283c5bbf5400b5f2ac2c.zip
Free maskHash when RSA_PSS_PARAMS is freed.
ok tb@
-rw-r--r--src/lib/libcrypto/rsa/rsa_asn1.c26
1 files changed, 23 insertions, 3 deletions
diff --git a/src/lib/libcrypto/rsa/rsa_asn1.c b/src/lib/libcrypto/rsa/rsa_asn1.c
index fa340a26d2..4b8eda24dd 100644
--- a/src/lib/libcrypto/rsa/rsa_asn1.c
+++ b/src/lib/libcrypto/rsa/rsa_asn1.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: rsa_asn1.c,v 1.14 2019/10/24 16:26:13 jsing Exp $ */ 1/* $OpenBSD: rsa_asn1.c,v 1.15 2019/10/25 14:40:18 jsing Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 2000. 3 * project 2000.
4 */ 4 */
@@ -202,6 +202,26 @@ const ASN1_ITEM RSAPublicKey_it = {
202 .sname = "RSA", 202 .sname = "RSA",
203}; 203};
204 204
205static int
206rsa_pss_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg)
207{
208 /* Free up maskHash */
209 if (operation == ASN1_OP_FREE_PRE) {
210 RSA_PSS_PARAMS *pss = (RSA_PSS_PARAMS *)*pval;
211 X509_ALGOR_free(pss->maskHash);
212 }
213 return 1;
214}
215
216static const ASN1_AUX RSA_PSS_PARAMS_aux = {
217 .app_data = NULL,
218 .flags = 0,
219 .ref_offset = 0,
220 .ref_lock = 0,
221 .asn1_cb = rsa_pss_cb,
222 .enc_offset = 0,
223};
224
205static const ASN1_TEMPLATE RSA_PSS_PARAMS_seq_tt[] = { 225static const ASN1_TEMPLATE RSA_PSS_PARAMS_seq_tt[] = {
206 { 226 {
207 .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, 227 .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL,
@@ -238,12 +258,11 @@ const ASN1_ITEM RSA_PSS_PARAMS_it = {
238 .utype = V_ASN1_SEQUENCE, 258 .utype = V_ASN1_SEQUENCE,
239 .templates = RSA_PSS_PARAMS_seq_tt, 259 .templates = RSA_PSS_PARAMS_seq_tt,
240 .tcount = sizeof(RSA_PSS_PARAMS_seq_tt) / sizeof(ASN1_TEMPLATE), 260 .tcount = sizeof(RSA_PSS_PARAMS_seq_tt) / sizeof(ASN1_TEMPLATE),
241 .funcs = NULL, 261 .funcs = &RSA_PSS_PARAMS_aux,
242 .size = sizeof(RSA_PSS_PARAMS), 262 .size = sizeof(RSA_PSS_PARAMS),
243 .sname = "RSA_PSS_PARAMS", 263 .sname = "RSA_PSS_PARAMS",
244}; 264};
245 265
246
247RSA_PSS_PARAMS * 266RSA_PSS_PARAMS *
248d2i_RSA_PSS_PARAMS(RSA_PSS_PARAMS **a, const unsigned char **in, long len) 267d2i_RSA_PSS_PARAMS(RSA_PSS_PARAMS **a, const unsigned char **in, long len)
249{ 268{
@@ -288,6 +307,7 @@ static const ASN1_AUX RSA_OAEP_PARAMS_aux = {
288 .asn1_cb = rsa_oaep_cb, 307 .asn1_cb = rsa_oaep_cb,
289 .enc_offset = 0, 308 .enc_offset = 0,
290}; 309};
310
291static const ASN1_TEMPLATE RSA_OAEP_PARAMS_seq_tt[] = { 311static const ASN1_TEMPLATE RSA_OAEP_PARAMS_seq_tt[] = {
292 { 312 {
293 .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, 313 .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL,