// NOLINTBEGIN
#pragma once
#include <cstdint>
#include <nlohmann/json.hpp>

namespace certificate
{
// clang-format off

enum class CertificateType : std::uint8_t{
    Invalid,
    PEM,
    PEMchain,
    PKCS7,
};

enum class KeyUsage : std::uint8_t{
    Invalid,
    DigitalSignature,
    NonRepudiation,
    KeyEncipherment,
    DataEncipherment,
    KeyAgreement,
    KeyCertSign,
    CRLSigning,
    EncipherOnly,
    DecipherOnly,
    ServerAuthentication,
    ClientAuthentication,
    CodeSigning,
    EmailProtection,
    Timestamping,
    OCSPSigning,
};

enum class CertificateUsageType : std::uint8_t{
    Invalid,
    User,
    Web,
    SSH,
    Device,
    Platform,
    BIOS,
};

NLOHMANN_JSON_SERIALIZE_ENUM(CertificateType, {
    {CertificateType::Invalid, "Invalid"},
    {CertificateType::PEM, "PEM"},
    {CertificateType::PEMchain, "PEMchain"},
    {CertificateType::PKCS7, "PKCS7"},
});

NLOHMANN_JSON_SERIALIZE_ENUM(KeyUsage, {
    {KeyUsage::Invalid, "Invalid"},
    {KeyUsage::DigitalSignature, "DigitalSignature"},
    {KeyUsage::NonRepudiation, "NonRepudiation"},
    {KeyUsage::KeyEncipherment, "KeyEncipherment"},
    {KeyUsage::DataEncipherment, "DataEncipherment"},
    {KeyUsage::KeyAgreement, "KeyAgreement"},
    {KeyUsage::KeyCertSign, "KeyCertSign"},
    {KeyUsage::CRLSigning, "CRLSigning"},
    {KeyUsage::EncipherOnly, "EncipherOnly"},
    {KeyUsage::DecipherOnly, "DecipherOnly"},
    {KeyUsage::ServerAuthentication, "ServerAuthentication"},
    {KeyUsage::ClientAuthentication, "ClientAuthentication"},
    {KeyUsage::CodeSigning, "CodeSigning"},
    {KeyUsage::EmailProtection, "EmailProtection"},
    {KeyUsage::Timestamping, "Timestamping"},
    {KeyUsage::OCSPSigning, "OCSPSigning"},
});

NLOHMANN_JSON_SERIALIZE_ENUM(CertificateUsageType, {
    {CertificateUsageType::Invalid, "Invalid"},
    {CertificateUsageType::User, "User"},
    {CertificateUsageType::Web, "Web"},
    {CertificateUsageType::SSH, "SSH"},
    {CertificateUsageType::Device, "Device"},
    {CertificateUsageType::Platform, "Platform"},
    {CertificateUsageType::BIOS, "BIOS"},
});

} // namespace certificate
// clang-format on
// NOLINTEND
