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 CertificateUsageType{ 19 Invalid, 20 User, 21 Web, 22 SSH, 23 Device, 24 Platform, 25 BIOS, 26 IDevID, 27 LDevID, 28 IAK, 29 LAK, 30 EK, 31 }; 32 33 enum class KeyUsage{ 34 Invalid, 35 DigitalSignature, 36 NonRepudiation, 37 KeyEncipherment, 38 DataEncipherment, 39 KeyAgreement, 40 KeyCertSign, 41 CRLSigning, 42 EncipherOnly, 43 DecipherOnly, 44 ServerAuthentication, 45 ClientAuthentication, 46 CodeSigning, 47 EmailProtection, 48 Timestamping, 49 OCSPSigning, 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(CertificateUsageType, { 61 {CertificateUsageType::Invalid, "Invalid"}, 62 {CertificateUsageType::User, "User"}, 63 {CertificateUsageType::Web, "Web"}, 64 {CertificateUsageType::SSH, "SSH"}, 65 {CertificateUsageType::Device, "Device"}, 66 {CertificateUsageType::Platform, "Platform"}, 67 {CertificateUsageType::BIOS, "BIOS"}, 68 {CertificateUsageType::IDevID, "IDevID"}, 69 {CertificateUsageType::LDevID, "LDevID"}, 70 {CertificateUsageType::IAK, "IAK"}, 71 {CertificateUsageType::LAK, "LAK"}, 72 {CertificateUsageType::EK, "EK"}, 73 }); 74 75 NLOHMANN_JSON_SERIALIZE_ENUM(KeyUsage, { 76 {KeyUsage::Invalid, "Invalid"}, 77 {KeyUsage::DigitalSignature, "DigitalSignature"}, 78 {KeyUsage::NonRepudiation, "NonRepudiation"}, 79 {KeyUsage::KeyEncipherment, "KeyEncipherment"}, 80 {KeyUsage::DataEncipherment, "DataEncipherment"}, 81 {KeyUsage::KeyAgreement, "KeyAgreement"}, 82 {KeyUsage::KeyCertSign, "KeyCertSign"}, 83 {KeyUsage::CRLSigning, "CRLSigning"}, 84 {KeyUsage::EncipherOnly, "EncipherOnly"}, 85 {KeyUsage::DecipherOnly, "DecipherOnly"}, 86 {KeyUsage::ServerAuthentication, "ServerAuthentication"}, 87 {KeyUsage::ClientAuthentication, "ClientAuthentication"}, 88 {KeyUsage::CodeSigning, "CodeSigning"}, 89 {KeyUsage::EmailProtection, "EmailProtection"}, 90 {KeyUsage::Timestamping, "Timestamping"}, 91 {KeyUsage::OCSPSigning, "OCSPSigning"}, 92 }); 93 94 } 95 // clang-format on 96