AusweisApp2/src/card/base/pace/ec/EcdhGenericMapping.h

40 lines
1000 B
C
Raw Normal View History

2017-07-03 09:30:10 +02:00
/*!
* \copyright Copyright (c) 2014 Governikus GmbH & Co. KG
*/
#pragma once
#include "pace/DomainParameterMapping.h"
2017-09-15 10:23:30 +02:00
#include <openssl/ec.h>
2017-07-03 09:30:10 +02:00
#include <QByteArray>
#include <QSharedPointer>
namespace governikus
{
//
// Algorithm according to TR 03110 Part 3 chapter A.3.4.1.Generic Mapping
//
class EcdhGenericMapping
: public DomainParameterMapping<EC_GROUP>
{
private:
2017-07-03 09:33:28 +02:00
const QSharedPointer<EC_GROUP> mCurve;
2017-07-03 09:30:10 +02:00
QSharedPointer<EC_KEY> mTerminalKey;
2017-07-03 09:33:28 +02:00
QSharedPointer<EC_POINT> createNewGenerator(const QSharedPointer<const EC_POINT>& pCardPubKey, const QSharedPointer<const BIGNUM>& pS);
2017-07-03 09:30:10 +02:00
2017-07-03 09:33:28 +02:00
void setGenerator(const QSharedPointer<const EC_POINT>& pNewGenerator);
2017-07-03 09:30:10 +02:00
public:
2017-07-03 09:33:28 +02:00
EcdhGenericMapping(const QSharedPointer<EC_GROUP>& pCurve);
2017-07-03 09:30:10 +02:00
virtual ~EcdhGenericMapping();
QByteArray generateTerminalMappingData() override;
QSharedPointer<EC_GROUP> generateEphemeralDomainParameters(const QByteArray& pCardMappingData, const QByteArray& pNonce) override;
};
} /* namespace governikus */