Android-cuttlefish cvd tool
Public Member Functions | Static Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes | List of all members
adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl Class Reference
Inheritance diagram for adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl:
Inheritance graph
[legend]
Collaboration diagram for adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl:
Collaboration graph
[legend]

Public Member Functions

 TlsConnectionImpl (Role role, std::string_view cert, std::string_view priv_key, borrowed_fd fd)
 
 ~TlsConnectionImpl () override
 
bool AddTrustedCertificate (std::string_view cert) override
 
void SetCertVerifyCallback (CertVerifyCb cb) override
 
void SetCertificateCallback (SetCertCb cb) override
 
void SetClientCAList (STACK_OF(X509_NAME) *ca_list) override
 
std::vector< uint8_t > ExportKeyingMaterial (size_t length) override
 
void EnableClientPostHandshakeCheck (bool enable) override
 
TlsError DoHandshake () override
 
std::vector< uint8_t > ReadFully (size_t size) override
 
bool ReadFully (void *buf, size_t size) override
 
bool WriteFully (std::string_view data) override
 
- Public Member Functions inherited from adb::tls::TlsConnection
virtual ~TlsConnection ()=default
 
virtual bool AddTrustedCertificate (std::string_view cert)=0
 
virtual void SetCertVerifyCallback (CertVerifyCb cb)=0
 
virtual void SetClientCAList (STACK_OF(X509_NAME) *ca_list)=0
 
virtual void SetCertificateCallback (SetCertCb cb)=0
 
virtual std::vector< uint8_t > ExportKeyingMaterial (size_t length)=0
 
virtual void EnableClientPostHandshakeCheck (bool enable)=0
 
virtual TlsError DoHandshake ()=0
 
virtual std::vector< uint8_t > ReadFully (size_t size)=0
 
virtual bool ReadFully (void *buf, size_t size)=0
 
virtual bool WriteFully (std::string_view data)=0
 

Static Public Member Functions

static bssl::UniquePtr< EVP_PKEY > EvpPkeyFromPEM (std::string_view pem)
 
static bssl::UniquePtr< CRYPTO_BUFFER > BufferFromPEM (std::string_view pem)
 
- Static Public Member Functions inherited from adb::tls::TlsConnection
static std::unique_ptr< TlsConnectionCreate (Role role, std::string_view cert, std::string_view priv_key, android::base::borrowed_fd fd)
 
static bool SetCertAndKey (SSL *ssl, std::string_view cert_chain, std::string_view priv_key)
 

Private Member Functions

void Invalidate ()
 
TlsError GetFailureReason (int err)
 
const char * RoleToString ()
 

Static Private Member Functions

static int SSLSetCertVerifyCb (X509_STORE_CTX *ctx, void *opaque)
 
static int SSLSetCertCb (SSL *ssl, void *opaque)
 
static bssl::UniquePtr< X509 > X509FromBuffer (bssl::UniquePtr< CRYPTO_BUFFER > buffer)
 
static const char * SSLErrorString ()
 

Private Attributes

Role role_
 
bssl::UniquePtr< EVP_PKEY > priv_key_
 
bssl::UniquePtr< CRYPTO_BUFFER > cert_
 
bssl::UniquePtr< STACK_OF(X509_NAME)> ca_list_
 
bssl::UniquePtr< SSL_CTX > ssl_ctx_
 
bssl::UniquePtr< SSL > ssl_
 
std::vector< bssl::UniquePtr< X509 > > known_certificates_
 
bool client_verify_post_handshake_ = false
 
CertVerifyCb cert_verify_cb_
 
SetCertCb set_cert_cb_
 
borrowed_fd fd_
 

Static Private Attributes

static constexpr char kClientRoleStr [] = "[client]: "
 
static constexpr char kServerRoleStr [] = "[server]: "
 

Additional Inherited Members

- Public Types inherited from adb::tls::TlsConnection
enum class  Role { Server , Client }
 
enum class  TlsError : uint8_t { Success = 0 , CertificateRejected , PeerRejectedCertificate , UnknownFailure }
 
using CertVerifyCb = std::function< int(X509_STORE_CTX *)>
 
using SetCertCb = std::function< int(SSL *)>
 
- Protected Member Functions inherited from adb::tls::TlsConnection
 TlsConnection ()=default
 

