1 // SPDX-License-Identifier: Apache-2.0 2 // SPDX-FileCopyrightText: Copyright OpenBMC Authors 3 #pragma once 4 #include <nlohmann/json.hpp> 5 6 namespace certificate 7 { 8 // clang-format off 9 10 enum class CertificateType{ 11 Invalid, 12 PEM, 13 PEMchain, 14 PKCS7, 15 PKCS12, 16 }; 17 18 enum class KeyUsage{ 19 Invalid, 20 DigitalSignature, 21 NonRepudiation, 22 KeyEncipherment, 23 DataEncipherment, 24 KeyAgreement, 25 KeyCertSign, 26 CRLSigning, 27 EncipherOnly, 28 DecipherOnly, 29 ServerAuthentication, 30 ClientAuthentication, 31 CodeSigning, 32 EmailProtection, 33 Timestamping, 34 OCSPSigning, 35 }; 36 37 enum class CertificateUsageType{ 38 Invalid, 39 User, 40 Web, 41 SSH, 42 Device, 43 Platform, 44 BIOS, 45 IDevID, 46 LDevID, 47 IAK, 48 LAK, 49 EK, 50 }; 51 52 NLOHMANN_JSON_SERIALIZE_ENUM(CertificateType, { 53 {CertificateType::Invalid, "Invalid"}, 54 {CertificateType::PEM, "PEM"}, 55 {CertificateType::PEMchain, "PEMchain"}, 56 {CertificateType::PKCS7, "PKCS7"}, 57 {CertificateType::PKCS12, "PKCS12"}, 58 }); 59 60 NLOHMANN_JSON_SERIALIZE_ENUM(KeyUsage, { 61 {KeyUsage::Invalid, "Invalid"}, 62 {KeyUsage::DigitalSignature, "DigitalSignature"}, 63 {KeyUsage::NonRepudiation, "NonRepudiation"}, 64 {KeyUsage::KeyEncipherment, "KeyEncipherment"}, 65 {KeyUsage::DataEncipherment, "DataEncipherment"}, 66 {KeyUsage::KeyAgreement, "KeyAgreement"}, 67 {KeyUsage::KeyCertSign, "KeyCertSign"}, 68 {KeyUsage::CRLSigning, "CRLSigning"}, 69 {KeyUsage::EncipherOnly, "EncipherOnly"}, 70 {KeyUsage::DecipherOnly, "DecipherOnly"}, 71 {KeyUsage::ServerAuthentication, "ServerAuthentication"}, 72 {KeyUsage::ClientAuthentication, "ClientAuthentication"}, 73 {KeyUsage::CodeSigning, "CodeSigning"}, 74 {KeyUsage::EmailProtection, "EmailProtection"}, 75 {KeyUsage::Timestamping, "Timestamping"}, 76 {KeyUsage::OCSPSigning, "OCSPSigning"}, 77 }); 78 79 NLOHMANN_JSON_SERIALIZE_ENUM(CertificateUsageType, { 80 {CertificateUsageType::Invalid, "Invalid"}, 81 {CertificateUsageType::User, "User"}, 82 {CertificateUsageType::Web, "Web"}, 83 {CertificateUsageType::SSH, "SSH"}, 84 {CertificateUsageType::Device, "Device"}, 85 {CertificateUsageType::Platform, "Platform"}, 86 {CertificateUsageType::BIOS, "BIOS"}, 87 {CertificateUsageType::IDevID, "IDevID"}, 88 {CertificateUsageType::LDevID, "LDevID"}, 89 {CertificateUsageType::IAK, "IAK"}, 90 {CertificateUsageType::LAK, "LAK"}, 91 {CertificateUsageType::EK, "EK"}, 92 }); 93 94 } 95 // clang-format on 96