reSIProcate
SIP stack, Dialog Usage Manager and related libraries
Loading...
Searching...
No Matches
resip::MacSecurity Class Reference

#include <MacSecurity.hxx>

Inheritance diagram for resip::MacSecurity:
[legend]

Public Member Functions

 MacSecurity ()
 
virtual void preload ()
 
virtual void onReadPEM (const Data &, PEMType, Data &) const
 
virtual void onWritePEM (const Data &, PEMType, const Data &) const
 
virtual void onRemovePEM (const Data &, PEMType) const
 
- Public Member Functions inherited from resip::Security
 Security (const Data &pathToCerts, const CipherList &=StrongestSuite, const Data &defaultPrivateKeyPassPhrase=Data::Empty, const Data &dHParamsFilename=Data::Empty)
 
 Security (const CipherList &=StrongestSuite, const Data &defaultPrivateKeyPassPhrase=Data::Empty, const Data &dHParamsFilename=Data::Empty)
 
void addCADirectory (const Data &caDirectory)
 
void addCAFile (const Data &caFile)
 
void loadCADirectory (const Data &directoryName)
 
void loadCAFile (const Data &fileName)
 
virtual SSL_CTX * createDomainCtx (const SSL_METHOD *method, const Data &domain, const Data &certificateFilename, const Data &privateKeyFilename, const Data &privateKeyPassPhrase)
 Throws BaseSecurity::Exception if the certificate or private key can't be loaded; nothing is left allocated in that case.
 
virtual void updateDomainCtx (SSL_CTX *ctx, const Data &domain, const Data &certificateFilename, const Data &privateKeyFilename, const Data &privateKeyPassPhrase)
 Loads the domain's certificate chain and private key into ctx.
 
- Public Member Functions inherited from resip::BaseSecurity
 BaseSecurity (const CipherList &cipherSuite=StrongestSuite, const Data &defaultPrivateKeyPassPhrase=Data::Empty, const Data &dHParamsFilename=Data::Empty)
 
virtual ~BaseSecurity ()
 
CertificateInfoContainer getRootCertDescriptions () const
 
void addRootCertPEM (const Data &x509PEMEncodedRootCerts)
 
void addDomainCertPEM (const Data &domainName, const Data &certPEM)
 
void addDomainCertDER (const Data &domainName, const Data &certDER)
 
bool hasDomainCert (const Data &domainName, bool logErrors=true) const
 
void removeDomainCert (const Data &domainName)
 
Data getDomainCertDER (const Data &domainName) const
 
void addDomainPrivateKeyPEM (const Data &domainName, const Data &privateKeyPEM, const Data &privateKeyPassPhrase=Data::Empty)
 
bool hasDomainPrivateKey (const Data &domainName) const
 
void removeDomainPrivateKey (const Data &domainName)
 
Data getDomainPrivateKeyPEM (const Data &domainName) const
 
void addUserCertPEM (const Data &aor, const Data &certPEM)
 
void addUserCertDER (const Data &aor, const Data &certDER)
 
bool hasUserCert (const Data &aor) const
 
void removeUserCert (const Data &aor)
 
Data getUserCertDER (const Data &aor) const
 
void setUserPassPhrase (const Data &aor, const Data &passPhrase)
 
bool hasUserPassPhrase (const Data &aor) const
 
void removeUserPassPhrase (const Data &aor)
 
Data getUserPassPhrase (const Data &aor) const
 
void addUserPrivateKeyPEM (const Data &aor, const Data &certPEM, const Data &privateKeyPassPhrase=Data::Empty)
 
void addUserPrivateKeyDER (const Data &aor, const Data &certDER, const Data &privateKeyPassPhrase=Data::Empty)
 
bool hasUserPrivateKey (const Data &aor) const
 
void removeUserPrivateKey (const Data &aor)
 
Data getUserPrivateKeyPEM (const Data &aor) const
 
Data getUserPrivateKeyDER (const Data &aor) const
 
void generateUserCert (const Data &aor, int expireDays=365, int keyLen=2048)
 
MultipartSignedContents * sign (const Data &senderAor, Contents *)
 
Pkcs7Contents * encrypt (Contents *, const Data &recipCertName)
 
MultipartSignedContents * signAndEncrypt (const Data &senderAor, Contents *, const Data &recipCertName)
 
Data computeIdentity (const Data &signerDomain, const Data &in) const
 
bool checkIdentity (const Data &signerDomain, const Data &in, const Data &sig, X509 *cert=NULL) const
 
void checkAndSetIdentity (SipMessage &msg, const Data &derCert=Data::Empty) const
 
Contents * decrypt (const Data &decryptorAor, const Pkcs7Contents *)
 
Contents * checkSignature (MultipartSignedContents *, Data *signedBy, SignatureStatus *sigStat)
 
SSL_CTX * getTlsCtx ()
 
SSL_CTX * getSslCtx ()
 
X509 * getDomainCert (const Data &domain)
 
EVP_PKEY * getDomainKey (const Data &domain)
 
X509 * getUserCert (const Data &aor)
 
EVP_PKEY * getUserPrivateKey (const Data &aor)
 

Protected Member Functions

KeychainHandle openSystemCertStore ()
 
void getCerts ()
 
void closeCertifStore (KeychainHandle searchReference)
 
- Protected Member Functions inherited from resip::BaseSecurity
void addCertPEM (PEMType type, const Data &name, const Data &certPEM, bool write)
 
void addCertDER (PEMType type, const Data &name, const Data &certDER, bool write)
 
bool hasCert (PEMType type, const Data &name, bool logErrors=true) const
 
void removeCert (PEMType type, const Data &name)
 
