diff options
author | jsing <> | 2018-02-08 08:09:10 +0000 |
---|---|---|
committer | jsing <> | 2018-02-08 08:09:10 +0000 |
commit | 8c6eba876e685911f8c43aeccd30946cfcfec99d (patch) | |
tree | e9c06a1780bebef62f87f0ecbe381580d5984345 | |
parent | 7bf93eac51d305e9043052877724278744c4a238 (diff) | |
download | openbsd-8c6eba876e685911f8c43aeccd30946cfcfec99d.tar.gz openbsd-8c6eba876e685911f8c43aeccd30946cfcfec99d.tar.bz2 openbsd-8c6eba876e685911f8c43aeccd30946cfcfec99d.zip |
Move tls_keypair_pubkey_hash() to the keypair file.
-rw-r--r-- | src/lib/libtls/tls.c | 42 | ||||
-rw-r--r-- | src/lib/libtls/tls_internal.h | 3 | ||||
-rw-r--r-- | src/lib/libtls/tls_keypair.c | 41 |
3 files changed, 43 insertions, 43 deletions
diff --git a/src/lib/libtls/tls.c b/src/lib/libtls/tls.c index 95fdb8bc4b..fdf4a981a8 100644 --- a/src/lib/libtls/tls.c +++ b/src/lib/libtls/tls.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: tls.c,v 1.72 2018/02/08 08:04:12 jsing Exp $ */ | 1 | /* $OpenBSD: tls.c,v 1.73 2018/02/08 08:09:10 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> |
4 | * | 4 | * |
@@ -290,46 +290,6 @@ tls_cert_hash(X509 *cert, char **hash) | |||
290 | return (rv); | 290 | return (rv); |
291 | } | 291 | } |
292 | 292 | ||
293 | static int | ||
294 | tls_keypair_pubkey_hash(struct tls_keypair *keypair, char **hash) | ||
295 | { | ||
296 | BIO *membio = NULL; | ||
297 | X509 *cert = NULL; | ||
298 | char d[EVP_MAX_MD_SIZE], *dhex = NULL; | ||
299 | int dlen, rv = -1; | ||
300 | |||
301 | free(*hash); | ||
302 | *hash = NULL; | ||
303 | |||
304 | if ((membio = BIO_new_mem_buf(keypair->cert_mem, | ||
305 | keypair->cert_len)) == NULL) | ||
306 | goto err; | ||
307 | if ((cert = PEM_read_bio_X509_AUX(membio, NULL, tls_password_cb, | ||
308 | NULL)) == NULL) | ||
309 | goto err; | ||
310 | |||
311 | if (X509_pubkey_digest(cert, EVP_sha256(), d, &dlen) != 1) | ||
312 | goto err; | ||
313 | |||
314 | if (tls_hex_string(d, dlen, &dhex, NULL) != 0) | ||
315 | goto err; | ||
316 | |||
317 | if (asprintf(hash, "SHA256:%s", dhex) == -1) { | ||
318 | *hash = NULL; | ||
319 | goto err; | ||
320 | } | ||
321 | |||
322 | rv = 0; | ||
323 | |||
324 | err: | ||
325 | free(dhex); | ||
326 | X509_free(cert); | ||
327 | BIO_free(membio); | ||
328 | |||
329 | return (rv); | ||
330 | } | ||
331 | |||
332 | |||
333 | int | 293 | int |
334 | tls_configure_ssl_keypair(struct tls *ctx, SSL_CTX *ssl_ctx, | 294 | tls_configure_ssl_keypair(struct tls *ctx, SSL_CTX *ssl_ctx, |
335 | struct tls_keypair *keypair, int required) | 295 | struct tls_keypair *keypair, int required) |
diff --git a/src/lib/libtls/tls_internal.h b/src/lib/libtls/tls_internal.h index 67a31b2efd..8a164d2e3a 100644 --- a/src/lib/libtls/tls_internal.h +++ b/src/lib/libtls/tls_internal.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: tls_internal.h,v 1.66 2018/02/08 05:56:49 jsing Exp $ */ | 1 | /* $OpenBSD: tls_internal.h,v 1.67 2018/02/08 08:09:10 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2014 Jeremie Courreges-Anglas <jca@openbsd.org> | 3 | * Copyright (c) 2014 Jeremie Courreges-Anglas <jca@openbsd.org> |
4 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> | 4 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> |
@@ -214,6 +214,7 @@ void tls_keypair_clear(struct tls_keypair *_keypair); | |||
214 | void tls_keypair_free(struct tls_keypair *_keypair); | 214 | void tls_keypair_free(struct tls_keypair *_keypair); |
215 | int tls_keypair_load_cert(struct tls_keypair *_keypair, | 215 | int tls_keypair_load_cert(struct tls_keypair *_keypair, |
216 | struct tls_error *_error, X509 **_cert); | 216 | struct tls_error *_error, X509 **_cert); |
217 | int tls_keypair_pubkey_hash(struct tls_keypair *_keypair, char **_hash); | ||
217 | 218 | ||
218 | struct tls_sni_ctx *tls_sni_ctx_new(void); | 219 | struct tls_sni_ctx *tls_sni_ctx_new(void); |
219 | void tls_sni_ctx_free(struct tls_sni_ctx *sni_ctx); | 220 | void tls_sni_ctx_free(struct tls_sni_ctx *sni_ctx); |
diff --git a/src/lib/libtls/tls_keypair.c b/src/lib/libtls/tls_keypair.c index eef92b3b24..2ab584bbcd 100644 --- a/src/lib/libtls/tls_keypair.c +++ b/src/lib/libtls/tls_keypair.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: tls_keypair.c,v 1.1 2018/02/08 05:56:49 jsing Exp $ */ | 1 | /* $OpenBSD: tls_keypair.c,v 1.2 2018/02/08 08:09:10 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> |
4 | * | 4 | * |
@@ -144,3 +144,42 @@ tls_keypair_load_cert(struct tls_keypair *keypair, struct tls_error *error, | |||
144 | 144 | ||
145 | return (rv); | 145 | return (rv); |
146 | } | 146 | } |
147 | |||
148 | int | ||
149 | tls_keypair_pubkey_hash(struct tls_keypair *keypair, char **hash) | ||
150 | { | ||
151 | BIO *membio = NULL; | ||
152 | X509 *cert = NULL; | ||
153 | char d[EVP_MAX_MD_SIZE], *dhex = NULL; | ||
154 | int dlen, rv = -1; | ||
155 | |||
156 | free(*hash); | ||
157 | *hash = NULL; | ||
158 | |||
159 | if ((membio = BIO_new_mem_buf(keypair->cert_mem, | ||
160 | keypair->cert_len)) == NULL) | ||
161 | goto err; | ||
162 | if ((cert = PEM_read_bio_X509_AUX(membio, NULL, tls_password_cb, | ||
163 | NULL)) == NULL) | ||
164 | goto err; | ||
165 | |||
166 | if (X509_pubkey_digest(cert, EVP_sha256(), d, &dlen) != 1) | ||
167 | goto err; | ||
168 | |||
169 | if (tls_hex_string(d, dlen, &dhex, NULL) != 0) | ||
170 | goto err; | ||
171 | |||
172 | if (asprintf(hash, "SHA256:%s", dhex) == -1) { | ||
173 | *hash = NULL; | ||
174 | goto err; | ||
175 | } | ||
176 | |||
177 | rv = 0; | ||
178 | |||
179 | err: | ||
180 | free(dhex); | ||
181 | X509_free(cert); | ||
182 | BIO_free(membio); | ||
183 | |||
184 | return (rv); | ||
185 | } | ||