summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/asn1/x_pkey.c
diff options
context:
space:
mode:
authorjsing <>2014-04-18 11:20:32 +0000
committerjsing <>2014-04-18 11:20:32 +0000
commit6d8ab3f51c14ff4e0ce4f0aaafede903671056b3 (patch)
tree80f89d5dfdd4e6eef26aea54fe2399d237045354 /src/lib/libcrypto/asn1/x_pkey.c
parent3a5e199af72e13c8924435aeb9126166854a7c00 (diff)
downloadopenbsd-6d8ab3f51c14ff4e0ce4f0aaafede903671056b3.tar.gz
openbsd-6d8ab3f51c14ff4e0ce4f0aaafede903671056b3.tar.bz2
openbsd-6d8ab3f51c14ff4e0ce4f0aaafede903671056b3.zip
More KNF.
Diffstat (limited to 'src/lib/libcrypto/asn1/x_pkey.c')
-rw-r--r--src/lib/libcrypto/asn1/x_pkey.c102
1 files changed, 56 insertions, 46 deletions
diff --git a/src/lib/libcrypto/asn1/x_pkey.c b/src/lib/libcrypto/asn1/x_pkey.c
index eac134a1ee..d18b8f6f5e 100644
--- a/src/lib/libcrypto/asn1/x_pkey.c
+++ b/src/lib/libcrypto/asn1/x_pkey.c
@@ -5,21 +5,21 @@
5 * This package is an SSL implementation written 5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com). 6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL. 7 * The implementation was written so as to conform with Netscapes SSL.
8 * 8 *
9 * This library is free for commercial and non-commercial use as long as 9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions 10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA, 11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation 12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms 13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com). 14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 * 15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in 16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed. 17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution 18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used. 19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or 20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package. 21 * in documentation (online or textual) provided with the package.
22 * 22 *
23 * Redistribution and use in source and binary forms, with or without 23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions 24 * modification, are permitted provided that the following conditions
25 * are met: 25 * are met:
@@ -34,10 +34,10 @@
34 * Eric Young (eay@cryptsoft.com)" 34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library 35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-). 36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from 37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement: 38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 * 40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -49,7 +49,7 @@
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE. 51 * SUCH DAMAGE.
52 * 52 *
53 * The licence and distribution terms for any publically available version or 53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be 54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence 55 * copied and put under another distribution licence
@@ -64,75 +64,85 @@
64#include <openssl/x509.h> 64#include <openssl/x509.h>
65 65
66/* need to implement */ 66/* need to implement */
67int i2d_X509_PKEY(X509_PKEY *a, unsigned char **pp) 67int
68i2d_X509_PKEY(X509_PKEY *a, unsigned char **pp)
68{ 69{
69 return(0); 70 return (0);
70} 71}
71 72
72X509_PKEY *d2i_X509_PKEY(X509_PKEY **a, const unsigned char **pp, long length) 73X509_PKEY *
74d2i_X509_PKEY(X509_PKEY **a, const unsigned char **pp, long length)
73{ 75{
74 int i; 76 int i;
75 M_ASN1_D2I_vars(a,X509_PKEY *,X509_PKEY_new); 77 M_ASN1_D2I_vars(a, X509_PKEY *, X509_PKEY_new);
76 78
77 M_ASN1_D2I_Init(); 79 M_ASN1_D2I_Init();
78 M_ASN1_D2I_start_sequence(); 80 M_ASN1_D2I_start_sequence();
79 M_ASN1_D2I_get_x(X509_ALGOR,ret->enc_algor,d2i_X509_ALGOR); 81 M_ASN1_D2I_get_x(X509_ALGOR, ret->enc_algor, d2i_X509_ALGOR);
80 M_ASN1_D2I_get_x(ASN1_OCTET_STRING,ret->enc_pkey,d2i_ASN1_OCTET_STRING); 82 M_ASN1_D2I_get_x(ASN1_OCTET_STRING, ret->enc_pkey,
83 d2i_ASN1_OCTET_STRING);
81 84
82 ret->cipher.cipher=EVP_get_cipherbyname( 85 ret->cipher.cipher = EVP_get_cipherbyname(
83 OBJ_nid2ln(OBJ_obj2nid(ret->enc_algor->algorithm))); 86 OBJ_nid2ln(OBJ_obj2nid(ret->enc_algor->algorithm)));
84 if (ret->cipher.cipher == NULL) { 87 if (ret->cipher.cipher == NULL) {
85 c.error=ASN1_R_UNSUPPORTED_CIPHER; 88 c.error = ASN1_R_UNSUPPORTED_CIPHER;
86 c.line=__LINE__; 89 c.line = __LINE__;
87 goto err; 90 goto err;
88 } 91 }
89 if (ret->enc_algor->parameter->type == V_ASN1_OCTET_STRING) { 92 if (ret->enc_algor->parameter->type == V_ASN1_OCTET_STRING) {
90 i=ret->enc_algor->parameter->value.octet_string->length; 93 i = ret->enc_algor->parameter->value.octet_string->length;
91 if (i > EVP_MAX_IV_LENGTH) { 94 if (i > EVP_MAX_IV_LENGTH) {
92 c.error=ASN1_R_IV_TOO_LARGE; 95 c.error = ASN1_R_IV_TOO_LARGE;
93 c.line=__LINE__; 96 c.line = __LINE__;
94 goto err; 97 goto err;
95 } 98 }
96 memcpy(ret->cipher.iv, 99 memcpy(ret->cipher.iv,
97 ret->enc_algor->parameter->value.octet_string->data,i); 100 ret->enc_algor->parameter->value.octet_string->data, i);
98 } 101 } else
99 else 102 memset(ret->cipher.iv, 0, EVP_MAX_IV_LENGTH);
100 memset(ret->cipher.iv,0,EVP_MAX_IV_LENGTH); 103 M_ASN1_D2I_Finish(a, X509_PKEY_free, ASN1_F_D2I_X509_PKEY);
101 M_ASN1_D2I_Finish(a,X509_PKEY_free,ASN1_F_D2I_X509_PKEY);
102} 104}
103 105
104X509_PKEY *X509_PKEY_new(void) 106X509_PKEY *
107X509_PKEY_new(void)
105{ 108{
106 X509_PKEY *ret=NULL; 109 X509_PKEY *ret = NULL;
107 ASN1_CTX c; 110 ASN1_CTX c;
108 111
109 M_ASN1_New_Malloc(ret,X509_PKEY); 112 M_ASN1_New_Malloc(ret, X509_PKEY);
110 ret->version=0; 113 ret->version = 0;
111 M_ASN1_New(ret->enc_algor,X509_ALGOR_new); 114 M_ASN1_New(ret->enc_algor, X509_ALGOR_new);
112 M_ASN1_New(ret->enc_pkey,M_ASN1_OCTET_STRING_new); 115 M_ASN1_New(ret->enc_pkey, M_ASN1_OCTET_STRING_new);
113 ret->dec_pkey=NULL; 116 ret->dec_pkey = NULL;
114 ret->key_length=0; 117 ret->key_length = 0;
115 ret->key_data=NULL; 118 ret->key_data = NULL;
116 ret->key_free=0; 119 ret->key_free = 0;
117 ret->cipher.cipher=NULL; 120 ret->cipher.cipher = NULL;
118 memset(ret->cipher.iv,0,EVP_MAX_IV_LENGTH); 121 memset(ret->cipher.iv, 0, EVP_MAX_IV_LENGTH);
119 ret->references=1; 122 ret->references = 1;
120 return(ret); 123 return (ret);
121 M_ASN1_New_Error(ASN1_F_X509_PKEY_NEW); 124 M_ASN1_New_Error(ASN1_F_X509_PKEY_NEW);
122} 125}
123 126
124void X509_PKEY_free(X509_PKEY *x) 127void
128X509_PKEY_free(X509_PKEY *x)
125{ 129{
126 int i; 130 int i;
127 131
128 if (x == NULL) return; 132 if (x == NULL)
133 return;
129 134
130 i=CRYPTO_add(&x->references,-1,CRYPTO_LOCK_X509_PKEY); 135 i = CRYPTO_add(&x->references, -1, CRYPTO_LOCK_X509_PKEY);
131 if (i > 0) return; 136 if (i > 0)
137 return;
132 138
133 if (x->enc_algor != NULL) X509_ALGOR_free(x->enc_algor); 139 if (x->enc_algor != NULL)
134 if (x->enc_pkey != NULL) M_ASN1_OCTET_STRING_free(x->enc_pkey); 140 X509_ALGOR_free(x->enc_algor);
135 if (x->dec_pkey != NULL)EVP_PKEY_free(x->dec_pkey); 141 if (x->enc_pkey != NULL)
136 if ((x->key_data != NULL) && (x->key_free)) free(x->key_data); 142 M_ASN1_OCTET_STRING_free(x->enc_pkey);
143 if (x->dec_pkey != NULL)
144 EVP_PKEY_free(x->dec_pkey);
145 if ((x->key_data != NULL) && (x->key_free))
146 free(x->key_data);
137 free(x); 147 free(x);
138} 148}