support.cc File Reference
#include "squid.h"
#include "acl/FilledChecklist.h"
#include "anyp/Host.h"
#include "anyp/PortCfg.h"
#include "anyp/Uri.h"
#include "fatal.h"
#include "fd.h"
#include "fde.h"
#include "globals.h"
#include "ip/Address.h"
#include "ipc/MemMap.h"
#include "security/CertError.h"
#include "security/Certificate.h"
#include "security/ErrorDetail.h"
#include "security/Session.h"
#include "SquidConfig.h"
#include "ssl/bio.h"
#include "ssl/Config.h"
#include "ssl/ErrorDetail.h"
#include "ssl/gadgets.h"
#include "ssl/support.h"
#include <cerrno>
Include dependency graph for support.cc:

Go to the source code of this file.

Classes

class  Ssl::OneNameMatcher
 GeneralNameMatcher for matching a single AnyP::Host given at construction time. More...
 

Namespaces

 Ssl
 

Functions

static void ssl_ask_password (SSL_CTX *context, const char *prompt)
 
static std::optional< AnyP::HostParseSubjectAltName (const GENERAL_NAME &san)
 
static int ssl_verify_cb (int ok, X509_STORE_CTX *ctx)
 
static int VerifyCtxCertificates (X509_STORE_CTX *ctx, STACK_OF(X509) *extraCerts)
 
static int ssl_dupAclChecklist (CRYPTO_EX_DATA *, CRYPTO_EX_DATA *, void *, int, long, void *)
 
static void ssl_freeAclChecklist (void *, void *ptr, CRYPTO_EX_DATA *, int, long, void *)
 
static void ssl_free_ErrorDetail (void *, void *ptr, CRYPTO_EX_DATA *, int, long, void *)
 
static void ssl_free_SslErrors (void *, void *ptr, CRYPTO_EX_DATA *, int, long, void *)
 
static void ssl_free_int (void *, void *ptr, CRYPTO_EX_DATA *, int, long, void *)
 
static void ssl_free_CertChain (void *, void *ptr, CRYPTO_EX_DATA *, int, long, void *)
 
static void ssl_free_X509 (void *, void *ptr, CRYPTO_EX_DATA *, int, long, void *)
 
static void ssl_free_SBuf (void *, void *ptr, CRYPTO_EX_DATA *, int, long, void *)
 
static void ssl_free_VerifyCallbackParameters (void *, void *ptr, CRYPTO_EX_DATA *, int, long, void *)
 "free" function for the ssl_ex_index_verify_callback_parameters entry More...
 
static const char * ssl_get_attribute (X509_NAME *name, const char *attribute_name)
 
const char * sslGetUserAttribute (SSL *ssl, const char *attribute_name)
 
const char * sslGetCAAttribute (SSL *ssl, const char *attribute_name)
 
const char * sslGetUserEmail (SSL *ssl)
 
SBuf sslGetUserCertificatePEM (SSL *ssl)
 
SBuf sslGetUserCertificateChainPEM (SSL *ssl)
 
static X509 * findCertIssuerFast (Ssl::CertsIndexedList &list, X509 *cert)
 
static X509 * sk_x509_findIssuer (const STACK_OF(X509) *sk, X509 *cert)
 slowly find the issuer certificate of a given cert using linear search More...
 
static X509 * findIssuerInCaDb (X509 *cert, const Security::ContextPointer &connContext)
 
static void completeIssuers (X509_STORE_CTX *ctx, STACK_OF(X509) &untrustedCerts)
 add missing issuer certificates to untrustedCerts More...
 
static int untrustedToStoreCtx_cb (X509_STORE_CTX *ctx, void *)
 
static int bio_sbuf_create (BIO *bio)
 
static int bio_sbuf_destroy (BIO *bio)
 
static int bio_sbuf_write (BIO *bio, const char *data, int len)
 
static int bio_sbuf_puts (BIO *bio, const char *data)
 
static long bio_sbuf_ctrl (BIO *bio, int cmd, long, void *)
 

Variables

static int ssl_ex_index_verify_callback_parameters = -1
 
static Ssl::CertsIndexedList SquidUntrustedCerts
 

Function Documentation

◆ bio_sbuf_create()

static int bio_sbuf_create ( BIO *  bio)
static

Definition at line 1508 of file support.cc.

References BIO_set_data(), and BIO_set_init().

Referenced by Ssl::BIO_new_SBuf().

◆ bio_sbuf_ctrl()

static long bio_sbuf_ctrl ( BIO *  bio,
int  cmd,
long  ,
void *   
)
static

Definition at line 1543 of file support.cc.

References BIO_get_data(), and SBuf::clear().

Referenced by Ssl::BIO_new_SBuf().

◆ bio_sbuf_destroy()

static int bio_sbuf_destroy ( BIO *  bio)
static

Definition at line 1516 of file support.cc.

Referenced by Ssl::BIO_new_SBuf().

◆ bio_sbuf_puts()

static int bio_sbuf_puts ( BIO *  bio,
const char *  data 
)
static

Definition at line 1533 of file support.cc.

References SBuf::append(), BIO_get_data(), and SBuf::length().

Referenced by Ssl::BIO_new_SBuf().

◆ bio_sbuf_write()

