AusweisApp2
SecureMessaging.h
gehe zur Dokumentation dieser Datei
1 
7 #pragma once
8 
9 #include "SecurityProtocol.h"
10 #include "apdu/CommandApdu.h"
11 #include "apdu/ResponseApdu.h"
12 #include "asn1/ASN1TemplateUtil.h"
13 #include "pace/CipherMac.h"
14 #include "pace/SymmetricCipher.h"
15 
16 #include <QByteArray>
17 
18 
19 namespace governikus
20 {
21 
22 class SecureMessaging final
23 {
24  private:
25  SymmetricCipher mCipher;
26  CipherMac mCipherMac;
27  quint32 mSendSequenceCounter;
28 
29  [[nodiscard]] QByteArray padToCipherBlockSize(const QByteArray& pData) const;
30  [[nodiscard]] QByteArray unpadFromCipherBlockSize(const QByteArray& pData) const;
31  [[nodiscard]] QByteArray createSecuredHeader(const CommandApdu& pCommandApdu) const;
32  QByteArray createMac(const QByteArray& pSecuredHeader, const QByteArray& pFormattedEncryptedData, const QByteArray& pSecuredLe);
33  [[nodiscard]] int createNewLe(const QByteArray& pSecuredData, int pOldLe) const;
34  [[nodiscard]] QByteArray getSendSequenceCounter() const;
35  QByteArray getEncryptedIv();
36 
37  [[nodiscard]] QByteArray createSecuredLe(int pLe) const;
38 
39  public:
40  SecureMessaging(const SecurityProtocol& pSecurityProtocol, const QByteArray& pEncKey, const QByteArray& pMacKey);
41  ~SecureMessaging() = default;
42 
46  [[nodiscard]] bool isInitialized() const;
47 
48  CommandApdu encrypt(const CommandApdu& pCommandApdu);
49 
50  CommandApdu decrypt(const CommandApdu& pEncryptedCommandApdu);
51 
52  ResponseApdu encrypt(const ResponseApdu& pResponseApdu);
53 
54  ResponseApdu decrypt(const ResponseApdu& pEncryptedResponseApdu);
55 };
56 
57 } // namespace governikus
Definition: CipherMac.h:18
Definition: SecureMessaging.h:23
SecureMessaging(const SecurityProtocol &pSecurityProtocol, const QByteArray &pEncKey, const QByteArray &pMacKey)
Definition: SecureMessaging.cpp:25
CommandApdu encrypt(const CommandApdu &pCommandApdu)
Definition: SecureMessaging.cpp:77
CommandApdu decrypt(const CommandApdu &pEncryptedCommandApdu)
Definition: SecureMessaging.cpp:123
bool isInitialized() const
Returns true, if initialization succeeded, i.e.
Definition: SecureMessaging.cpp:35
Definition: SymmetricCipher.h:18
Implementation of GeneralAuthenticate response APDUs.
Definition: CommandApdu.h:16