summaryrefslogtreecommitdiffstats
path: root/lib/libcrypto/evp/p_lib.c
diff options
context:
space:
mode:
authorjsing <jsing@openbsd.org>2014-05-07 17:41:41 +0000
committerjsing <jsing@openbsd.org>2014-05-07 17:41:41 +0000
commitf7631d64c58556100173ac4fb4cbf538cf64e71d (patch)
treea34f37cc677e47ad507aa540e80eb14bcc24abe9 /lib/libcrypto/evp/p_lib.c
parentRender roff escape sequences contained in manual page descriptions (diff)
downloadwireguard-openbsd-f7631d64c58556100173ac4fb4cbf538cf64e71d.tar.xz
wireguard-openbsd-f7631d64c58556100173ac4fb4cbf538cf64e71d.zip
KNF.
Diffstat (limited to 'lib/libcrypto/evp/p_lib.c')
-rw-r--r--lib/libcrypto/evp/p_lib.c351
1 files changed, 186 insertions, 165 deletions
diff --git a/lib/libcrypto/evp/p_lib.c b/lib/libcrypto/evp/p_lib.c
index 5f5f5e328da..97d922d1bab 100644
--- a/lib/libcrypto/evp/p_lib.c
+++ b/lib/libcrypto/evp/p_lib.c
@@ -5,21 +5,21 @@
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
- *
+ *
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
- *
+ *
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
@@ -34,10 +34,10 @@
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from
+ * 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- *
+ *
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -49,7 +49,7 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
- *
+ *
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
@@ -82,134 +82,138 @@
static void EVP_PKEY_free_it(EVP_PKEY *x);
-int EVP_PKEY_bits(EVP_PKEY *pkey)
- {
+int
+EVP_PKEY_bits(EVP_PKEY *pkey)
+{
if (pkey && pkey->ameth && pkey->ameth->pkey_bits)
return pkey->ameth->pkey_bits(pkey);
return 0;
- }
+}
-int EVP_PKEY_size(EVP_PKEY *pkey)
- {
+int
+EVP_PKEY_size(EVP_PKEY *pkey)
+{
if (pkey && pkey->ameth && pkey->ameth->pkey_size)
return pkey->ameth->pkey_size(pkey);
return 0;
- }
+}
-int EVP_PKEY_save_parameters(EVP_PKEY *pkey, int mode)
- {
+int
+EVP_PKEY_save_parameters(EVP_PKEY *pkey, int mode)
+{
#ifndef OPENSSL_NO_DSA
- if (pkey->type == EVP_PKEY_DSA)
- {
- int ret=pkey->save_parameters;
+ if (pkey->type == EVP_PKEY_DSA) {
+ int ret = pkey->save_parameters;
if (mode >= 0)
- pkey->save_parameters=mode;
- return(ret);
- }
+ pkey->save_parameters = mode;
+ return (ret);
+ }
#endif
#ifndef OPENSSL_NO_EC
- if (pkey->type == EVP_PKEY_EC)
- {
+ if (pkey->type == EVP_PKEY_EC) {
int ret = pkey->save_parameters;
if (mode >= 0)
pkey->save_parameters = mode;
- return(ret);
- }
-#endif
- return(0);
+ return (ret);
}
+#endif
+ return (0);
+}
-int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from)
- {
- if (to->type != from->type)
- {
- EVPerr(EVP_F_EVP_PKEY_COPY_PARAMETERS,EVP_R_DIFFERENT_KEY_TYPES);
+int
+EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from)
+{
+ if (to->type != from->type) {
+ EVPerr(EVP_F_EVP_PKEY_COPY_PARAMETERS,
+ EVP_R_DIFFERENT_KEY_TYPES);
goto err;
- }
+ }
- if (EVP_PKEY_missing_parameters(from))
- {
- EVPerr(EVP_F_EVP_PKEY_COPY_PARAMETERS,EVP_R_MISSING_PARAMETERS);
+ if (EVP_PKEY_missing_parameters(from)) {
+ EVPerr(EVP_F_EVP_PKEY_COPY_PARAMETERS,
+ EVP_R_MISSING_PARAMETERS);
goto err;
- }
+ }
if (from->ameth && from->ameth->param_copy)
return from->ameth->param_copy(to, from);
+
err:
return 0;
- }
+}
-int EVP_PKEY_missing_parameters(const EVP_PKEY *pkey)
- {
+int
+EVP_PKEY_missing_parameters(const EVP_PKEY *pkey)
+{
if (pkey->ameth && pkey->ameth->param_missing)
return pkey->ameth->param_missing(pkey);
return 0;
- }
+}
-int EVP_PKEY_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b)
- {
+int
+EVP_PKEY_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b)
+{
if (a->type != b->type)
return -1;
if (a->ameth && a->ameth->param_cmp)
return a->ameth->param_cmp(a, b);
return -2;
- }
+}
-int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b)
- {
+int
+EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b)
+{
if (a->type != b->type)
return -1;
- if (a->ameth)
- {
+ if (a->ameth) {
int ret;
/* Compare parameters if the algorithm has them */
- if (a->ameth->param_cmp)
- {
+ if (a->ameth->param_cmp) {
ret = a->ameth->param_cmp(a, b);
if (ret <= 0)
return ret;
- }
+ }
if (a->ameth->pub_cmp)
return a->ameth->pub_cmp(a, b);
- }
+ }
return -2;
- }
+}
-EVP_PKEY *EVP_PKEY_new(void)
- {
+EVP_PKEY *
+EVP_PKEY_new(void)
+{
EVP_PKEY *ret;
- ret=(EVP_PKEY *)malloc(sizeof(EVP_PKEY));
- if (ret == NULL)
- {
- EVPerr(EVP_F_EVP_PKEY_NEW,ERR_R_MALLOC_FAILURE);
- return(NULL);
- }
- ret->type=EVP_PKEY_NONE;
- ret->save_type=EVP_PKEY_NONE;
- ret->references=1;
- ret->ameth=NULL;
- ret->engine=NULL;
- ret->pkey.ptr=NULL;
- ret->attributes=NULL;
- ret->save_parameters=1;
- return(ret);
+ ret = (EVP_PKEY *)malloc(sizeof(EVP_PKEY));
+ if (ret == NULL) {
+ EVPerr(EVP_F_EVP_PKEY_NEW, ERR_R_MALLOC_FAILURE);
+ return (NULL);
}
+ ret->type = EVP_PKEY_NONE;
+ ret->save_type = EVP_PKEY_NONE;
+ ret->references = 1;
+ ret->ameth = NULL;
+ ret->engine = NULL;
+ ret->pkey.ptr = NULL;
+ ret->attributes = NULL;
+ ret->save_parameters = 1;
+ return (ret);
+}
/* Setup a public key ASN1 method and ENGINE from a NID or a string.
* If pkey is NULL just return 1 or 0 if the algorithm exists.
*/
-static int pkey_set_type(EVP_PKEY *pkey, int type, const char *str, int len)
- {
+static int
+pkey_set_type(EVP_PKEY *pkey, int type, const char *str, int len)
+{
const EVP_PKEY_ASN1_METHOD *ameth;
ENGINE *e = NULL;
- if (pkey)
- {
+ if (pkey) {
if (pkey->pkey.ptr)
EVP_PKEY_free_it(pkey);
/* If key type matches and a method exists then this
@@ -219,13 +223,12 @@ static int pkey_set_type(EVP_PKEY *pkey, int type, const char *str, int len)
return 1;
#ifndef OPENSSL_NO_ENGINE
/* If we have an ENGINE release it */
- if (pkey->engine)
- {
+ if (pkey->engine) {
ENGINE_finish(pkey->engine);
pkey->engine = NULL;
- }
-#endif
}
+#endif
+ }
if (str)
ameth = EVP_PKEY_asn1_find_str(&e, str, len);
else
@@ -234,57 +237,61 @@ static int pkey_set_type(EVP_PKEY *pkey, int type, const char *str, int len)
if (!pkey && e)
ENGINE_finish(e);
#endif
- if (!ameth)
- {
+ if (!ameth) {
EVPerr(EVP_F_PKEY_SET_TYPE, EVP_R_UNSUPPORTED_ALGORITHM);
return 0;
- }
- if (pkey)
- {
+ }
+ if (pkey) {
pkey->ameth = ameth;
pkey->engine = e;
pkey->type = pkey->ameth->pkey_id;
- pkey->save_type=type;
- }
- return 1;
+ pkey->save_type = type;
}
+ return 1;
+}
-int EVP_PKEY_set_type(EVP_PKEY *pkey, int type)
- {
+int
+EVP_PKEY_set_type(EVP_PKEY *pkey, int type)
+{
return pkey_set_type(pkey, type, NULL, -1);
- }
+}
-int EVP_PKEY_set_type_str(EVP_PKEY *pkey, const char *str, int len)
- {
+int
+EVP_PKEY_set_type_str(EVP_PKEY *pkey, const char *str, int len)
+{
return pkey_set_type(pkey, EVP_PKEY_NONE, str, len);
- }
+}
-int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key)
- {
+int
+EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key)
+{
if (!EVP_PKEY_set_type(pkey, type))
return 0;
- pkey->pkey.ptr=key;
+ pkey->pkey.ptr = key;
return (key != NULL);
- }
+}
-void *EVP_PKEY_get0(EVP_PKEY *pkey)
- {
+void *
+EVP_PKEY_get0(EVP_PKEY *pkey)
+{
return pkey->pkey.ptr;
- }
+}
#ifndef OPENSSL_NO_RSA
-int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, RSA *key)
+int
+EVP_PKEY_set1_RSA(EVP_PKEY *pkey, RSA *key)
{
int ret = EVP_PKEY_assign_RSA(pkey, key);
- if(ret)
+ if (ret)
RSA_up_ref(key);
return ret;
}
-RSA *EVP_PKEY_get1_RSA(EVP_PKEY *pkey)
- {
- if(pkey->type != EVP_PKEY_RSA) {
+RSA *
+EVP_PKEY_get1_RSA(EVP_PKEY *pkey)
+{
+ if (pkey->type != EVP_PKEY_RSA) {
EVPerr(EVP_F_EVP_PKEY_GET1_RSA, EVP_R_EXPECTING_AN_RSA_KEY);
return NULL;
}
@@ -294,17 +301,19 @@ RSA *EVP_PKEY_get1_RSA(EVP_PKEY *pkey)
#endif
#ifndef OPENSSL_NO_DSA
-int EVP_PKEY_set1_DSA(EVP_PKEY *pkey, DSA *key)
+int
+EVP_PKEY_set1_DSA(EVP_PKEY *pkey, DSA *key)
{
int ret = EVP_PKEY_assign_DSA(pkey, key);
- if(ret)
+ if (ret)
DSA_up_ref(key);
return ret;
}
-DSA *EVP_PKEY_get1_DSA(EVP_PKEY *pkey)
- {
- if(pkey->type != EVP_PKEY_DSA) {
+DSA *
+EVP_PKEY_get1_DSA(EVP_PKEY *pkey)
+{
+ if (pkey->type != EVP_PKEY_DSA) {
EVPerr(EVP_F_EVP_PKEY_GET1_DSA, EVP_R_EXPECTING_A_DSA_KEY);
return NULL;
}
@@ -315,18 +324,19 @@ DSA *EVP_PKEY_get1_DSA(EVP_PKEY *pkey)
#ifndef OPENSSL_NO_EC
-int EVP_PKEY_set1_EC_KEY(EVP_PKEY *pkey, EC_KEY *key)
+int
+EVP_PKEY_set1_EC_KEY(EVP_PKEY *pkey, EC_KEY *key)
{
- int ret = EVP_PKEY_assign_EC_KEY(pkey,key);
+ int ret = EVP_PKEY_assign_EC_KEY(pkey, key);
if (ret)
EC_KEY_up_ref(key);
return ret;
}
-EC_KEY *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey)
+EC_KEY *
+EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey)
{
- if (pkey->type != EVP_PKEY_EC)
- {
+ if (pkey->type != EVP_PKEY_EC) {
EVPerr(EVP_F_EVP_PKEY_GET1_EC_KEY, EVP_R_EXPECTING_A_EC_KEY);
return NULL;
}
@@ -338,17 +348,19 @@ EC_KEY *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey)
#ifndef OPENSSL_NO_DH
-int EVP_PKEY_set1_DH(EVP_PKEY *pkey, DH *key)
+int
+EVP_PKEY_set1_DH(EVP_PKEY *pkey, DH *key)
{
int ret = EVP_PKEY_assign_DH(pkey, key);
- if(ret)
+ if (ret)
DH_up_ref(key);
return ret;
}
-DH *EVP_PKEY_get1_DH(EVP_PKEY *pkey)
- {
- if(pkey->type != EVP_PKEY_DH) {
+DH *
+EVP_PKEY_get1_DH(EVP_PKEY *pkey)
+{
+ if (pkey->type != EVP_PKEY_DH) {
EVPerr(EVP_F_EVP_PKEY_GET1_DH, EVP_R_EXPECTING_A_DH_KEY);
return NULL;
}
@@ -357,8 +369,9 @@ DH *EVP_PKEY_get1_DH(EVP_PKEY *pkey)
}
#endif
-int EVP_PKEY_type(int type)
- {
+int
+EVP_PKEY_type(int type)
+{
int ret;
const EVP_PKEY_ASN1_METHOD *ameth;
ENGINE *e;
@@ -372,89 +385,97 @@ int EVP_PKEY_type(int type)
ENGINE_finish(e);
#endif
return ret;
- }
+}
-int EVP_PKEY_id(const EVP_PKEY *pkey)
- {
+int
+EVP_PKEY_id(const EVP_PKEY *pkey)
+{
return pkey->type;
- }
+}
-int EVP_PKEY_base_id(const EVP_PKEY *pkey)
- {
+int
+EVP_PKEY_base_id(const EVP_PKEY *pkey)
+{
return EVP_PKEY_type(pkey->type);
- }
+}
-void EVP_PKEY_free(EVP_PKEY *x)
- {
+void
+EVP_PKEY_free(EVP_PKEY *x)
+{
int i;
- if (x == NULL) return;
+ if (x == NULL)
+ return;
- i=CRYPTO_add(&x->references,-1,CRYPTO_LOCK_EVP_PKEY);
- if (i > 0) return;
+ i = CRYPTO_add(&x->references, -1, CRYPTO_LOCK_EVP_PKEY);
+ if (i > 0)
+ return;
EVP_PKEY_free_it(x);
if (x->attributes)
sk_X509_ATTRIBUTE_pop_free(x->attributes, X509_ATTRIBUTE_free);
free(x);
- }
+}
-static void EVP_PKEY_free_it(EVP_PKEY *x)
- {
- if (x->ameth && x->ameth->pkey_free)
- {
+static void
+EVP_PKEY_free_it(EVP_PKEY *x)
+{
+ if (x->ameth && x->ameth->pkey_free) {
x->ameth->pkey_free(x);
x->pkey.ptr = NULL;
- }
+ }
#ifndef OPENSSL_NO_ENGINE
- if (x->engine)
- {
+ if (x->engine) {
ENGINE_finish(x->engine);
x->engine = NULL;
- }
-#endif
}
+#endif
+}
-static int unsup_alg(BIO *out, const EVP_PKEY *pkey, int indent,
- const char *kstr)
- {
+static int
+unsup_alg(BIO *out, const EVP_PKEY *pkey, int indent, const char *kstr)
+{
BIO_indent(out, indent, 128);
BIO_printf(out, "%s algorithm \"%s\" unsupported\n",
- kstr, OBJ_nid2ln(pkey->type));
+ kstr, OBJ_nid2ln(pkey->type));
return 1;
- }
+}
-int EVP_PKEY_print_public(BIO *out, const EVP_PKEY *pkey,
- int indent, ASN1_PCTX *pctx)
- {
+int
+EVP_PKEY_print_public(BIO *out, const EVP_PKEY *pkey, int indent,
+ ASN1_PCTX *pctx)
+{
if (pkey->ameth && pkey->ameth->pub_print)
return pkey->ameth->pub_print(out, pkey, indent, pctx);
-
+
return unsup_alg(out, pkey, indent, "Public Key");
- }
+}
-int EVP_PKEY_print_private(BIO *out, const EVP_PKEY *pkey,
- int indent, ASN1_PCTX *pctx)
- {
+int
+EVP_PKEY_print_private(BIO *out, const EVP_PKEY *pkey, int indent,
+ ASN1_PCTX *pctx)
+{
if (pkey->ameth && pkey->ameth->priv_print)
return pkey->ameth->priv_print(out, pkey, indent, pctx);
-
+
return unsup_alg(out, pkey, indent, "Private Key");
- }
+}
-int EVP_PKEY_print_params(BIO *out, const EVP_PKEY *pkey,
- int indent, ASN1_PCTX *pctx)
- {
+int
+EVP_PKEY_print_params(BIO *out, const EVP_PKEY *pkey, int indent,
+ ASN1_PCTX *pctx)
+{
if (pkey->ameth && pkey->ameth->param_print)
return pkey->ameth->param_print(out, pkey, indent, pctx);
return unsup_alg(out, pkey, indent, "Parameters");
- }
+}
-int EVP_PKEY_get_default_digest_nid(EVP_PKEY *pkey, int *pnid)
- {
+int
+EVP_PKEY_get_default_digest_nid(EVP_PKEY *pkey, int *pnid)
+{
if (!pkey->ameth || !pkey->ameth->pkey_ctrl)
return -2;
return pkey->ameth->pkey_ctrl(pkey, ASN1_PKEY_CTRL_DEFAULT_MD_NID,
- 0, pnid);
- }
+ 0, pnid);
+}