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

@@ -10,6 +10,7 @@
#include "cef/include/cef_x509_certificate.h"
#include "net/cert/x509_certificate.h"
#include "net/ssl/client_cert_identity.h"
// CefX509Certificate implementation
class CefX509CertificateImpl : public CefX509Certificate {
@@ -19,6 +20,9 @@ class CefX509CertificateImpl : public CefX509Certificate {
CefX509CertificateImpl(const CefX509CertificateImpl&) = delete;
CefX509CertificateImpl& operator=(const CefX509CertificateImpl&) = delete;
explicit CefX509CertificateImpl(
std::unique_ptr<net::ClientCertIdentity> identity);
// CefX509Certificate methods.
CefRefPtr<CefX509CertPrincipal> GetSubject() override;
CefRefPtr<CefX509CertPrincipal> GetIssuer() override;
@@ -32,10 +36,16 @@ class CefX509CertificateImpl : public CefX509Certificate {
void GetPEMEncodedIssuerChain(IssuerChainBinaryList& chain) override;
scoped_refptr<net::X509Certificate> GetInternalCertObject() { return cert_; }
void AcquirePrivateKey(
base::OnceCallback<void(scoped_refptr<net::SSLPrivateKey>)>
private_key_callback);
[[nodiscard]] std::unique_ptr<net::ClientCertIdentity> DisconnectIdentity();
private:
void GetEncodedIssuerChain(IssuerChainBinaryList& chain, bool der);
std::unique_ptr<net::ClientCertIdentity> identity_;
scoped_refptr<net::X509Certificate> cert_;
IssuerChainBinaryList pem_encoded_issuer_chain_;
IssuerChainBinaryList der_encoded_issuer_chain_;