diff options
Diffstat (limited to 'src/lib/libcrypto/evp/p_lib.c')
| -rw-r--r-- | src/lib/libcrypto/evp/p_lib.c | 67 |
1 files changed, 48 insertions, 19 deletions
diff --git a/src/lib/libcrypto/evp/p_lib.c b/src/lib/libcrypto/evp/p_lib.c index e001755ef1..3cd1bf3b34 100644 --- a/src/lib/libcrypto/evp/p_lib.c +++ b/src/lib/libcrypto/evp/p_lib.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: p_lib.c,v 1.18 2018/02/14 16:40:42 jsing Exp $ */ | 1 | /* $OpenBSD: p_lib.c,v 1.19 2018/02/17 13:47:36 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 | * |
| @@ -286,13 +286,14 @@ EVP_PKEY_get0(EVP_PKEY *pkey) | |||
| 286 | } | 286 | } |
| 287 | 287 | ||
| 288 | #ifndef OPENSSL_NO_RSA | 288 | #ifndef OPENSSL_NO_RSA |
| 289 | int | 289 | RSA * |
| 290 | EVP_PKEY_set1_RSA(EVP_PKEY *pkey, RSA *key) | 290 | EVP_PKEY_get0_RSA(EVP_PKEY *pkey) |
| 291 | { | 291 | { |
| 292 | int ret = EVP_PKEY_assign_RSA(pkey, key); | 292 | if (pkey->type != EVP_PKEY_RSA) { |
| 293 | if (ret) | 293 | EVPerror(EVP_R_EXPECTING_AN_RSA_KEY); |
| 294 | RSA_up_ref(key); | 294 | return NULL; |
| 295 | return ret; | 295 | } |
| 296 | return pkey->pkey.rsa; | ||
| 296 | } | 297 | } |
| 297 | 298 | ||
| 298 | RSA * | 299 | RSA * |
| @@ -305,17 +306,27 @@ EVP_PKEY_get1_RSA(EVP_PKEY *pkey) | |||
| 305 | RSA_up_ref(pkey->pkey.rsa); | 306 | RSA_up_ref(pkey->pkey.rsa); |
| 306 | return pkey->pkey.rsa; | 307 | return pkey->pkey.rsa; |
| 307 | } | 308 | } |
| 308 | #endif | ||
| 309 | 309 | ||
| 310 | #ifndef OPENSSL_NO_DSA | ||
| 311 | int | 310 | int |
| 312 | EVP_PKEY_set1_DSA(EVP_PKEY *pkey, DSA *key) | 311 | EVP_PKEY_set1_RSA(EVP_PKEY *pkey, RSA *key) |
| 313 | { | 312 | { |
| 314 | int ret = EVP_PKEY_assign_DSA(pkey, key); | 313 | int ret = EVP_PKEY_assign_RSA(pkey, key); |
| 315 | if (ret) | 314 | if (ret) |
| 316 | DSA_up_ref(key); | 315 | RSA_up_ref(key); |
| 317 | return ret; | 316 | return ret; |
| 318 | } | 317 | } |
| 318 | #endif | ||
| 319 | |||
| 320 | #ifndef OPENSSL_NO_DSA | ||
| 321 | DSA * | ||
| 322 | EVP_PKEY_get0_DSA(EVP_PKEY *pkey) | ||
| 323 | { | ||
| 324 | if (pkey->type != EVP_PKEY_DSA) { | ||
| 325 | EVPerror(EVP_R_EXPECTING_A_DSA_KEY); | ||
| 326 | return NULL; | ||
| 327 | } | ||
| 328 | return pkey->pkey.dsa; | ||
| 329 | } | ||
| 319 | 330 | ||
| 320 | DSA * | 331 | DSA * |
| 321 | EVP_PKEY_get1_DSA(EVP_PKEY *pkey) | 332 | EVP_PKEY_get1_DSA(EVP_PKEY *pkey) |
| @@ -327,6 +338,15 @@ EVP_PKEY_get1_DSA(EVP_PKEY *pkey) | |||
| 327 | DSA_up_ref(pkey->pkey.dsa); | 338 | DSA_up_ref(pkey->pkey.dsa); |
| 328 | return pkey->pkey.dsa; | 339 | return pkey->pkey.dsa; |
| 329 | } | 340 | } |
| 341 | |||
| 342 | int | ||
| 343 | EVP_PKEY_set1_DSA(EVP_PKEY *pkey, DSA *key) | ||
| 344 | { | ||
| 345 | int ret = EVP_PKEY_assign_DSA(pkey, key); | ||
| 346 | if (ret) | ||
| 347 | DSA_up_ref(key); | ||
| 348 | return ret; | ||
| 349 | } | ||
| 330 | #endif | 350 | #endif |
| 331 | 351 | ||
| 332 | #ifndef OPENSSL_NO_EC | 352 | #ifndef OPENSSL_NO_EC |
| @@ -354,14 +374,14 @@ EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey) | |||
| 354 | 374 | ||
| 355 | 375 | ||
| 356 | #ifndef OPENSSL_NO_DH | 376 | #ifndef OPENSSL_NO_DH |
| 357 | 377 | DH * | |
| 358 | int | 378 | EVP_PKEY_get0_DH(EVP_PKEY *pkey) |
| 359 | EVP_PKEY_set1_DH(EVP_PKEY *pkey, DH *key) | ||
| 360 | { | 379 | { |
| 361 | int ret = EVP_PKEY_assign_DH(pkey, key); | 380 | if (pkey->type != EVP_PKEY_DH) { |
| 362 | if (ret) | 381 | EVPerror(EVP_R_EXPECTING_A_DH_KEY); |
| 363 | DH_up_ref(key); | 382 | return NULL; |
| 364 | return ret; | 383 | } |
| 384 | return pkey->pkey.dh; | ||
| 365 | } | 385 | } |
| 366 | 386 | ||
| 367 | DH * | 387 | DH * |
| @@ -374,6 +394,15 @@ EVP_PKEY_get1_DH(EVP_PKEY *pkey) | |||
| 374 | DH_up_ref(pkey->pkey.dh); | 394 | DH_up_ref(pkey->pkey.dh); |
| 375 | return pkey->pkey.dh; | 395 | return pkey->pkey.dh; |
| 376 | } | 396 | } |
| 397 | |||
| 398 | int | ||
| 399 | EVP_PKEY_set1_DH(EVP_PKEY *pkey, DH *key) | ||
| 400 | { | ||
| 401 | int ret = EVP_PKEY_assign_DH(pkey, key); | ||
| 402 | if (ret) | ||
| 403 | DH_up_ref(key); | ||
| 404 | return ret; | ||
| 405 | } | ||
| 377 | #endif | 406 | #endif |
| 378 | 407 | ||
| 379 | int | 408 | int |
