AuroraRuntime/Source/Crypto/CA/AuPinPair.cpp

68 lines
2.1 KiB
C++
Raw Normal View History

/***
Copyright (C) 2024 Jamie Reece Wilson (a/k/a "Reece"). All rights reserved.
File: AuPinPair.cpp
Date: 2024-10-14
Author: Reece
***/
#include <Source/RuntimeInternal.hpp>
#include "AuPinPair.hpp"
namespace Aurora::Crypto::CA
{
OpAndPinner::OpAndPinner(const AuSPtr<IPinCertificate> &pA,
const AuSPtr<IPinCertificate> &pB) :
pA(pA),
pB(pB)
{
}
bool OpAndPinner::CheckCertificate(const AuSPtr<X509::ICertificateChain> &pChain,
const AuMemoryViewRead &derCertificate)
{
return this->pA->CheckCertificate(pChain, derCertificate) &&
this->pB->CheckCertificate(pChain, derCertificate);
}
OpOrPinner::OpOrPinner(const AuSPtr<IPinCertificate> &pA,
const AuSPtr<IPinCertificate> &pB) :
pA(pA),
pB(pB)
{
}
bool OpOrPinner::CheckCertificate(const AuSPtr<X509::ICertificateChain> &pChain,
const AuMemoryViewRead &derCertificate)
{
return this->pA->CheckCertificate(pChain, derCertificate) ||
this->pB->CheckCertificate(pChain, derCertificate);
}
AUKN_SYM IPinCertificate *PinCheckTwoAndNew(const AuSPtr<IPinCertificate> &pCheckA,
const AuSPtr<IPinCertificate> &pCheckB)
{
SysCheckArgNotNull(pCheckA, {});
SysCheckArgNotNull(pCheckB, {});
return _new OpOrPinner(pCheckA, pCheckB);
}
AUKN_SYM void PinCheckTwoAndRelease(IPinCertificate *pHandle)
{
AuSafeDelete<OpAndPinner *>(pHandle);
}
AUKN_SYM IPinCertificate *PinCheckTwoOrNew(const AuSPtr<IPinCertificate> &pCheckA,
const AuSPtr<IPinCertificate> &pCheckB)
{
SysCheckArgNotNull(pCheckA, {});
SysCheckArgNotNull(pCheckB, {});
return _new OpOrPinner(pCheckA, pCheckB);
}
AUKN_SYM void PinCheckTwoOrRelease(IPinCertificate *pHandle)
{
AuSafeDelete<OpOrPinner *>(pHandle);
}
}