/*** Copyright (C) 2021 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: X509.hpp Date: 2021-6-11 Author: Reece ***/ #pragma once #include "EExtendedUsage.hpp" namespace Aurora::Crypto::X509 { struct CertName { AU_COPY_MOVE_DEF(CertName); AuString commonName; AuString department; AuString organization; AuString address; AuString locality; AuString state; AuString countryCode; AuString postcode; AuString name; AuString email; AuString title; }; struct DecodedCertificate { AU_COPY_MOVE_DEF(DecodedCertificate); int version {}; struct Issuer : CertName { AU_COPY_MOVE_DEF(Issuer); Memory::ByteBuffer id; } issuer; struct Subject : CertName { AU_COPY_MOVE_DEF(Subject); Memory::ByteBuffer id; } subject; struct Vaildity { AU_COPY_MOVE_DEF(Vaildity); AuUInt issued; AuUInt expire; } validity; AuList serialNumber; AuList algorithmOid; AuList AIAs; // TODO: AuString CRL; // TODO: AuList subjectNames; Hashing::EHashType digest; AuList usage; int iMaxPath {}; bool bIsCA {}; // TODO: ... }; AUKN_SYM bool Decode(const Certificate &der, DecodedCertificate &out); AUKN_SYM bool Validate(const Certificate &der, const Certificate &parentDer); } #include "GenerateCertificate.hpp"