gadgets.cc File Reference
#include "squid.h"
#include "base/IoManip.h"
#include "error/SysErrorDetail.h"
#include "sbuf/Stream.h"
#include "security/Io.h"
#include "ssl/gadgets.h"
Include dependency graph for gadgets.cc:

Go to the source code of this file.

Functions

static void ThrowErrors (const char *const problem, const int savedErrno, const SourceLocation &where)
 
static Security::PrivateKeyPointer CreateRsaPrivateKey ()
 
static bool setSerialNumber (ASN1_INTEGER *ai, BIGNUM const *serial)
 
static bool replaceCommonName (Security::CertPointer &cert, std::string const &rawCn)
 
static void printX509Signature (const Security::CertPointer &cert, std::string &out)
 
static bool mimicAuthorityKeyId (Security::CertPointer &cert, Security::CertPointer const &mimicCert, Security::CertPointer const &issuerCert)
 
static int mimicExtensions (Security::CertPointer &cert, Security::CertPointer const &mimicCert, Security::CertPointer const &issuerCert)
 
static bool addAltNameWithSubjectCn (Security::CertPointer &cert)
 
static bool buildCertificate (Security::CertPointer &cert, Ssl::CertificateProperties const &properties)
 
static bool generateFakeSslCertificate (Security::CertPointer &certToStore, Security::PrivateKeyPointer &pkeyToStore, Ssl::CertificateProperties const &properties, Ssl::BIGNUM_Pointer const &serial)
 
static BIGNUM * createCertSerial (unsigned char *md, unsigned int n)
 
static BIGNUM * x509Digest (Security::CertPointer const &cert)
 
static BIGNUM * x509Pubkeydigest (Security::CertPointer const &cert)
 
static bool createSerial (Ssl::BIGNUM_Pointer &serial, Ssl::CertificateProperties const &properties)
 
static bool asn1timeToGeneralizedTimeStr (ASN1_TIME *aTime, char *buf, int bufLen)
 Print the time represented by a ASN1_TIME struct to a string using GeneralizedTime format. More...
 
static int asn1time_cmp (ASN1_TIME *asnTime1, ASN1_TIME *asnTime2)
 
static const char * getSubjectEntry (X509 *x509, int nid)
 

Variables

static const size_t MaxCnLen = 64
 

Function Documentation

◆ addAltNameWithSubjectCn()

static bool addAltNameWithSubjectCn ( Security::CertPointer cert)
static

Adds a new subjectAltName extension contining Subject CN or returns false expects the caller to check for the existing subjectAltName extension

Definition at line 474 of file gadgets.cc.

References Security::LockingPointer< T, UnLocker, Locker >::get().

Referenced by buildCertificate().

◆ asn1time_cmp()

static int asn1time_cmp ( ASN1_TIME *  asnTime1,
ASN1_TIME *  asnTime2 
)
static

Definition at line 867 of file gadgets.cc.

References asn1timeToGeneralizedTimeStr().

Referenced by Ssl::certificateMatchesProperties().

◆ asn1timeToGeneralizedTimeStr()

static bool asn1timeToGeneralizedTimeStr ( ASN1_TIME *  aTime,
char *  buf,
int  bufLen 
)
static

Definition at line 838 of file gadgets.cc.

Referenced by asn1time_cmp().

◆ buildCertificate()

◆ createCertSerial()

static BIGNUM * createCertSerial ( unsigned char *  md,
unsigned int  n 
)
static

Definition at line 634 of file gadgets.cc.

References assert.

Referenced by x509Digest(), and x509Pubkeydigest().

◆ CreateRsaPrivateKey()

static Security::PrivateKeyPointer CreateRsaPrivateKey ( )
static

Definition at line 52 of file gadgets.cc.

Referenced by generateFakeSslCertificate().

◆ createSerial()

static bool createSerial ( Ssl::BIGNUM_Pointer serial,
Ssl::CertificateProperties const &  properties 
)
static

Generate a unique serial number based on a Ssl::CertificateProperties object for a new generated certificate

Definition at line 687 of file gadgets.cc.

References generateFakeSslCertificate(), Security::LockingPointer< T, UnLocker, Locker >::reset(), Ssl::CertificateProperties::signWithX509, x509Digest(), and x509Pubkeydigest().

Referenced by Ssl::generateSslCertificate().

◆ generateFakeSslCertificate()

◆ getSubjectEntry()

static const char * getSubjectEntry ( X509 *  x509,
int  nid 
)
static

Definition at line 951 of file gadgets.cc.

Referenced by Ssl::CommonHostName(), and Ssl::getOrganization().

◆ mimicAuthorityKeyId()

static bool mimicAuthorityKeyId ( Security::CertPointer cert,
Security::CertPointer const &  mimicCert,
Security::CertPointer const &  issuerCert 
)
static

Check if mimicCert certificate has the Authority Key Identifier extension and if yes add the extension to cert certificate with the same fields if possible. If the issuerCert certificate does not have the Subject Key Identifier extension (required to build the keyIdentifier field of AuthorityKeyIdentifier) then the authorityCertIssuer and authorityCertSerialNumber fields added.

issuer name and issuer serial

Definition at line 311 of file gadgets.cc.

References Security::LockingPointer< T, UnLocker, Locker >::get().

Referenced by mimicExtensions().

◆ mimicExtensions()

static int mimicExtensions ( Security::CertPointer cert,
Security::CertPointer const &  mimicCert,
Security::CertPointer const &  issuerCert 
)
static

Copy certificate extensions from cert to mimicCert. Returns the number of extensions copied.

Definition at line 392 of file gadgets.cc.

References assert, EVP_PKEY_get0_RSA(), Security::LockingPointer< T, UnLocker, Locker >::get(), and mimicAuthorityKeyId().

Referenced by buildCertificate().

◆ printX509Signature()

static void printX509Signature ( const Security::CertPointer cert,
std::string &  out 
)
static

Definition at line 253 of file gadgets.cc.

References Ssl::X509_get_signature().

Referenced by Ssl::OnDiskCertificateDbKey().

◆ replaceCommonName()

static bool replaceCommonName ( Security::CertPointer cert,
std::string const &  rawCn 
)
static

Definition at line 187 of file gadgets.cc.

References Security::LockingPointer< T, UnLocker, Locker >::get(), and MaxCnLen.

Referenced by buildCertificate().

◆ ThrowErrors()

static void ThrowErrors ( const char *const  problem,
const int  savedErrno,
const SourceLocation where 
)
static

Definition at line 43 of file gadgets.cc.

References Ssl::ReportAndForgetErrors(), and ToSBuf().

Referenced by Ssl::ReadOnlyBioTiedTo(), and Ssl::ReadOptionalCertificate().

◆ x509Digest()

static BIGNUM * x509Digest ( Security::CertPointer const &  cert)
static

Return the SHA1 digest of the DER encoded version of the certificate stored in a BIGNUM

Definition at line 663 of file gadgets.cc.

References createCertSerial(), and Security::LockingPointer< T, UnLocker, Locker >::get().

Referenced by createSerial().

◆ x509Pubkeydigest()

static BIGNUM * x509Pubkeydigest ( Security::CertPointer const &  cert)
static

Definition at line 674 of file gadgets.cc.

References createCertSerial(), and Security::LockingPointer< T, UnLocker, Locker >::get().

Referenced by createSerial().

Variable Documentation

◆ MaxCnLen

const size_t MaxCnLen = 64
static

Definition at line 184 of file gadgets.cc.

Referenced by replaceCommonName().

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors