Deleted Added
full compact
dsa_ameth.c (291719) dsa_ameth.c (296279)
1/*
2 * Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL project
3 * 2006.
4 */
5/* ====================================================================
6 * Copyright (c) 2006 The OpenSSL Project. All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 177 unchanged lines hidden (view full) ---

186 ASN1_STRING *pstr;
187 X509_ALGOR *palg;
188 ASN1_INTEGER *privkey = NULL;
189 BN_CTX *ctx = NULL;
190
191 STACK_OF(ASN1_TYPE) *ndsa = NULL;
192 DSA *dsa = NULL;
193
1/*
2 * Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL project
3 * 2006.
4 */
5/* ====================================================================
6 * Copyright (c) 2006 The OpenSSL Project. All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 177 unchanged lines hidden (view full) ---

186 ASN1_STRING *pstr;
187 X509_ALGOR *palg;
188 ASN1_INTEGER *privkey = NULL;
189 BN_CTX *ctx = NULL;
190
191 STACK_OF(ASN1_TYPE) *ndsa = NULL;
192 DSA *dsa = NULL;
193
194 int ret = 0;
195
194 if (!PKCS8_pkey_get0(NULL, &p, &pklen, &palg, p8))
195 return 0;
196 X509_ALGOR_get0(NULL, &ptype, &pval, palg);
197
198 /* Check for broken DSA PKCS#8, UGH! */
199 if (*p == (V_ASN1_SEQUENCE | V_ASN1_CONSTRUCTED)) {
200 ASN1_TYPE *t1, *t2;
201 if (!(ndsa = d2i_ASN1_SEQUENCE_ANY(NULL, &p, pklen)))

--- 55 unchanged lines hidden (view full) ---

257 }
258
259 if (!BN_mod_exp(dsa->pub_key, dsa->g, dsa->priv_key, dsa->p, ctx)) {
260 DSAerr(DSA_F_DSA_PRIV_DECODE, DSA_R_BN_ERROR);
261 goto dsaerr;
262 }
263
264 EVP_PKEY_assign_DSA(pkey, dsa);
196 if (!PKCS8_pkey_get0(NULL, &p, &pklen, &palg, p8))
197 return 0;
198 X509_ALGOR_get0(NULL, &ptype, &pval, palg);
199
200 /* Check for broken DSA PKCS#8, UGH! */
201 if (*p == (V_ASN1_SEQUENCE | V_ASN1_CONSTRUCTED)) {
202 ASN1_TYPE *t1, *t2;
203 if (!(ndsa = d2i_ASN1_SEQUENCE_ANY(NULL, &p, pklen)))

--- 55 unchanged lines hidden (view full) ---

259 }
260
261 if (!BN_mod_exp(dsa->pub_key, dsa->g, dsa->priv_key, dsa->p, ctx)) {
262 DSAerr(DSA_F_DSA_PRIV_DECODE, DSA_R_BN_ERROR);
263 goto dsaerr;
264 }
265
266 EVP_PKEY_assign_DSA(pkey, dsa);
265 BN_CTX_free(ctx);
266 if (ndsa)
267 sk_ASN1_TYPE_pop_free(ndsa, ASN1_TYPE_free);
268 else
269 ASN1_STRING_clear_free(privkey);
270
267
271 return 1;
268 ret = 1;
269 goto done;
272
273 decerr:
270
271 decerr:
274 DSAerr(DSA_F_DSA_PRIV_DECODE, EVP_R_DECODE_ERROR);
272 DSAerr(DSA_F_DSA_PRIV_DECODE, DSA_R_DECODE_ERROR);
275 dsaerr:
273 dsaerr:
274 DSA_free(dsa);
275 done:
276 BN_CTX_free(ctx);
276 BN_CTX_free(ctx);
277 if (privkey)
277 if (ndsa)
278 sk_ASN1_TYPE_pop_free(ndsa, ASN1_TYPE_free);
279 else
278 ASN1_STRING_clear_free(privkey);
280 ASN1_STRING_clear_free(privkey);
279 sk_ASN1_TYPE_pop_free(ndsa, ASN1_TYPE_free);
280 DSA_free(dsa);
281 return 0;
281 return ret;
282}
283
284static int dsa_priv_encode(PKCS8_PRIV_KEY_INFO *p8, const EVP_PKEY *pkey)
285{
286 ASN1_STRING *params = NULL;
287 ASN1_INTEGER *prkey = NULL;
288 unsigned char *dp = NULL;
289 int dplen;

--- 389 unchanged lines hidden ---
282}
283
284static int dsa_priv_encode(PKCS8_PRIV_KEY_INFO *p8, const EVP_PKEY *pkey)
285{
286 ASN1_STRING *params = NULL;
287 ASN1_INTEGER *prkey = NULL;
288 unsigned char *dp = NULL;
289 int dplen;

--- 389 unchanged lines hidden ---