diff options
author | Adam Langley <agl@google.com> | 2014-09-06 04:04:51 +0400 |
---|---|---|
committer | Adam Langley <agl@google.com> | 2014-09-19 02:38:11 +0400 |
commit | bed8ce78f001c600a143966b932f8e587c35e573 (patch) | |
tree | 543a11672b14d1425a80152f24b36243e4b6c42e /crypto/dsa | |
parent | d7c5368a0f67e8f393384170fe230bf9f598f4cb (diff) |
Add misc functions for easier porting.
Android requested that the wpa_supplicant go upstream. This change adds
some dummy functions and reinstates DSA_dup_DH in order to make the diff
smaller and easier for upstream.
Change-Id: I77ac271b8652bae5a0bbe16afde51d9096f3dfb5
Reviewed-on: https://boringssl-review.googlesource.com/1740
Reviewed-by: Adam Langley <agl@google.com>
Diffstat (limited to 'crypto/dsa')
-rw-r--r-- | crypto/dsa/dsa.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/crypto/dsa/dsa.c b/crypto/dsa/dsa.c index 8c66ddf2..25d15c05 100644 --- a/crypto/dsa/dsa.c +++ b/crypto/dsa/dsa.c @@ -60,6 +60,7 @@ #include <openssl/dsa.h> #include <openssl/asn1.h> +#include <openssl/dh.h> #include <openssl/engine.h> #include <openssl/err.h> #include <openssl/ex_data.h> @@ -332,3 +333,35 @@ int DSA_set_ex_data(DSA *d, int idx, void *arg) { void *DSA_get_ex_data(const DSA *d, int idx) { return CRYPTO_get_ex_data(&d->ex_data, idx); } + +DH *DSA_dup_DH(const DSA *r) { + DH *ret = NULL; + + if (r == NULL) { + goto err; + } + ret = DH_new(); + if (ret == NULL) { + goto err; + } + if (r->q != NULL) { + ret->priv_length = BN_num_bits(r->q); + if ((ret->q = BN_dup(r->q)) == NULL) { + goto err; + } + } + if ((r->p != NULL && (ret->p = BN_dup(r->p)) == NULL) || + (r->g != NULL && (ret->g = BN_dup(r->g)) == NULL) || + (r->pub_key != NULL && (ret->pub_key = BN_dup(r->pub_key)) == NULL) || + (r->priv_key != NULL && (ret->priv_key = BN_dup(r->priv_key)) == NULL)) { + goto err; + } + + return ret; + +err: + if (ret != NULL) { + DH_free(ret); + } + return NULL; +} |