diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/libcrypto/dsa/dsa_ameth.c | 12 | ||||
| -rw-r--r-- | src/lib/libcrypto/dsa/dsa_asn1.c | 61 | ||||
| -rw-r--r-- | src/lib/libcrypto/dsa/dsa_lib.c | 5 | ||||
| -rw-r--r-- | src/lib/libcrypto/dsa/dsa_locl.h | 3 |
4 files changed, 25 insertions, 56 deletions
diff --git a/src/lib/libcrypto/dsa/dsa_ameth.c b/src/lib/libcrypto/dsa/dsa_ameth.c index 3c7644d251..5fff2890a2 100644 --- a/src/lib/libcrypto/dsa/dsa_ameth.c +++ b/src/lib/libcrypto/dsa/dsa_ameth.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: dsa_ameth.c,v 1.30 2022/01/07 09:35:36 tb Exp $ */ | 1 | /* $OpenBSD: dsa_ameth.c,v 1.31 2022/01/14 08:29:06 tb 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 2006. | 3 | * project 2006. |
| 4 | */ | 4 | */ |
| @@ -133,6 +133,7 @@ static int | |||
| 133 | dsa_pub_encode(X509_PUBKEY *pk, const EVP_PKEY *pkey) | 133 | dsa_pub_encode(X509_PUBKEY *pk, const EVP_PKEY *pkey) |
| 134 | { | 134 | { |
| 135 | DSA *dsa; | 135 | DSA *dsa; |
| 136 | ASN1_INTEGER *pubint = NULL; | ||
| 136 | void *pval = NULL; | 137 | void *pval = NULL; |
| 137 | int ptype; | 138 | int ptype; |
| 138 | unsigned char *penc = NULL; | 139 | unsigned char *penc = NULL; |
| @@ -158,9 +159,14 @@ dsa_pub_encode(X509_PUBKEY *pk, const EVP_PKEY *pkey) | |||
| 158 | } else | 159 | } else |
| 159 | ptype = V_ASN1_UNDEF; | 160 | ptype = V_ASN1_UNDEF; |
| 160 | 161 | ||
| 161 | dsa->write_params = 0; | ||
| 162 | 162 | ||
| 163 | penclen = i2d_DSAPublicKey(dsa, &penc); | 163 | if ((pubint = BN_to_ASN1_INTEGER(dsa->pub_key, NULL)) == NULL) { |
| 164 | DSAerror(ERR_R_MALLOC_FAILURE); | ||
| 165 | goto err; | ||
| 166 | } | ||
| 167 | |||
| 168 | penclen = i2d_ASN1_INTEGER(pubint, &penc); | ||
| 169 | ASN1_INTEGER_free(pubint); | ||
| 164 | 170 | ||
| 165 | if (penclen <= 0) { | 171 | if (penclen <= 0) { |
| 166 | DSAerror(ERR_R_MALLOC_FAILURE); | 172 | DSAerror(ERR_R_MALLOC_FAILURE); |
diff --git a/src/lib/libcrypto/dsa/dsa_asn1.c b/src/lib/libcrypto/dsa/dsa_asn1.c index 3bf044665f..daa970e316 100644 --- a/src/lib/libcrypto/dsa/dsa_asn1.c +++ b/src/lib/libcrypto/dsa/dsa_asn1.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: dsa_asn1.c,v 1.23 2022/01/07 09:35:36 tb Exp $ */ | 1 | /* $OpenBSD: dsa_asn1.c,v 1.24 2022/01/14 08:29:06 tb 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 | */ |
| @@ -329,14 +329,15 @@ i2d_DSAparams_fp(FILE *fp, DSA *a) | |||
| 329 | return ASN1_item_i2d_fp(&DSAparams_it, fp, a); | 329 | return ASN1_item_i2d_fp(&DSAparams_it, fp, a); |
| 330 | } | 330 | } |
| 331 | 331 | ||
| 332 | /* | 332 | static const ASN1_AUX DSAPublicKey_aux = { |
| 333 | * DSA public key is a bit trickier... its effectively a CHOICE type | 333 | .app_data = NULL, |
| 334 | * decided by a field called write_params which can either write out | 334 | .flags = 0, |
| 335 | * just the public key as an INTEGER or the parameters and public key | 335 | .ref_offset = 0, |
| 336 | * in a SEQUENCE | 336 | .ref_lock = 0, |
| 337 | */ | 337 | .asn1_cb = dsa_cb, |
| 338 | 338 | .enc_offset = 0, | |
| 339 | static const ASN1_TEMPLATE dsa_pub_internal_seq_tt[] = { | 339 | }; |
| 340 | static const ASN1_TEMPLATE DSAPublicKey_seq_tt[] = { | ||
| 340 | { | 341 | { |
| 341 | .flags = 0, | 342 | .flags = 0, |
| 342 | .tag = 0, | 343 | .tag = 0, |
| @@ -367,52 +368,16 @@ static const ASN1_TEMPLATE dsa_pub_internal_seq_tt[] = { | |||
| 367 | }, | 368 | }, |
| 368 | }; | 369 | }; |
| 369 | 370 | ||
| 370 | const ASN1_ITEM dsa_pub_internal_it = { | 371 | const ASN1_ITEM DSAPublicKey_it = { |
| 371 | .itype = ASN1_ITYPE_SEQUENCE, | 372 | .itype = ASN1_ITYPE_SEQUENCE, |
| 372 | .utype = V_ASN1_SEQUENCE, | 373 | .utype = V_ASN1_SEQUENCE, |
| 373 | .templates = dsa_pub_internal_seq_tt, | 374 | .templates = DSAPublicKey_seq_tt, |
| 374 | .tcount = sizeof(dsa_pub_internal_seq_tt) / sizeof(ASN1_TEMPLATE), | 375 | .tcount = sizeof(DSAPublicKey_seq_tt) / sizeof(ASN1_TEMPLATE), |
| 375 | .funcs = NULL, | ||
| 376 | .size = sizeof(DSA), | ||
| 377 | .sname = "DSA", | ||
| 378 | }; | ||
| 379 | |||
| 380 | static const ASN1_AUX DSAPublicKey_aux = { | ||
| 381 | .app_data = NULL, | ||
| 382 | .flags = 0, | ||
| 383 | .ref_offset = 0, | ||
| 384 | .ref_lock = 0, | ||
| 385 | .asn1_cb = dsa_cb, | ||
| 386 | .enc_offset = 0, | ||
| 387 | }; | ||
| 388 | static const ASN1_TEMPLATE DSAPublicKey_ch_tt[] = { | ||
| 389 | { | ||
| 390 | .flags = 0, | ||
| 391 | .tag = 0, | ||
| 392 | .offset = offsetof(DSA, pub_key), | ||
| 393 | .field_name = "pub_key", | ||
| 394 | .item = &BIGNUM_it, | ||
| 395 | }, | ||
| 396 | { | ||
| 397 | .flags = 0 | ASN1_TFLG_COMBINE, | ||
| 398 | .tag = 0, | ||
| 399 | .offset = 0, | ||
| 400 | .field_name = NULL, | ||
| 401 | .item = &dsa_pub_internal_it, | ||
| 402 | }, | ||
| 403 | }; | ||
| 404 | |||
| 405 | const ASN1_ITEM DSAPublicKey_it = { | ||
| 406 | .itype = ASN1_ITYPE_CHOICE, | ||
| 407 | .utype = offsetof(DSA, write_params), | ||
| 408 | .templates = DSAPublicKey_ch_tt, | ||
| 409 | .tcount = sizeof(DSAPublicKey_ch_tt) / sizeof(ASN1_TEMPLATE), | ||
| 410 | .funcs = &DSAPublicKey_aux, | 376 | .funcs = &DSAPublicKey_aux, |
| 411 | .size = sizeof(DSA), | 377 | .size = sizeof(DSA), |
| 412 | .sname = "DSA", | 378 | .sname = "DSA", |
| 413 | }; | 379 | }; |
| 414 | 380 | ||
| 415 | |||
| 416 | DSA * | 381 | DSA * |
| 417 | d2i_DSAPublicKey(DSA **a, const unsigned char **in, long len) | 382 | d2i_DSAPublicKey(DSA **a, const unsigned char **in, long len) |
| 418 | { | 383 | { |
diff --git a/src/lib/libcrypto/dsa/dsa_lib.c b/src/lib/libcrypto/dsa/dsa_lib.c index 7a7986b1f7..1369c6f745 100644 --- a/src/lib/libcrypto/dsa/dsa_lib.c +++ b/src/lib/libcrypto/dsa/dsa_lib.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: dsa_lib.c,v 1.33 2022/01/07 09:35:36 tb Exp $ */ | 1 | /* $OpenBSD: dsa_lib.c,v 1.34 2022/01/14 08:29:06 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -154,7 +154,6 @@ DSA_new_method(ENGINE *engine) | |||
| 154 | 154 | ||
| 155 | ret->pad = 0; | 155 | ret->pad = 0; |
| 156 | ret->version = 0; | 156 | ret->version = 0; |
| 157 | ret->write_params = 1; | ||
| 158 | ret->p = NULL; | 157 | ret->p = NULL; |
| 159 | ret->q = NULL; | 158 | ret->q = NULL; |
| 160 | ret->g = NULL; | 159 | ret->g = NULL; |
| @@ -177,7 +176,7 @@ DSA_new_method(ENGINE *engine) | |||
| 177 | free(ret); | 176 | free(ret); |
| 178 | ret = NULL; | 177 | ret = NULL; |
| 179 | } | 178 | } |
| 180 | 179 | ||
| 181 | return ret; | 180 | return ret; |
| 182 | } | 181 | } |
| 183 | 182 | ||
diff --git a/src/lib/libcrypto/dsa/dsa_locl.h b/src/lib/libcrypto/dsa/dsa_locl.h index 29a3901dc7..299c67a6b9 100644 --- a/src/lib/libcrypto/dsa/dsa_locl.h +++ b/src/lib/libcrypto/dsa/dsa_locl.h | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: dsa_locl.h,v 1.4 2022/01/14 08:27:23 tb Exp $ */ | 1 | /* $OpenBSD: dsa_locl.h,v 1.5 2022/01/14 08:29:06 tb Exp $ */ |
| 2 | /* ==================================================================== | 2 | /* ==================================================================== |
| 3 | * Copyright (c) 2007 The OpenSSL Project. All rights reserved. | 3 | * Copyright (c) 2007 The OpenSSL Project. All rights reserved. |
| 4 | * | 4 | * |
| @@ -90,7 +90,6 @@ struct dsa_st { | |||
| 90 | * a DSA is passed instead of of a EVP_PKEY */ | 90 | * a DSA is passed instead of of a EVP_PKEY */ |
| 91 | int pad; | 91 | int pad; |
| 92 | long version; | 92 | long version; |
| 93 | int write_params; | ||
| 94 | BIGNUM *p; | 93 | BIGNUM *p; |
| 95 | BIGNUM *q; /* == 20 */ | 94 | BIGNUM *q; /* == 20 */ |
| 96 | BIGNUM *g; | 95 | BIGNUM *g; |
