diff options
Diffstat (limited to 'src/lib/libssl/src/crypto/evp/evp_pkey.c')
-rw-r--r-- | src/lib/libssl/src/crypto/evp/evp_pkey.c | 49 |
1 files changed, 25 insertions, 24 deletions
diff --git a/src/lib/libssl/src/crypto/evp/evp_pkey.c b/src/lib/libssl/src/crypto/evp/evp_pkey.c index 4ab091fa56..8df2874f3c 100644 --- a/src/lib/libssl/src/crypto/evp/evp_pkey.c +++ b/src/lib/libssl/src/crypto/evp/evp_pkey.c | |||
@@ -76,7 +76,7 @@ EVP_PKEY *EVP_PKCS82PKEY (PKCS8_PRIV_KEY_INFO *p8) | |||
76 | DSA *dsa = NULL; | 76 | DSA *dsa = NULL; |
77 | ASN1_INTEGER *privkey; | 77 | ASN1_INTEGER *privkey; |
78 | ASN1_TYPE *t1, *t2, *param = NULL; | 78 | ASN1_TYPE *t1, *t2, *param = NULL; |
79 | STACK *ndsa = NULL; | 79 | STACK_OF(ASN1_TYPE) *ndsa = NULL; |
80 | BN_CTX *ctx = NULL; | 80 | BN_CTX *ctx = NULL; |
81 | int plen; | 81 | int plen; |
82 | #endif | 82 | #endif |
@@ -119,13 +119,13 @@ EVP_PKEY *EVP_PKCS82PKEY (PKCS8_PRIV_KEY_INFO *p8) | |||
119 | 119 | ||
120 | /* Check for broken DSA PKCS#8, UGH! */ | 120 | /* Check for broken DSA PKCS#8, UGH! */ |
121 | if(*p == (V_ASN1_SEQUENCE|V_ASN1_CONSTRUCTED)) { | 121 | if(*p == (V_ASN1_SEQUENCE|V_ASN1_CONSTRUCTED)) { |
122 | if(!(ndsa = ASN1_seq_unpack(p, pkeylen, | 122 | if(!(ndsa = ASN1_seq_unpack_ASN1_TYPE(p, pkeylen, |
123 | (char *(*)())d2i_ASN1_TYPE, | 123 | d2i_ASN1_TYPE, |
124 | ASN1_TYPE_free))) { | 124 | ASN1_TYPE_free))) { |
125 | EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_DECODE_ERROR); | 125 | EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_DECODE_ERROR); |
126 | goto dsaerr; | 126 | goto dsaerr; |
127 | } | 127 | } |
128 | if(sk_num(ndsa) != 2 ) { | 128 | if(sk_ASN1_TYPE_num(ndsa) != 2 ) { |
129 | EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_DECODE_ERROR); | 129 | EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_DECODE_ERROR); |
130 | goto dsaerr; | 130 | goto dsaerr; |
131 | } | 131 | } |
@@ -134,8 +134,8 @@ EVP_PKEY *EVP_PKCS82PKEY (PKCS8_PRIV_KEY_INFO *p8) | |||
134 | * SEQUENCE {pub_key, priv_key} | 134 | * SEQUENCE {pub_key, priv_key} |
135 | */ | 135 | */ |
136 | 136 | ||
137 | t1 = (ASN1_TYPE *)sk_value(ndsa, 0); | 137 | t1 = sk_ASN1_TYPE_value(ndsa, 0); |
138 | t2 = (ASN1_TYPE *)sk_value(ndsa, 1); | 138 | t2 = sk_ASN1_TYPE_value(ndsa, 1); |
139 | if(t1->type == V_ASN1_SEQUENCE) { | 139 | if(t1->type == V_ASN1_SEQUENCE) { |
140 | p8->broken = PKCS8_EMBEDDED_PARAM; | 140 | p8->broken = PKCS8_EMBEDDED_PARAM; |
141 | param = t1; | 141 | param = t1; |
@@ -193,12 +193,12 @@ EVP_PKEY *EVP_PKCS82PKEY (PKCS8_PRIV_KEY_INFO *p8) | |||
193 | 193 | ||
194 | EVP_PKEY_assign_DSA(pkey, dsa); | 194 | EVP_PKEY_assign_DSA(pkey, dsa); |
195 | BN_CTX_free (ctx); | 195 | BN_CTX_free (ctx); |
196 | if(ndsa) sk_pop_free(ndsa, ASN1_TYPE_free); | 196 | if(ndsa) sk_ASN1_TYPE_pop_free(ndsa, ASN1_TYPE_free); |
197 | else ASN1_INTEGER_free(privkey); | 197 | else ASN1_INTEGER_free(privkey); |
198 | break; | 198 | break; |
199 | dsaerr: | 199 | dsaerr: |
200 | BN_CTX_free (ctx); | 200 | BN_CTX_free (ctx); |
201 | sk_pop_free(ndsa, ASN1_TYPE_free); | 201 | sk_ASN1_TYPE_pop_free(ndsa, ASN1_TYPE_free); |
202 | DSA_free(dsa); | 202 | DSA_free(dsa); |
203 | EVP_PKEY_free(pkey); | 203 | EVP_PKEY_free(pkey); |
204 | return NULL; | 204 | return NULL; |
@@ -302,12 +302,13 @@ static int dsa_pkey2pkcs8(PKCS8_PRIV_KEY_INFO *p8, EVP_PKEY *pkey) | |||
302 | ASN1_STRING *params; | 302 | ASN1_STRING *params; |
303 | ASN1_INTEGER *prkey; | 303 | ASN1_INTEGER *prkey; |
304 | ASN1_TYPE *ttmp; | 304 | ASN1_TYPE *ttmp; |
305 | STACK *ndsa; | 305 | STACK_OF(ASN1_TYPE) *ndsa; |
306 | unsigned char *p, *q; | 306 | unsigned char *p, *q; |
307 | int len; | 307 | int len; |
308 | |||
308 | p8->pkeyalg->algorithm = OBJ_nid2obj(NID_dsa); | 309 | p8->pkeyalg->algorithm = OBJ_nid2obj(NID_dsa); |
309 | len = i2d_DSAparams (pkey->pkey.dsa, NULL); | 310 | len = i2d_DSAparams (pkey->pkey.dsa, NULL); |
310 | if (!(p = Malloc(len))) { | 311 | if (!(p = OPENSSL_malloc(len))) { |
311 | EVPerr(EVP_F_EVP_PKEY2PKCS8,ERR_R_MALLOC_FAILURE); | 312 | EVPerr(EVP_F_EVP_PKEY2PKCS8,ERR_R_MALLOC_FAILURE); |
312 | PKCS8_PRIV_KEY_INFO_free (p8); | 313 | PKCS8_PRIV_KEY_INFO_free (p8); |
313 | return 0; | 314 | return 0; |
@@ -316,7 +317,7 @@ static int dsa_pkey2pkcs8(PKCS8_PRIV_KEY_INFO *p8, EVP_PKEY *pkey) | |||
316 | i2d_DSAparams (pkey->pkey.dsa, &q); | 317 | i2d_DSAparams (pkey->pkey.dsa, &q); |
317 | params = ASN1_STRING_new(); | 318 | params = ASN1_STRING_new(); |
318 | ASN1_STRING_set(params, p, len); | 319 | ASN1_STRING_set(params, p, len); |
319 | Free(p); | 320 | OPENSSL_free(p); |
320 | /* Get private key into integer */ | 321 | /* Get private key into integer */ |
321 | if (!(prkey = BN_to_ASN1_INTEGER (pkey->pkey.dsa->priv_key, NULL))) { | 322 | if (!(prkey = BN_to_ASN1_INTEGER (pkey->pkey.dsa->priv_key, NULL))) { |
322 | EVPerr(EVP_F_EVP_PKEY2PKCS8,EVP_R_ENCODE_ERROR); | 323 | EVPerr(EVP_F_EVP_PKEY2PKCS8,EVP_R_ENCODE_ERROR); |
@@ -345,7 +346,7 @@ static int dsa_pkey2pkcs8(PKCS8_PRIV_KEY_INFO *p8, EVP_PKEY *pkey) | |||
345 | 346 | ||
346 | p8->pkeyalg->parameter->value.sequence = params; | 347 | p8->pkeyalg->parameter->value.sequence = params; |
347 | p8->pkeyalg->parameter->type = V_ASN1_SEQUENCE; | 348 | p8->pkeyalg->parameter->type = V_ASN1_SEQUENCE; |
348 | ndsa = sk_new_null(); | 349 | ndsa = sk_ASN1_TYPE_new_null(); |
349 | ttmp = ASN1_TYPE_new(); | 350 | ttmp = ASN1_TYPE_new(); |
350 | if (!(ttmp->value.integer = BN_to_ASN1_INTEGER (pkey->pkey.dsa->pub_key, NULL))) { | 351 | if (!(ttmp->value.integer = BN_to_ASN1_INTEGER (pkey->pkey.dsa->pub_key, NULL))) { |
351 | EVPerr(EVP_F_EVP_PKEY2PKCS8,EVP_R_ENCODE_ERROR); | 352 | EVPerr(EVP_F_EVP_PKEY2PKCS8,EVP_R_ENCODE_ERROR); |
@@ -353,53 +354,53 @@ static int dsa_pkey2pkcs8(PKCS8_PRIV_KEY_INFO *p8, EVP_PKEY *pkey) | |||
353 | return 0; | 354 | return 0; |
354 | } | 355 | } |
355 | ttmp->type = V_ASN1_INTEGER; | 356 | ttmp->type = V_ASN1_INTEGER; |
356 | sk_push(ndsa, (char *)ttmp); | 357 | sk_ASN1_TYPE_push(ndsa, ttmp); |
357 | 358 | ||
358 | ttmp = ASN1_TYPE_new(); | 359 | ttmp = ASN1_TYPE_new(); |
359 | ttmp->value.integer = prkey; | 360 | ttmp->value.integer = prkey; |
360 | ttmp->type = V_ASN1_INTEGER; | 361 | ttmp->type = V_ASN1_INTEGER; |
361 | sk_push(ndsa, (char *)ttmp); | 362 | sk_ASN1_TYPE_push(ndsa, ttmp); |
362 | 363 | ||
363 | p8->pkey->value.octet_string = ASN1_OCTET_STRING_new(); | 364 | p8->pkey->value.octet_string = ASN1_OCTET_STRING_new(); |
364 | 365 | ||
365 | if (!ASN1_seq_pack(ndsa, i2d_ASN1_TYPE, | 366 | if (!ASN1_seq_pack_ASN1_TYPE(ndsa, i2d_ASN1_TYPE, |
366 | &p8->pkey->value.octet_string->data, | 367 | &p8->pkey->value.octet_string->data, |
367 | &p8->pkey->value.octet_string->length)) { | 368 | &p8->pkey->value.octet_string->length)) { |
368 | 369 | ||
369 | EVPerr(EVP_F_EVP_PKEY2PKCS8,ERR_R_MALLOC_FAILURE); | 370 | EVPerr(EVP_F_EVP_PKEY2PKCS8,ERR_R_MALLOC_FAILURE); |
370 | sk_pop_free(ndsa, ASN1_TYPE_free); | 371 | sk_ASN1_TYPE_pop_free(ndsa, ASN1_TYPE_free); |
371 | M_ASN1_INTEGER_free(prkey); | 372 | M_ASN1_INTEGER_free(prkey); |
372 | return 0; | 373 | return 0; |
373 | } | 374 | } |
374 | sk_pop_free(ndsa, ASN1_TYPE_free); | 375 | sk_ASN1_TYPE_pop_free(ndsa, ASN1_TYPE_free); |
375 | break; | 376 | break; |
376 | 377 | ||
377 | case PKCS8_EMBEDDED_PARAM: | 378 | case PKCS8_EMBEDDED_PARAM: |
378 | 379 | ||
379 | p8->pkeyalg->parameter->type = V_ASN1_NULL; | 380 | p8->pkeyalg->parameter->type = V_ASN1_NULL; |
380 | ndsa = sk_new_null(); | 381 | ndsa = sk_ASN1_TYPE_new_null(); |
381 | ttmp = ASN1_TYPE_new(); | 382 | ttmp = ASN1_TYPE_new(); |
382 | ttmp->value.sequence = params; | 383 | ttmp->value.sequence = params; |
383 | ttmp->type = V_ASN1_SEQUENCE; | 384 | ttmp->type = V_ASN1_SEQUENCE; |
384 | sk_push(ndsa, (char *)ttmp); | 385 | sk_ASN1_TYPE_push(ndsa, ttmp); |
385 | 386 | ||
386 | ttmp = ASN1_TYPE_new(); | 387 | ttmp = ASN1_TYPE_new(); |
387 | ttmp->value.integer = prkey; | 388 | ttmp->value.integer = prkey; |
388 | ttmp->type = V_ASN1_INTEGER; | 389 | ttmp->type = V_ASN1_INTEGER; |
389 | sk_push(ndsa, (char *)ttmp); | 390 | sk_ASN1_TYPE_push(ndsa, ttmp); |
390 | 391 | ||
391 | p8->pkey->value.octet_string = ASN1_OCTET_STRING_new(); | 392 | p8->pkey->value.octet_string = ASN1_OCTET_STRING_new(); |
392 | 393 | ||
393 | if (!ASN1_seq_pack(ndsa, i2d_ASN1_TYPE, | 394 | if (!ASN1_seq_pack_ASN1_TYPE(ndsa, i2d_ASN1_TYPE, |
394 | &p8->pkey->value.octet_string->data, | 395 | &p8->pkey->value.octet_string->data, |
395 | &p8->pkey->value.octet_string->length)) { | 396 | &p8->pkey->value.octet_string->length)) { |
396 | 397 | ||
397 | EVPerr(EVP_F_EVP_PKEY2PKCS8,ERR_R_MALLOC_FAILURE); | 398 | EVPerr(EVP_F_EVP_PKEY2PKCS8,ERR_R_MALLOC_FAILURE); |
398 | sk_pop_free(ndsa, ASN1_TYPE_free); | 399 | sk_ASN1_TYPE_pop_free(ndsa, ASN1_TYPE_free); |
399 | M_ASN1_INTEGER_free (prkey); | 400 | M_ASN1_INTEGER_free (prkey); |
400 | return 0; | 401 | return 0; |
401 | } | 402 | } |
402 | sk_pop_free(ndsa, ASN1_TYPE_free); | 403 | sk_ASN1_TYPE_pop_free(ndsa, ASN1_TYPE_free); |
403 | break; | 404 | break; |
404 | } | 405 | } |
405 | return 1; | 406 | return 1; |