summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/evp/names.c
diff options
context:
space:
mode:
authorjsing <>2014-05-03 15:50:24 +0000
committerjsing <>2014-05-03 15:50:24 +0000
commitd7f470a7ef3c6db76e177079e2cbfe887f2861b6 (patch)
tree286aeaeed949a347596bf9f8e18012b9982760a9 /src/lib/libcrypto/evp/names.c
parentc068ce427d4525ce31189b2feb96a7ef18568758 (diff)
downloadopenbsd-d7f470a7ef3c6db76e177079e2cbfe887f2861b6.tar.gz
openbsd-d7f470a7ef3c6db76e177079e2cbfe887f2861b6.tar.bz2
openbsd-d7f470a7ef3c6db76e177079e2cbfe887f2861b6.zip
KNF.
Diffstat (limited to 'src/lib/libcrypto/evp/names.c')
-rw-r--r--src/lib/libcrypto/evp/names.c186
1 files changed, 104 insertions, 82 deletions
diff --git a/src/lib/libcrypto/evp/names.c b/src/lib/libcrypto/evp/names.c
index 6311ad7cfb..b4793b954b 100644
--- a/src/lib/libcrypto/evp/names.c
+++ b/src/lib/libcrypto/evp/names.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
@@ -62,65 +62,77 @@
62#include <openssl/objects.h> 62#include <openssl/objects.h>
63#include <openssl/x509.h> 63#include <openssl/x509.h>
64 64
65int EVP_add_cipher(const EVP_CIPHER *c) 65int
66 { 66EVP_add_cipher(const EVP_CIPHER *c)
67{
67 int r; 68 int r;
68 69
69 if (c == NULL) return 0; 70 if (c == NULL)
71 return 0;
70 72
71 OPENSSL_init(); 73 OPENSSL_init();
72 74
73 r=OBJ_NAME_add(OBJ_nid2sn(c->nid),OBJ_NAME_TYPE_CIPHER_METH,(const char *)c); 75 r = OBJ_NAME_add(OBJ_nid2sn(c->nid), OBJ_NAME_TYPE_CIPHER_METH,
74 if (r == 0) return(0); 76 (const char *)c);
77 if (r == 0)
78 return (0);
75 check_defer(c->nid); 79 check_defer(c->nid);
76 r=OBJ_NAME_add(OBJ_nid2ln(c->nid),OBJ_NAME_TYPE_CIPHER_METH,(const char *)c); 80 r = OBJ_NAME_add(OBJ_nid2ln(c->nid), OBJ_NAME_TYPE_CIPHER_METH,
77 return(r); 81 (const char *)c);
78 } 82 return (r);
79 83}
80 84
81int EVP_add_digest(const EVP_MD *md) 85int
82 { 86EVP_add_digest(const EVP_MD *md)
87{
83 int r; 88 int r;
84 const char *name; 89 const char *name;
90
85 OPENSSL_init(); 91 OPENSSL_init();
86 92
87 name=OBJ_nid2sn(md->type); 93 name = OBJ_nid2sn(md->type);
88 r=OBJ_NAME_add(name,OBJ_NAME_TYPE_MD_METH,(const char *)md); 94 r = OBJ_NAME_add(name, OBJ_NAME_TYPE_MD_METH, (const char *)md);
89 if (r == 0) return(0); 95 if (r == 0)
96 return (0);
90 check_defer(md->type); 97 check_defer(md->type);
91 r=OBJ_NAME_add(OBJ_nid2ln(md->type),OBJ_NAME_TYPE_MD_METH,(const char *)md); 98 r = OBJ_NAME_add(OBJ_nid2ln(md->type), OBJ_NAME_TYPE_MD_METH,
92 if (r == 0) return(0); 99 (const char *)md);
93 100 if (r == 0)
94 if (md->pkey_type && md->type != md->pkey_type) 101 return (0);
95 { 102
96 r=OBJ_NAME_add(OBJ_nid2sn(md->pkey_type), 103 if (md->pkey_type && md->type != md->pkey_type) {
97 OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS,name); 104 r = OBJ_NAME_add(OBJ_nid2sn(md->pkey_type),
98 if (r == 0) return(0); 105 OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS, name);
106 if (r == 0)
107 return (0);
99 check_defer(md->pkey_type); 108 check_defer(md->pkey_type);
100 r=OBJ_NAME_add(OBJ_nid2ln(md->pkey_type), 109 r = OBJ_NAME_add(OBJ_nid2ln(md->pkey_type),
101 OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS,name); 110 OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS, name);
102 }
103 return(r);
104 } 111 }
112 return (r);
113}
105 114
106const EVP_CIPHER *EVP_get_cipherbyname(const char *name) 115const EVP_CIPHER *
107 { 116EVP_get_cipherbyname(const char *name)
117{
108 const EVP_CIPHER *cp; 118 const EVP_CIPHER *cp;
109 119
110 cp=(const EVP_CIPHER *)OBJ_NAME_get(name,OBJ_NAME_TYPE_CIPHER_METH); 120 cp = (const EVP_CIPHER *)OBJ_NAME_get(name, OBJ_NAME_TYPE_CIPHER_METH);
111 return(cp); 121 return (cp);
112 } 122}
113 123
114const EVP_MD *EVP_get_digestbyname(const char *name) 124const EVP_MD *
115 { 125EVP_get_digestbyname(const char *name)
126{
116 const EVP_MD *cp; 127 const EVP_MD *cp;
117 128
118 cp=(const EVP_MD *)OBJ_NAME_get(name,OBJ_NAME_TYPE_MD_METH); 129 cp = (const EVP_MD *)OBJ_NAME_get(name, OBJ_NAME_TYPE_MD_METH);
119 return(cp); 130 return (cp);
120 } 131}
121 132
122void EVP_cleanup(void) 133void
123 { 134EVP_cleanup(void)
135{
124 OBJ_NAME_cleanup(OBJ_NAME_TYPE_CIPHER_METH); 136 OBJ_NAME_cleanup(OBJ_NAME_TYPE_CIPHER_METH);
125 OBJ_NAME_cleanup(OBJ_NAME_TYPE_MD_METH); 137 OBJ_NAME_cleanup(OBJ_NAME_TYPE_MD_METH);
126 /* The above calls will only clean out the contents of the name 138 /* The above calls will only clean out the contents of the name
@@ -129,78 +141,88 @@ void EVP_cleanup(void)
129 OBJ_NAME_cleanup(-1); 141 OBJ_NAME_cleanup(-1);
130 142
131 EVP_PBE_cleanup(); 143 EVP_PBE_cleanup();
132 if (obj_cleanup_defer == 2) 144 if (obj_cleanup_defer == 2) {
133 {
134 obj_cleanup_defer = 0; 145 obj_cleanup_defer = 0;
135 OBJ_cleanup(); 146 OBJ_cleanup();
136 }
137 OBJ_sigid_free();
138 } 147 }
148 OBJ_sigid_free();
149}
139 150
140struct doall_cipher 151struct doall_cipher {
141 {
142 void *arg; 152 void *arg;
143 void (*fn)(const EVP_CIPHER *ciph, 153 void (*fn)(const EVP_CIPHER *ciph, const char *from, const char *to,
144 const char *from, const char *to, void *arg); 154 void *arg);
145 }; 155};
146 156
147static void do_all_cipher_fn(const OBJ_NAME *nm, void *arg) 157static void
148 { 158do_all_cipher_fn(const OBJ_NAME *nm, void *arg)
159{
149 struct doall_cipher *dc = arg; 160 struct doall_cipher *dc = arg;
161
150 if (nm->alias) 162 if (nm->alias)
151 dc->fn(NULL, nm->name, nm->data, dc->arg); 163 dc->fn(NULL, nm->name, nm->data, dc->arg);
152 else 164 else
153 dc->fn((const EVP_CIPHER *)nm->data, nm->name, NULL, dc->arg); 165 dc->fn((const EVP_CIPHER *)nm->data, nm->name, NULL, dc->arg);
154 } 166}
155 167
156void EVP_CIPHER_do_all(void (*fn)(const EVP_CIPHER *ciph, 168void
157 const char *from, const char *to, void *x), void *arg) 169EVP_CIPHER_do_all(void (*fn)(const EVP_CIPHER *ciph, const char *from,
158 { 170 const char *to, void *x), void *arg)
171{
159 struct doall_cipher dc; 172 struct doall_cipher dc;
173
160 dc.fn = fn; 174 dc.fn = fn;
161 dc.arg = arg; 175 dc.arg = arg;
162 OBJ_NAME_do_all(OBJ_NAME_TYPE_CIPHER_METH, do_all_cipher_fn, &dc); 176 OBJ_NAME_do_all(OBJ_NAME_TYPE_CIPHER_METH, do_all_cipher_fn, &dc);
163 } 177}
164 178
165void EVP_CIPHER_do_all_sorted(void (*fn)(const EVP_CIPHER *ciph, 179void
166 const char *from, const char *to, void *x), void *arg) 180EVP_CIPHER_do_all_sorted(void (*fn)(const EVP_CIPHER *ciph, const char *from,
167 { 181 const char *to, void *x), void *arg)
182{
168 struct doall_cipher dc; 183 struct doall_cipher dc;
184
169 dc.fn = fn; 185 dc.fn = fn;
170 dc.arg = arg; 186 dc.arg = arg;
171 OBJ_NAME_do_all_sorted(OBJ_NAME_TYPE_CIPHER_METH, do_all_cipher_fn,&dc); 187 OBJ_NAME_do_all_sorted(OBJ_NAME_TYPE_CIPHER_METH,
172 } 188 do_all_cipher_fn, &dc);
189}
173 190
174struct doall_md 191struct doall_md {
175 {
176 void *arg; 192 void *arg;
177 void (*fn)(const EVP_MD *ciph, 193 void (*fn)(const EVP_MD *ciph, const char *from, const char *to,
178 const char *from, const char *to, void *arg); 194 void *arg);
179 }; 195};
180 196
181static void do_all_md_fn(const OBJ_NAME *nm, void *arg) 197static void
182 { 198do_all_md_fn(const OBJ_NAME *nm, void *arg)
199{
183 struct doall_md *dc = arg; 200 struct doall_md *dc = arg;
201
184 if (nm->alias) 202 if (nm->alias)
185 dc->fn(NULL, nm->name, nm->data, dc->arg); 203 dc->fn(NULL, nm->name, nm->data, dc->arg);
186 else 204 else
187 dc->fn((const EVP_MD *)nm->data, nm->name, NULL, dc->arg); 205 dc->fn((const EVP_MD *)nm->data, nm->name, NULL, dc->arg);
188 } 206}
189 207
190void EVP_MD_do_all(void (*fn)(const EVP_MD *md, 208void
191 const char *from, const char *to, void *x), void *arg) 209EVP_MD_do_all(void (*fn)(const EVP_MD *md, const char *from, const char *to,
192 { 210 void *x), void *arg)
211{
193 struct doall_md dc; 212 struct doall_md dc;
213
194 dc.fn = fn; 214 dc.fn = fn;
195 dc.arg = arg; 215 dc.arg = arg;
196 OBJ_NAME_do_all(OBJ_NAME_TYPE_MD_METH, do_all_md_fn, &dc); 216 OBJ_NAME_do_all(OBJ_NAME_TYPE_MD_METH, do_all_md_fn, &dc);
197 } 217}
198 218
199void EVP_MD_do_all_sorted(void (*fn)(const EVP_MD *md, 219void
200 const char *from, const char *to, void *x), void *arg) 220EVP_MD_do_all_sorted(void (*fn)(const EVP_MD *md,
201 { 221 const char *from, const char *to, void *x), void *arg)
222{
202 struct doall_md dc; 223 struct doall_md dc;
224
203 dc.fn = fn; 225 dc.fn = fn;
204 dc.arg = arg; 226 dc.arg = arg;
205 OBJ_NAME_do_all_sorted(OBJ_NAME_TYPE_MD_METH, do_all_md_fn, &dc); 227 OBJ_NAME_do_all_sorted(OBJ_NAME_TYPE_MD_METH, do_all_md_fn, &dc);
206 } 228}