AusweisApp2
Lade ...
Suche ...
Keine Treffer
SecureMessaging.h
gehe zur Dokumentation dieser Datei
1
7#pragma once
8
10#include "CommandApdu.h"
11#include "pace/CipherMac.h"
13#include "ResponseApdu.h"
14
15#include <QByteArray>
16
17
18namespace governikus
19{
20
26 : public ASN1_OCTET_STRING {};
28
29
30class SecureMessaging final
31{
32 private:
33 SymmetricCipher mCipher;
34 CipherMac mCipherMac;
35 quint32 mSendSequenceCounter;
36
37 [[nodiscard]] QByteArray padToCipherBlockSize(const QByteArray& pData) const;
38 [[nodiscard]] QByteArray unpadFromCipherBlockSize(const QByteArray& pData) const;
39 [[nodiscard]] QByteArray createSecuredHeader(const CommandApdu& pCommandApdu) const;
40 QByteArray createMac(const QByteArray& pSecuredHeader, const QByteArray& pFormattedEncryptedData, const QByteArray& pSecuredLe);
41 [[nodiscard]] int createNewLe(const QByteArray& pSecuredData, int pOldLe) const;
42 [[nodiscard]] QByteArray getSendSequenceCounter() const;
43 QByteArray getEncryptedIv();
44
45 [[nodiscard]] QByteArray createSecuredLe(int pLe) const;
46
47 public:
48 SecureMessaging(const QByteArray& pPaceAlgorithm, const QByteArray& pEncKey, const QByteArray& pMacKey);
49 ~SecureMessaging() = default;
50
54 [[nodiscard]] bool isInitialized() const;
55
56 CommandApdu encrypt(const CommandApdu& pCommandApdu);
57
63 ResponseApdu decrypt(const ResponseApdu& pEncryptedResponseApdu);
64};
65
66} // namespace governikus
#define DECLARE_ASN1_OBJECT(name)
Definition: ASN1TemplateUtil.h:164
Definition: CipherMac.h:16
Definition: CommandApdu.h:16
Definition: ResponseApdu.h:84
Definition: SecureMessaging.h:31
Definition: SymmetricCipher.h:16
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:15
Message part of the Secure Messaging command APDU containing the expected length.
Definition: SecureMessaging.h:26