diff options
| author | beck <> | 2000-12-15 02:58:47 +0000 |
|---|---|---|
| committer | beck <> | 2000-12-15 02:58:47 +0000 |
| commit | 9200bb13d15da4b2a23e6bc92c20e95b74aa2113 (patch) | |
| tree | 5c52d628ec1e34be76e7ef2a4235d248b7c44d24 /src/lib/libcrypto/evp/evp_pkey.c | |
| parent | e131d25072e3d4197ba4b9bcc0d1b27d34d6488d (diff) | |
| download | openbsd-9200bb13d15da4b2a23e6bc92c20e95b74aa2113.tar.gz openbsd-9200bb13d15da4b2a23e6bc92c20e95b74aa2113.tar.bz2 openbsd-9200bb13d15da4b2a23e6bc92c20e95b74aa2113.zip | |
openssl-engine-0.9.6 merge
Diffstat (limited to 'src/lib/libcrypto/evp/evp_pkey.c')
| -rw-r--r-- | src/lib/libcrypto/evp/evp_pkey.c | 49 |
1 files changed, 25 insertions, 24 deletions
diff --git a/src/lib/libcrypto/evp/evp_pkey.c b/src/lib/libcrypto/evp/evp_pkey.c index 4ab091fa56..8df2874f3c 100644 --- a/src/lib/libcrypto/evp/evp_pkey.c +++ b/src/lib/libcrypto/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; |
