AuroraRuntime/Source/Crypto/X509/AuCertificateChain.hpp

45 lines
1.4 KiB
C++
Raw Normal View History

/***
Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved.
File: AuCertificateChain.hpp
Date: 2022-8-27
Author: Reece
***/
#pragma once
#include <mbedtls/entropy.h>
#include <mbedtls/x509.h>
#include <mbedtls/oid.h>
#include <mbedtls/x509_crt.h>
namespace Aurora::Crypto::X509
{
struct CertificateChain : ICertificateChain, AuEnableSharedFromThis<CertificateChain>
{
CertificateChain();
~CertificateChain();
virtual AuUInt32 GetCertificateCount() override;
virtual AuMemoryViewRead GetCertificate(AuUInt32 idx) override;
virtual AuOptional<const CertificateDecoded &> GetCertificateDetails(AuUInt32 idx) override;
mbedtls_x509_crt *GetCertificateInternal(AuUInt32 idx);
bool Init(const AuList<AuMemoryViewRead> &certs);
bool Init(const AuMemoryViewRead &cert);
bool Init2(const AuMemoryViewRead &cert);
bool Init(const AuList<AuROString> &certs);
bool Init(const AuROString &cert);
bool Init2(const AuROString &cert);
bool Init(const mbedtls_x509_crt *pCert);
bool Precache();
mbedtls_x509_crt *pCertificate;
mbedtls_x509_crt ownCertificate {};
AuList<Crypto::X509::CertificateDecoded> decoded;
AuMutex mutex;
AuList<AuMemoryViewRead> ownership;
AuMemoryViewRead ownership2;
};
}