AusweisApp2
Lade ...
Suche ...
Keine Treffer
SecurityProtocol.h
gehe zur Dokumentation dieser Datei
1
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 public:
48 explicit SecurityProtocol(const Oid& pOid);
49
50 [[nodiscard]] const Oid& getOid() const;
51 [[nodiscard]] ProtocolType getProtocol() const;
52 [[nodiscard]] KeyAgreementType getKeyAgreement() const;
53 [[nodiscard]] MappingType getMapping() const;
54 [[nodiscard]] const EVP_CIPHER* getCipher() const;
55 [[nodiscard]] const char* getCipherString() const;
56 [[nodiscard]] int getKeySize() const;
57 [[nodiscard]] SignatureType getSignature() const;
58 [[nodiscard]] QCryptographicHash::Algorithm getHashAlgorithm() const;
59
60 bool operator==(const SecurityProtocol& pOther) const;
61};
62
63
64inline QDebug operator<<(QDebug pDbg, const SecurityProtocol& pProtocol)
65{
66 QDebugStateSaver saver(pDbg);
67 pDbg.nospace() << QByteArray(pProtocol.getOid());
68 return pDbg.space();
69}
70
71
72} // namespace governikus
#define defineEnumType(enumName,...)
Definition: EnumHelper.h:96
A simple template renderer.
Definition: ActivationContext.h:15
UNDEFINED
Definition: SecurityProtocol.h:22
ECDH AES_128_CBC
Definition: SecurityProtocol.h:24
Oid getOid() const
ECDH DES3_CBC
Definition: SecurityProtocol.h:24
DH
Definition: SecurityProtocol.h:22
ECDH AES_192_CBC
Definition: SecurityProtocol.h:24
QCryptographicHash::Algorithm getHashAlgorithm() const
Definition: CVCertificateBody.cpp:177
SIGNATURE * mSignature
Definition: CVCertificate.h:48
QDebug operator<<(QDebug pDbg, const CommandApdu &pCommandApdu)
Definition: CommandApdu.h:91
bool operator==(const CommandApdu &pLeft, const CommandApdu &pRight)
Definition: CommandApdu.h:102