static int bio_sbuf_write ( BIO *  bio,
const char *  data,
int  len 
)
static

Definition at line 1524 of file support.cc.

References SBuf::append(), and BIO_get_data().

Referenced by Ssl::BIO_new_SBuf().

◆ completeIssuers()

◆ findCertIssuerFast()

static X509* findCertIssuerFast ( Ssl::CertsIndexedList list,
X509 *  cert 
)
static

quickly find the issuer certificate of a certificate cert in the Ssl::CertsIndexedList list

Definition at line 1230 of file support.cc.

References Security::IssuedBy(), and Security::IssuerName().

Referenced by Ssl::findIssuerCertificate().

◆ findIssuerInCaDb()

static X509* findIssuerInCaDb ( X509 *  cert,
const Security::ContextPointer connContext 
)
static

finds issuer of a given certificate in CA store of the given connContext

Returns
the cert issuer (after increasing its reference count) or nil

Definition at line 1265 of file support.cc.

References assert, DBG_IMPORTANT, debugs, and Security::ErrorString().

Referenced by Ssl::findIssuerCertificate().

◆ ParseSubjectAltName()

static std::optional<AnyP::Host> ParseSubjectAltName ( const GENERAL_NAME &  san)
static

◆ sk_x509_findIssuer()

static X509* sk_x509_findIssuer ( const STACK_OF(X509) *  sk,
X509 *  cert 
)
static

Definition at line 1248 of file support.cc.

References Security::IssuedBy().

Referenced by Ssl::findIssuerCertificate().

◆ ssl_dupAclChecklist()

static int ssl_dupAclChecklist ( CRYPTO_EX_DATA *  ,
CRYPTO_EX_DATA *  ,
void *  ,
int  ,
long  ,
void *   
)
static

Definition at line 660 of file support.cc.

References assert.

Referenced by Ssl::Initialize().

◆ ssl_free_ErrorDetail()

static void ssl_free_ErrorDetail ( void *  ,
void *  ptr,
CRYPTO_EX_DATA *  ,
int  ,
long  ,
void *   
)
static

Definition at line 680 of file support.cc.

Referenced by Ssl::Initialize().

◆ ssl_free_int()

static void ssl_free_int ( void *  ,
void *  ptr,
CRYPTO_EX_DATA *  ,
int  ,
long  ,
void *   
)
static

Definition at line 697 of file support.cc.

Referenced by Ssl::Initialize().

◆ ssl_free_SBuf()

static void ssl_free_SBuf ( void *  ,
void *  ptr,
CRYPTO_EX_DATA *  ,
int  ,
long  ,
void *   
)
static

Definition at line 726 of file support.cc.

Referenced by Ssl::Initialize().

◆ ssl_free_SslErrors()

static void ssl_free_SslErrors ( void *  ,
void *  ptr,
CRYPTO_EX_DATA *  ,
int  ,
long  ,
void *   
)
static

Definition at line 688 of file support.cc.

Referenced by Ssl::Initialize().

◆ ssl_free_VerifyCallbackParameters()

static void ssl_free_VerifyCallbackParameters ( void *  ,
void *  ptr,
CRYPTO_EX_DATA *  ,
int  ,
long  ,
void *   
)
static

Definition at line 735 of file support.cc.

Referenced by Ssl::Initialize().

◆ ssl_free_X509()

static void ssl_free_X509 ( void *  ,
void *  ptr,
CRYPTO_EX_DATA *  ,
int  ,
long  ,
void *   
)
static

Definition at line 717 of file support.cc.

Referenced by Ssl::Initialize().

◆ ssl_freeAclChecklist()

static void ssl_freeAclChecklist ( void *  ,
void *  ptr,
CRYPTO_EX_DATA *  ,
int  ,
long  ,
void *   
)
static

Definition at line 672 of file support.cc.

Referenced by Ssl::Initialize().

◆ ssl_verify_cb()

◆ untrustedToStoreCtx_cb()

static int untrustedToStoreCtx_cb ( X509_STORE_CTX *  ctx,
void *   
)
static

Validates certificates while consulting sslproxy_foreign_intermediate_certs but without using any dynamically downloaded intermediate certificates. OpenSSL "verification callback function" (OpenSSL_vcb_disambiguation)

Definition at line 1429 of file support.cc.

References debugs, and VerifyCtxCertificates().

Referenced by Ssl::useSquidUntrusted().

◆ VerifyCtxCertificates()

static int VerifyCtxCertificates ( X509_STORE_CTX *  ctx,
STACK_OF(X509) *  extraCerts 
)
static

Validates certificates while consulting sslproxy_foreign_intermediate_certs and, optionally, the given extra certificates.

Returns
whatever OpenSSL X509_verify_cert() returns

Definition at line 1381 of file support.cc.

References completeIssuers(), SquidUntrustedCerts, STACK_OF(), and X509_STORE_CTX_set0_untrusted.

Referenced by untrustedToStoreCtx_cb(), and Ssl::VerifyConnCertificates().

Variable Documentation

◆ SquidUntrustedCerts

◆ ssl_ex_index_verify_callback_parameters

int ssl_ex_index_verify_callback_parameters = -1
static

 

Introduction

Documentation

Support

Miscellaneous