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