AuroraRuntime/Source/Crypto/CA/AuPinGlobal.cpp

47 lines
1.2 KiB
C++
Raw Normal View History

/***
Copyright (C) 2024 Jamie Reece Wilson (a/k/a "Reece"). All rights reserved.
File: AuPinGlobal.cpp
Date: 2024-10-14
Author: Reece
***/
#include <Source/RuntimeInternal.hpp>
#include "AuPinGlobal.hpp"
namespace Aurora::Crypto::CA
{
static AuSPtr<IPinCertificate> gDefaultPinner;
static GlobalPinner gGlobalPinner;
static AuRWLock gRWPinnerLock;
bool GlobalPinner::CheckCertificate(const AuSPtr<X509::ICertificateChain> &pChain,
const AuMemoryViewRead &derCertificate)
{
AU_LOCK_GUARD(gRWPinnerLock->AsReadable());
if (gDefaultPinner)
{
return gDefaultPinner->CheckCertificate(pChain, derCertificate);
}
else
{
return PinCheckDefaultNew()->CheckCertificate(pChain, derCertificate);
}
}
AUKN_SYM IPinCertificate *PinCheckGlobalNew()
{
return &gGlobalPinner;
}
AUKN_SYM void PinCheckGlobalRelease(IPinCertificate *pHandle)
{
// Singleton NOP
}
AUKN_SYM void SetGlobalTLSPinner(const AuSPtr<IPinCertificate> &pNewDefault)
{
AU_LOCK_GUARD(gRWPinnerLock->AsWritable());
gDefaultPinner = pNewDefault;
}
}