OpenSSL: Support PEM encoded chain from client_cert blob
Allow a chain of certificates to be configured through a client_cert blob. Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
This commit is contained in:
parent
68ac45d53c
commit
4b834df5e0
1 changed files with 23 additions and 0 deletions
|
@ -3241,8 +3241,31 @@ static int tls_connection_client_cert(struct tls_connection *conn,
|
|||
"OK");
|
||||
return 0;
|
||||
} else if (client_cert_blob) {
|
||||
BIO *bio;
|
||||
X509 *x509;
|
||||
|
||||
tls_show_errors(MSG_DEBUG, __func__,
|
||||
"SSL_use_certificate_ASN1 failed");
|
||||
bio = BIO_new(BIO_s_mem());
|
||||
if (!bio)
|
||||
return -1;
|
||||
BIO_write(bio, client_cert_blob, client_cert_blob_len);
|
||||
x509 = PEM_read_bio_X509(bio, NULL, NULL, NULL);
|
||||
if (!x509 || SSL_use_certificate(conn->ssl, x509) != 1) {
|
||||
X509_free(x509);
|
||||
BIO_free(bio);
|
||||
return -1;
|
||||
}
|
||||
X509_free(x509);
|
||||
wpa_printf(MSG_DEBUG,
|
||||
"OpenSSL: Found PEM encoded certificate from blob");
|
||||
while ((x509 = PEM_read_bio_X509(bio, NULL, NULL, NULL))) {
|
||||
wpa_printf(MSG_DEBUG,
|
||||
"OpenSSL: Added an additional certificate into the chain");
|
||||
SSL_add0_chain_cert(conn->ssl, x509);
|
||||
}
|
||||
BIO_free(bio);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (client_cert == NULL)
|
||||
|
|
Loading…
Reference in a new issue