AusweisApp
 
Lade ...
Suche ...
Keine Treffer
SecurityProtocol.h
gehe zur Dokumentation dieser Datei
1
4
5#pragma once
6
7#include "EnumHelper.h"
8#include "asn1/Oid.h"
9
10#include <QByteArray>
11#include <QCryptographicHash>
12#include <QMap>
13#include <openssl/evp.h>
14
15#include <optional>
16
17
18namespace governikus
19{
20
21defineEnumType(ProtocolType, UNDEFINED, TA, CA, PACE, RI)
22defineEnumType(KeyAgreementType, UNDEFINED, DH, ECDH)
23defineEnumType(MappingType, UNDEFINED, GM, IM, CAM)
25defineEnumType(SignatureType, UNDEFINED, RSA, ECDSA)
26
27class SecurityProtocol
28{
29 private:
30 static const QMap<char, ProtocolType> cProtocol;
31 static const QMap<char, KeyAgreementType> cKeyAgreement;
32 static const QMap<char, MappingType> cMapping;
33 static const QMap<char, CipherType> cCipher;
34 static const QMap<char, SignatureType> cSignature;
35 static const QMap<char, std::optional<QCryptographicHash::Algorithm>> cHashAlgorithm;
36 static const QMap<char, std::optional<QCryptographicHash::Algorithm>> cRsaHashAlgorithm;
37
38 const Oid mOid;
39
40 ProtocolType mProtocol;
41 KeyAgreementType mKeyAgreement;
42 MappingType mMapping;
43 CipherType mCipher;
44 SignatureType mSignature;
45 std::optional<QCryptographicHash::Algorithm> mHashAlgorithm;
46
47 void logCritical(const QLatin1String& pTopic) const;
48
49 public:
50 explicit SecurityProtocol(const Oid& pOid);
51
52 [[nodiscard]] const Oid& getOid() const;
53 [[nodiscard]] ProtocolType getProtocol() const;
54 [[nodiscard]] KeyAgreementType getKeyAgreement() const;
55 [[nodiscard]] MappingType getMapping() const;
56 [[nodiscard]] const EVP_CIPHER* getCipher() const;
57 [[nodiscard]] const char* getCipherString() const;
58 [[nodiscard]] int getKeySize() const;
59 [[nodiscard]] SignatureType getSignature() const;
60 [[nodiscard]] QCryptographicHash::Algorithm getHashAlgorithm() const;
61
62 bool operator==(const SecurityProtocol& pOther) const;
63};
64
65
66inline QDebug operator<<(QDebug pDbg, const SecurityProtocol& pProtocol)
67{
68 QDebugStateSaver saver(pDbg);
69 pDbg.nospace() << QByteArray(pProtocol.getOid());
70 return pDbg.space();
71}
72
73
74} // namespace governikus
#define defineEnumType(enumName,...)
Definition EnumHelper.h:85
Implementation of GeneralAuthenticate response APDUs.
Definition CommandApdu.h:17
UNDEFINED
Definition SecurityProtocol.h:22
ECDH AES_128_CBC
Definition SecurityProtocol.h:24
ECDH DES3_CBC
Definition SecurityProtocol.h:24
DH
Definition SecurityProtocol.h:22
ECDH AES_192_CBC
Definition SecurityProtocol.h:24
QDebug operator<<(QDebug pDbg, const CommandApdu &pCommandApdu)
Definition CommandApdu.h:96
defineEnumType(KnownOid, ID_SIGNED_DATA, EC_PS_PUBLICKEY, STANDARDIZED_DOMAINPARAMETERS, BSI_DE_PROTOCOLS_SMARTCARD, ID_PK, ID_PK_DH, ID_PK_ECDH, ID_PS_PK, ID_PS_PK_ECDH_ESCHNORR, ID_TA, ID_TA_RSA, ID_TA_RSA_V1_5_SHA_1, ID_TA_RSA_V1_5_SHA_256, ID_TA_RSA_PSS_SHA_1, ID_TA_RSA_PSS_SHA_256, ID_TA_RSA_V1_5_SHA_512, ID_TA_RSA_PSS_SHA_512, ID_TA_ECDSA, ID_TA_ECDSA_SHA_1, ID_TA_ECDSA_SHA_224, ID_TA_ECDSA_SHA_256, ID_TA_ECDSA_SHA_384, ID_TA_ECDSA_SHA_512, ID_CA, ID_CA_DH, ID_CA_DH_3DES_CBC_CBC, ID_CA_DH_AES_CBC_CMAC_128, ID_CA_DH_AES_CBC_CMAC_192, ID_CA_DH_AES_CBC_CMAC_256, ID_CA_ECDH, ID_CA_ECDH_3DES_CBC_CBC, ID_CA_ECDH_AES_CBC_CMAC_128, ID_CA_ECDH_AES_CBC_CMAC_192, ID_CA_ECDH_AES_CBC_CMAC_256, ID_PACE, ID_PACE_DH_GM, ID_PACE_DH_GM_3DES_CBC_CBC, ID_PACE_DH_GM_AES_CBC_CMAC_128, ID_PACE_DH_GM_AES_CBC_CMAC_192, ID_PACE_DH_GM_AES_CBC_CMAC_256, ID_PACE_ECDH_GM, ID_PACE_ECDH_GM_3DES_CBC_CBC, ID_PACE_ECDH_GM_AES_CBC_CMAC_128, ID_PACE_ECDH_GM_AES_CBC_CMAC_192, ID_PACE_ECDH_GM_AES_CBC_CMAC_256, ID_PACE_DH_IM, ID_PACE_DH_IM_3DES_CBC_CBC, ID_PACE_DH_IM_AES_CBC_CMAC_128, ID_PACE_DH_IM_AES_CBC_CMAC_192, ID_PACE_DH_IM_AES_CBC_CMAC_256, ID_PACE_ECDH_IM, ID_PACE_ECDH_IM_3DES_CBC_CBC, ID_PACE_ECDH_IM_AES_CBC_CMAC_128, ID_PACE_ECDH_IM_AES_CBC_CMAC_192, ID_PACE_ECDH_IM_AES_CBC_CMAC_256, ID_PACE_ECDH_CAM, ID_PACE_ECDH_CAM_AES_CBC_CMAC_128, ID_PACE_ECDH_CAM_AES_CBC_CMAC_192, ID_PACE_ECDH_CAM_AES_CBC_CMAC_256, ID_RI, ID_RI_DH, ID_RI_DH_SHA_1, ID_RI_DH_SHA_224, ID_RI_DH_SHA_256, ID_RI_DH_SHA_384, ID_RI_DH_SHA_512, ID_RI_ECDH, ID_RI_ECDH_SHA_1, ID_RI_ECDH_SHA_224, ID_RI_ECDH_SHA_256, ID_RI_ECDH_SHA_384, ID_RI_ECDH_SHA_512, ID_CI, ID_EID_SECURITY, ID_PT, ID_PS, ID_PSA, ID_PSA_ECDH_ECSCHNORR, ID_PSA_ECDH_ECSCHNORR_SHA_256, ID_PSA_ECDH_ECSCHNORR_SHA_384, ID_PSA_ECDH_ECSCHNORR_SHA_512, ID_PASSWORDTYPE, ID_PASSWORDTYPE_MRZ, ID_PASSWORDTYPE_CAN, ID_PASSWORDTYPE_PIN, ID_PASSWORDTYPE_PUK, ID_AUXILIARY_DATA, ID_DATE_OF_BIRTH, ID_DATE_OF_EXPIRY, ID_MUNICIPALITY_ID, ID_PSM_MESSAGE, ID_SECURITY_OBJECT, ID_ROLES, ID_IS, ID_AT, ID_ST, ID_EXTENSIONS, ID_DESCRIPTION, ID_PLAIN_FORMAT, ID_HTML_FORMAT, ID_PFD_FORMAT, ID_SECTOR_RI, ID_SECTOR_PS, ID_EID_TYPE, ID_CARD_EID_TYPE, ID_MOBILE_EID_TYPE, ID_MOBILE_EID_TYPE_SE_CERTIFIED, ID_MOBILE_EID_TYPE_SE_ENDORSED, ID_MOBILE_EID_TYPE_HW_KEYSTORE) class Oid
Definition Oid.h:23
bool operator==(const CommandApdu &pLeft, const CommandApdu &pRight)
Definition CommandApdu.h:105