diff options
| author | jsing <> | 2018-02-08 10:19:31 +0000 |
|---|---|---|
| committer | jsing <> | 2018-02-08 10:19:31 +0000 |
| commit | 1f7ca2478ab23918c94907b989d2935db2a2b660 (patch) | |
| tree | fbaa7b6f7b55a0e6130366b9d6bb63fa8074d471 /src/lib/libtls/tls_keypair.c | |
| parent | c7ad994cfcd0b5397342480b627e9e39807037f4 (diff) | |
| download | openbsd-1f7ca2478ab23918c94907b989d2935db2a2b660.tar.gz openbsd-1f7ca2478ab23918c94907b989d2935db2a2b660.tar.bz2 openbsd-1f7ca2478ab23918c94907b989d2935db2a2b660.zip | |
Have tls_keypair_pubkey_hash() call tls_keypair_load_cert() instead of
rolling its own certificate loading. This also means we get better error
reporting on failure.
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 | } |
