| 
									
										
										
										
											2020-03-23 12:40:47 +08:00
										 |  |  | /*
 | 
					
						
							| 
									
										
										
										
											2021-01-28 20:54:57 +08:00
										 |  |  |  * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. | 
					
						
							| 
									
										
										
										
											2020-03-23 12:40:47 +08:00
										 |  |  |  * | 
					
						
							|  |  |  |  * Licensed under the Apache License 2.0 (the "License").  You may not use | 
					
						
							|  |  |  |  * this file except in compliance with the License.  You can obtain a copy | 
					
						
							|  |  |  |  * in the file LICENSE in the source distribution or at | 
					
						
							|  |  |  |  * https://www.openssl.org/source/license.html
 | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-20 11:32:57 +08:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * DSA low level APIs are deprecated for public use, but still ok for | 
					
						
							|  |  |  |  * internal use. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | #include "internal/deprecated.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-23 12:40:47 +08:00
										 |  |  | #include <openssl/core_names.h>
 | 
					
						
							|  |  |  | #include "crypto/dsa.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*
 | 
					
						
							|  |  |  |  * The intention with the "backend" source file is to offer backend support | 
					
						
							|  |  |  |  * for legacy backends (EVP_PKEY_ASN1_METHOD and EVP_PKEY_METHOD) and provider | 
					
						
							|  |  |  |  * implementations alike. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
											
												Fix external symbols related to dsa keys
Partial fix for #12964
This adds ossl_ names for the following symbols:
dsa_check_pairwise, dsa_check_params, dsa_check_priv_key, dsa_check_pub_key, dsa_check_pub_key_partial,
dsa_do_sign_int, dsa_ffc_params_fromdata,
dsa_generate_ffc_parameters, dsa_generate_public_key,
dsa_get0_params, dsa_key_fromdata, dsa_new_with_ctx, dsa_pkey_method, dsa_sign_int
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/14231)
											
										 
											2021-02-18 14:30:37 +08:00
										 |  |  | int ossl_dsa_key_fromdata(DSA *dsa, const OSSL_PARAM params[]) | 
					
						
							| 
									
										
										
										
											2020-03-23 12:40:47 +08:00
										 |  |  | { | 
					
						
							|  |  |  |     const OSSL_PARAM *param_priv_key, *param_pub_key; | 
					
						
							|  |  |  |     BIGNUM *priv_key = NULL, *pub_key = NULL; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (dsa == NULL) | 
					
						
							|  |  |  |         return 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     param_priv_key = | 
					
						
							|  |  |  |         OSSL_PARAM_locate_const(params, OSSL_PKEY_PARAM_PRIV_KEY); | 
					
						
							|  |  |  |     param_pub_key = | 
					
						
							|  |  |  |         OSSL_PARAM_locate_const(params, OSSL_PKEY_PARAM_PUB_KEY); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* It's ok if neither half is present */ | 
					
						
							|  |  |  |     if (param_priv_key == NULL && param_pub_key == NULL) | 
					
						
							|  |  |  |         return 1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (param_pub_key != NULL && !OSSL_PARAM_get_BN(param_pub_key, &pub_key)) | 
					
						
							|  |  |  |         goto err; | 
					
						
							|  |  |  |     if (param_priv_key != NULL && !OSSL_PARAM_get_BN(param_priv_key, &priv_key)) | 
					
						
							|  |  |  |         goto err; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (!DSA_set0_key(dsa, pub_key, priv_key)) | 
					
						
							|  |  |  |         goto err; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return 1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  err: | 
					
						
							|  |  |  |     BN_clear_free(priv_key); | 
					
						
							|  |  |  |     BN_free(pub_key); | 
					
						
							|  |  |  |     return 0; | 
					
						
							|  |  |  | } |