1 /*! 2 * \copyright Copyright (c) 2014-2021 Governikus GmbH & Co. KG, Germany 3 */ 4 5 #pragma once 6 7 #include <QByteArray> 8 9 namespace governikus 10 { 11 12 namespace KnownOIDs 13 { 14 enum class Base 15 { 16 BSI_DE, 17 SIGNED_DATA, 18 ID_SECURITY_OBJECT, 19 ID_EXTENSIONS 20 }; 21 22 enum class CertificateExtensions 23 { 24 ID_DESCRIPTION, 25 ID_SECTOR 26 }; 27 28 enum class TermsOfUsageType 29 { 30 ID_PLAIN_FORMAT, 31 ID_HTML_FORMAT, 32 ID_PDF_FORMAT 33 }; 34 35 enum class CHATType 36 { 37 ID_IS, 38 ID_AT, 39 ID_ST 40 }; 41 42 enum class AuxilaryData 43 { 44 ID_DATE_OF_BIRTH, 45 ID_DATE_OF_EXPIRY, 46 ID_COMMUNITY_ID 47 }; 48 49 enum class SecurityProtocol 50 { 51 ID_PK, 52 ID_TA, 53 ID_CA, 54 ID_PACE 55 }; 56 57 enum class id_ca 58 { 59 DH, 60 DH_3DES_CBC_CBC, 61 DH_AES_CBC_CMAC_128, 62 DH_AES_CBC_CMAC_192, 63 DH_AES_CBC_CMAC_256, 64 ECDH, 65 ECDH_3DES_CBC_CBC, 66 ECDH_AES_CBC_CMAC_128, 67 ECDH_AES_CBC_CMAC_192, 68 ECDH_AES_CBC_CMAC_256 69 }; 70 71 enum class id_ta 72 { 73 ECDSA_SHA_1, 74 ECDSA_SHA_224, 75 ECDSA_SHA_256, 76 ECDSA_SHA_384, 77 ECDSA_SHA_512 78 }; 79 80 enum class id_pk 81 { 82 DH, 83 ECDH 84 }; 85 86 namespace id_PACE 87 { 88 enum class DH 89 { 90 GM, 91 GM_3DES_CBC_CBC, 92 GM_AES_CBC_CMAC_128, 93 GM_AES_CBC_CMAC_192, 94 GM_AES_CBC_CMAC_256, 95 IM, 96 IM_3DES_CBC_CBC, 97 IM_AES_CBC_CMAC_128, 98 IM_AES_CBC_CMAC_192, 99 IM_AES_CBC_CMAC_256, 100 101 }; 102 103 enum class ECDH 104 { 105 GM, 106 GM_3DES_CBC_CBC, 107 GM_AES_CBC_CMAC_128, 108 GM_AES_CBC_CMAC_192, 109 GM_AES_CBC_CMAC_256, 110 IM, 111 IM_3DES_CBC_CBC, 112 IM_AES_CBC_CMAC_128, 113 IM_AES_CBC_CMAC_192, 114 IM_AES_CBC_CMAC_256 115 }; 116 117 } // namespace KnownOIDs::id_PACE 118 119 } // namespace KnownOIDs 120 121 #define DEFINE_TO_BYTE_ARRAY(type)\ 122 QByteArray toByteArray(type pValue);\ 123 \ 124 inline QByteArray operator+(type pEnum, const QByteArray& pValue)\ 125 {\ 126 return toByteArray(pEnum) + pValue;\ 127 }\ 128 \ 129 inline bool operator==(const QByteArray& pValue, type pEnum)\ 130 {\ 131 return toByteArray(pEnum) == pValue;\ 132 }\ 133 \ 134 inline bool operator!=(const QByteArray& pValue, type pEnum)\ 135 {\ 136 return !(pValue == pEnum);\ 137 } 138 139 140 DEFINE_TO_BYTE_ARRAY(KnownOIDs::Base) 141 DEFINE_TO_BYTE_ARRAY(KnownOIDs::CertificateExtensions) 142 DEFINE_TO_BYTE_ARRAY(KnownOIDs::TermsOfUsageType) 143 DEFINE_TO_BYTE_ARRAY(KnownOIDs::CHATType) 144 DEFINE_TO_BYTE_ARRAY(KnownOIDs::AuxilaryData) 145 DEFINE_TO_BYTE_ARRAY(KnownOIDs::SecurityProtocol) 146 DEFINE_TO_BYTE_ARRAY(KnownOIDs::id_ca) 147 DEFINE_TO_BYTE_ARRAY(KnownOIDs::id_ta) 148 DEFINE_TO_BYTE_ARRAY(KnownOIDs::id_pk) 149 DEFINE_TO_BYTE_ARRAY(KnownOIDs::id_PACE::DH) 150 DEFINE_TO_BYTE_ARRAY(KnownOIDs::id_PACE::ECDH) 151 152 #undef DEFINE_TO_BYTE_ARRAY 153 154 } // namespace governikus 155