AusweisApp2
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 
18 namespace governikus
19 {
20 
21 defineEnumType(ProtocolType, UNDEFINED, TA, CA, PACE, RI)
22 defineEnumType(KeyAgreementType, UNDEFINED, DH, ECDH)
23 defineEnumType(MappingType, UNDEFINED, GM, IM, CAM)
25 defineEnumType(SignatureType, UNDEFINED, RSA, ECDSA)
26 
27 class 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 
64 inline 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
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
defineEnumType(ActivationType, UNKNOWN, SHOWUI, STATUS, TCTOKENURL) defineEnumType(StatusFormat
Format types for status responses.
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