Constructor & Destructor Documentation

◆ TlsConnectionImpl()

adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::TlsConnectionImpl ( Role  role,
std::string_view  cert,
std::string_view  priv_key,
borrowed_fd  fd 
)
explicit

◆ ~TlsConnectionImpl()

adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::~TlsConnectionImpl ( )
override

Member Function Documentation

◆ AddTrustedCertificate()

bool adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::AddTrustedCertificate ( std::string_view  cert)
overridevirtual

◆ BufferFromPEM()

bssl::UniquePtr< CRYPTO_BUFFER > adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::BufferFromPEM ( std::string_view  pem)
static

◆ DoHandshake()

TlsConnection::TlsError adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::DoHandshake ( )
overridevirtual

◆ EnableClientPostHandshakeCheck()

void adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::EnableClientPostHandshakeCheck ( bool  enable)
overridevirtual

◆ EvpPkeyFromPEM()

bssl::UniquePtr< EVP_PKEY > adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::EvpPkeyFromPEM ( std::string_view  pem)
static

◆ ExportKeyingMaterial()

std::vector< uint8_t > adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::ExportKeyingMaterial ( size_t  length)
overridevirtual

◆ GetFailureReason()

TlsConnection::TlsError adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::GetFailureReason ( int  err)
private

◆ Invalidate()

void adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::Invalidate ( )
private

◆ ReadFully() [1/2]

std::vector< uint8_t > adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::ReadFully ( size_t  size)
overridevirtual

◆ ReadFully() [2/2]

bool adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::ReadFully ( void *  buf,
size_t  size 
)
overridevirtual

◆ RoleToString()

const char * adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::RoleToString ( )
inlineprivate

◆ SetCertificateCallback()

void adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::SetCertificateCallback ( SetCertCb  cb)
overridevirtual

◆ SetCertVerifyCallback()

void adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::SetCertVerifyCallback ( CertVerifyCb  cb)
overridevirtual

◆ SetClientCAList()

void adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::SetClientCAList ( STACK_OF(X509_NAME) *  ca_list)
overridevirtual

◆ SSLErrorString()

const char * adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::SSLErrorString ( )
staticprivate

◆ SSLSetCertCb()

int adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::SSLSetCertCb ( SSL *  ssl,
void *  opaque 
)
staticprivate

◆ SSLSetCertVerifyCb()

int adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::SSLSetCertVerifyCb ( X509_STORE_CTX *  ctx,
void *  opaque 
)
staticprivate

◆ WriteFully()

bool adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::WriteFully ( std::string_view  data)
overridevirtual

◆ X509FromBuffer()

bssl::UniquePtr< X509 > adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::X509FromBuffer ( bssl::UniquePtr< CRYPTO_BUFFER >  buffer)
staticprivate

Member Data Documentation

◆ ca_list_

bssl::UniquePtr<STACK_OF(X509_NAME)> adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::ca_list_
private

◆ cert_

bssl::UniquePtr<CRYPTO_BUFFER> adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::cert_
private

◆ cert_verify_cb_

CertVerifyCb adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::cert_verify_cb_
private

◆ client_verify_post_handshake_

bool adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::client_verify_post_handshake_ = false
private

◆ fd_

borrowed_fd adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::fd_
private

◆ kClientRoleStr

constexpr char adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::kClientRoleStr[] = "[client]: "
staticconstexprprivate

◆ known_certificates_

std::vector<bssl::UniquePtr<X509> > adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::known_certificates_
private

◆ kServerRoleStr

constexpr char adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::kServerRoleStr[] = "[server]: "
staticconstexprprivate

◆ priv_key_

bssl::UniquePtr<EVP_PKEY> adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::priv_key_
private

◆ role_

Role adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::role_
private

◆ set_cert_cb_

SetCertCb adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::set_cert_cb_
private

◆ ssl_

bssl::UniquePtr<SSL> adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::ssl_
private

◆ ssl_ctx_

bssl::UniquePtr<SSL_CTX> adb::tls::anonymous_namespace{tls_connection.cpp}::TlsConnectionImpl::ssl_ctx_
private

The documentation for this class was generated from the following file: