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 --- |