/*** Copyright (C) 2024 Jamie Reece Wilson (a/k/a "Reece"). All rights reserved. File: AuPinLinuxLike.cpp Date: 2024-10-14 Author: Reece ***/ #include #include "AuPinLinuxLike.hpp" namespace Aurora::Crypto::CA { IPinCertificate *PinLinuxLikeNew() { auto pStore = NewCertificateStoreNew(); if (!pStore) { return nullptr; } AuString certs; if (!AuFS::ReadString("/etc/ssl/certs/ca-bundle.crt", certs)) { if (!AuFS::ReadString("/etc/ssl/certs/ca-certificates.crt", certs)) { SysPushErrorIO("No SSL certificates.crt file"); NewCertificateStoreRelease(pStore); return nullptr; } } auto pChain = AuCrypto::X509::NewChainFromManyPemInStreamUnique(certs); if (!pChain) { SysPushErrorSyntax("Couldn't parse system cert file!"); NewCertificateStoreRelease(pStore); return nullptr; } if (!pStore->AddCertificateChain(pChain.get())) { SysPushErrorGeneric(); NewCertificateStoreRelease(pStore); return nullptr; } return pStore; } void PinLinuxLikeRelease(IPinCertificate *pHandle) { NewCertificateStoreRelease(AuStaticCast(pHandle)); } }