diff options
Diffstat (limited to '')
| -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, |
