Implement OnSelectClientCertificate (fixes #3789)

This commit is contained in:
Hunter Laux
2024-10-23 12:57:53 -04:00
committed by Marshall Greenblatt
parent 030272fe4c
commit fc20e76d3b
6 changed files with 194 additions and 13 deletions

View File

@@ -7,6 +7,7 @@
#include "cef/libcef/browser/x509_cert_principal_impl.h"
#include "cef/libcef/common/time_util.h"
#include "net/cert/x509_util.h"
#include "net/ssl/ssl_private_key.h"
namespace {
@@ -27,6 +28,10 @@ CefRefPtr<CefBinaryValue> EncodeCertificate(const CRYPTO_BUFFER* cert_buffer,
} // namespace
CefX509CertificateImpl::CefX509CertificateImpl(
std::unique_ptr<net::ClientCertIdentity> identity)
: identity_(std::move(identity)), cert_(identity_->certificate()) {}
CefX509CertificateImpl::CefX509CertificateImpl(
scoped_refptr<net::X509Certificate> cert)
: cert_(cert) {}
@@ -94,6 +99,21 @@ size_t CefX509CertificateImpl::GetIssuerChainSize() {
return 0;
}
void CefX509CertificateImpl::AcquirePrivateKey(
base::OnceCallback<void(scoped_refptr<net::SSLPrivateKey>)>
private_key_callback) {
if (identity_) {
identity_->AcquirePrivateKey(std::move(private_key_callback));
} else {
std::move(private_key_callback).Run(nullptr);
}
}
std::unique_ptr<net::ClientCertIdentity>
CefX509CertificateImpl::DisconnectIdentity() {
return std::move(identity_);
}
void CefX509CertificateImpl::GetEncodedIssuerChain(
CefX509Certificate::IssuerChainBinaryList& chain,
bool der) {