Data getCertDER (PEMType type, const Data &name) const
 
void addCertX509 (PEMType type, const Data &name, X509 *cert, bool write)
 
void addPrivateKeyPEM (PEMType type, const Data &name, const Data &privateKeyPEM, bool write, const Data &privateKeyPassPhrase=Data::Empty)
 
void addPrivateKeyDER (PEMType type, const Data &name, const Data &privateKeyDER, bool write, const Data &privateKeyPassPhrase=Data::Empty)
 
bool hasPrivateKey (PEMType type, const Data &name) const
 
void removePrivateKey (PEMType type, const Data &name)
 
Data getPrivateKeyPEM (PEMType type, const Data &name) const
 
Data getPrivateKeyDER (PEMType type, const Data &name) const
 
void addPrivateKeyPKEY (PEMType type, const Data &name, EVP_PKEY *pKey, bool write)
 
void setDHParams (SSL_CTX *ctx)
 

Additional Inherited Members

- Public Types inherited from resip::BaseSecurity
enum  NameType { SubjectAltName , CommonName }
 
enum  PEMType {
  RootCert =1 , DomainCert , DomainPrivateKey , UserCert ,
  UserPrivateKey
}
 
typedef std::vector< CertificateInfo > CertificateInfoContainer
 
typedef std::map< Data, X509 * > X509Map
 
typedef std::list< X509 * > X509List
 
typedef std::map< Data, EVP_PKEY * > PrivateKeyMap
 
typedef std::map< Data, Data > PassPhraseMap
 
- Static Public Member Functions inherited from resip::BaseSecurity
static int getResipConnectionExDataIdx ()
 
static void initialize ()
 
static Data getCertName (X509 *cert)
 
static void getCertNames (X509 *cert, std::list< PeerName > &peerNames, bool useEmailAsSIP=false)
 
static bool isSelfSigned (const X509 *cert)
 
static int matchHostName (const Data &certificateName, const Data &domainName)
 Applies the certificate and domain name matching rules.
 
static void setAllowWildcardCertificates (bool bEnable)
 
static bool allowWildcardCertificates ()
 
static SecurityTypes::SSLType parseSSLType (const Data &typeName)
 Converts a string containing an SSL type name to the corresponding enum value.
 
static long parseOpenSSLCTXOption (const Data &optionName)
 Converts a string containing an OpenSSL option name (for SSL_CTX_set_options) to the numeric value from ssl.h - see resip::parseOpenSSLCTXOption.
 
- Static Public Attributes inherited from resip::BaseSecurity
static CipherList ExportableSuite
 
static CipherList StrongestSuite
 
static long OpenSSLCTXSetOptions = SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3 | SSL_OP_NO_COMPRESSION
 Note:
 
static long OpenSSLCTXClearOptions = 0
 
- Static Protected Member Functions inherited from resip::BaseSecurity
static void dumpAsn (const char *, Data)
 
static int matchHostNameWithWildcards (const Data &certificateName, const Data &domainName)
 Matches a certificate name, which may hold a wildcard, against the domain name we connected to, following RFC 6125 section 6.4.3: the wildcard has to be the whole left-most label ("*.example.com"), it stands for exactly one non-empty label of the domain name, at least two labels have to follow it, and it never matches an IP address.
 
- Protected Attributes inherited from resip::BaseSecurity
SSL_CTX * mTlsCtx
 Note:
 
SSL_CTX * mSslCtx
 
CipherList mCipherList
 
Data mDefaultPrivateKeyPassPhrase
 
Data mDHParamsFilename
 
X509List mRootCerts
 
X509_STORE * mRootTlsCerts
 
X509_STORE * mRootSslCerts
 
X509Map mDomainCerts
 
PrivateKeyMap mDomainPrivateKeys
 
X509Map mUserCerts
 
PassPhraseMap mUserPassPhrases
 
PrivateKeyMap mUserPrivateKeys
 
- Static Protected Attributes inherited from resip::BaseSecurity
static bool mAllowWildcardCertificates = false
 

Detailed Description

Definition at line 21 of file MacSecurity.hxx.

Constructor & Destructor Documentation

◆ MacSecurity()

resip::MacSecurity::MacSecurity ( )
inline

Definition at line 25 of file MacSecurity.hxx.

Member Function Documentation

◆ closeCertifStore()

void MacSecurity::closeCertifStore ( KeychainHandle  searchReference)
protected

Definition at line 116 of file MacSecurity.cxx.

◆ getCerts()

void MacSecurity::getCerts ( )
protected

Definition at line 125 of file MacSecurity.cxx.

◆ onReadPEM()

virtual void resip::MacSecurity::onReadPEM ( const Data &  ,
PEMType  ,
Data &   
) const
inlinevirtual

Reimplemented from resip::Security.

Definition at line 32 of file MacSecurity.hxx.

◆ onRemovePEM()

virtual void resip::MacSecurity::onRemovePEM ( const Data &  ,
PEMType   
) const
inlinevirtual

Reimplemented from resip::Security.

Definition at line 36 of file MacSecurity.hxx.

◆ onWritePEM()

virtual void resip::MacSecurity::onWritePEM ( const Data &  ,
PEMType  ,
const Data &   
) const
inlinevirtual

Reimplemented from resip::Security.

Definition at line 34 of file MacSecurity.hxx.

◆ openSystemCertStore()

KeychainHandle MacSecurity::openSystemCertStore ( )
protected

Definition at line 47 of file MacSecurity.cxx.

◆ preload()

void MacSecurity::preload ( )
virtual

Reimplemented from resip::Security.

Definition at line 38 of file MacSecurity.cxx.


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