diff options
author | jsing <> | 2019-10-25 14:40:18 +0000 |
---|---|---|
committer | jsing <> | 2019-10-25 14:40:18 +0000 |
commit | 807a786996712e07f0fe283c5bbf5400b5f2ac2c (patch) | |
tree | 68ebed3fb9fa7f19c5d7523dd821d19e11f378b0 | |
parent | 53fd42f3a7b759c3d6f04e948d57e410697eec0d (diff) | |
download | openbsd-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.c | 26 |
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 | ||
205 | static int | ||
206 | rsa_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 | |||
216 | static 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 | |||
205 | static const ASN1_TEMPLATE RSA_PSS_PARAMS_seq_tt[] = { | 225 | static 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 | |||
247 | RSA_PSS_PARAMS * | 266 | RSA_PSS_PARAMS * |
248 | d2i_RSA_PSS_PARAMS(RSA_PSS_PARAMS **a, const unsigned char **in, long len) | 267 | d2i_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 | |||
291 | static const ASN1_TEMPLATE RSA_OAEP_PARAMS_seq_tt[] = { | 311 | static 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, |