12 #include <openssl/ec.h>
14 #include <QSharedPointer>
25 friend class ::test_EcdhKeyAgreement;
27 QSharedPointer<DomainParameterMapping<EC_GROUP>> mMapping;
28 QSharedPointer<EC_GROUP> mEphemeralCurve;
29 QSharedPointer<EC_POINT> mTerminalPublicKey;
30 QSharedPointer<const EC_POINT> mCardPublicKey;
32 QPair<CardReturnCode, QSharedPointer<EC_GROUP>> determineEphemeralDomainParameters(
const QByteArray& pNonce);
33 QPair<CardReturnCode, QSharedPointer<EC_POINT>> performKeyExchange(
const QSharedPointer<const EC_GROUP>& pCurve);
35 static QByteArray encodeUncompressedPublicKey(
const QSharedPointer<const PaceInfo>& pPaceInfo,
const QSharedPointer<const EC_GROUP>& pCurve,
const QSharedPointer<const EC_POINT>& pPoint);
36 static QByteArray encodeCompressedPublicKey(
const QSharedPointer<const EC_GROUP>& pCurve,
const QSharedPointer<const EC_POINT>& pPoint);
39 QByteArray getUncompressedTerminalPublicKey()
override;
40 QByteArray getUncompressedCardPublicKey()
override;
41 QByteArray getCompressedCardPublicKey()
override;
43 EcdhKeyAgreement(
const QSharedPointer<const PaceInfo>& pPaceInfo,
const QSharedPointer<CardConnectionWorker>& pCardConnectionWorker);
46 static QSharedPointer<EcdhKeyAgreement>
create(
const QSharedPointer<const PaceInfo>& pPaceInfo,
47 const QSharedPointer<CardConnectionWorker>& pCardConnectionWorker);