diff options
Diffstat (limited to 'src/lib/libtls/tls_keypair.c')
-rw-r--r-- | src/lib/libtls/tls_keypair.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/src/lib/libtls/tls_keypair.c b/src/lib/libtls/tls_keypair.c index 57068047de..626a95853f 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.3 2018/02/08 10:03:19 jsing Exp $ */ | 1 | /* $OpenBSD: tls_keypair.c,v 1.4 2018/02/08 10:19:31 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> |
4 | * | 4 | * |
@@ -145,9 +145,9 @@ tls_keypair_load_cert(struct tls_keypair *keypair, struct tls_error *error, | |||
145 | } | 145 | } |
146 | 146 | ||
147 | int | 147 | int |
148 | tls_keypair_pubkey_hash(struct tls_keypair *keypair, char **hash) | 148 | tls_keypair_pubkey_hash(struct tls_keypair *keypair, struct tls_error *error, |
149 | char **hash) | ||
149 | { | 150 | { |
150 | BIO *membio = NULL; | ||
151 | X509 *cert = NULL; | 151 | X509 *cert = NULL; |
152 | char d[EVP_MAX_MD_SIZE], *dhex = NULL; | 152 | char d[EVP_MAX_MD_SIZE], *dhex = NULL; |
153 | int dlen, rv = -1; | 153 | int dlen, rv = -1; |
@@ -155,11 +155,7 @@ tls_keypair_pubkey_hash(struct tls_keypair *keypair, char **hash) | |||
155 | free(*hash); | 155 | free(*hash); |
156 | *hash = NULL; | 156 | *hash = NULL; |
157 | 157 | ||
158 | if ((membio = BIO_new_mem_buf(keypair->cert_mem, | 158 | if (tls_keypair_load_cert(keypair, error, &cert) == -1) |
159 | keypair->cert_len)) == NULL) | ||
160 | goto err; | ||
161 | if ((cert = PEM_read_bio_X509_AUX(membio, NULL, tls_password_cb, | ||
162 | NULL)) == NULL) | ||
163 | goto err; | 159 | goto err; |
164 | 160 | ||
165 | if (X509_pubkey_digest(cert, EVP_sha256(), d, &dlen) != 1) | 161 | if (X509_pubkey_digest(cert, EVP_sha256(), d, &dlen) != 1) |
@@ -176,9 +172,8 @@ tls_keypair_pubkey_hash(struct tls_keypair *keypair, char **hash) | |||
176 | rv = 0; | 172 | rv = 0; |
177 | 173 | ||
178 | err: | 174 | err: |
179 | free(dhex); | ||
180 | X509_free(cert); | 175 | X509_free(cert); |
181 | BIO_free(membio); | 176 | free(dhex); |
182 | 177 | ||
183 | return (rv); | 178 | return (rv); |
184 | } | 179 | } |