47 lines
1.2 KiB
C++
47 lines
1.2 KiB
C++
|
/***
|
||
|
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;
|
||
|
}
|
||
|
}
|