168 lines
5.1 KiB
C++
168 lines
5.1 KiB
C++
/*!
|
|
* \brief Tests for GeneralAuthenticate response APDUs
|
|
*
|
|
* \copyright Copyright (c) 2015-2018 Governikus GmbH & Co. KG, Germany
|
|
*/
|
|
|
|
#include <QtCore/QtCore>
|
|
#include <QtTest/QtTest>
|
|
|
|
#include "GeneralAuthenticateResponse.h"
|
|
|
|
|
|
using namespace governikus;
|
|
|
|
|
|
class test_GeneralAuthenticateResponse
|
|
: public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
private Q_SLOTS:
|
|
void parseGAEncryptedNonceResponse()
|
|
{
|
|
QByteArray bytes = QByteArray::fromHex("7c1280105391ded7867c2d7df7f871ed6913c07d9000");
|
|
|
|
GAEncryptedNonceResponse response;
|
|
response.setBuffer(bytes);
|
|
|
|
QCOMPARE(response.getEncryptedNonce(), QByteArray::fromHex("5391ded7867c2d7df7f871ed6913c07d"));
|
|
}
|
|
|
|
|
|
void parseGAEncryptedNonceResponse_invalidData()
|
|
{
|
|
QByteArray bytes = QByteArray::fromHex("7c1281105391ded7867c2d7df7f871ed6913c07d9000");
|
|
|
|
GAEncryptedNonceResponse response;
|
|
response.setBuffer(bytes);
|
|
|
|
QCOMPARE(response.getEncryptedNonce(), QByteArray());
|
|
}
|
|
|
|
|
|
void parseGAMapNonceResponse()
|
|
{
|
|
QByteArray bytes = QByteArray::fromHex("7c438241042a8199d469fde8f98e22bf8bb5a72804b5293bb54a8afa4d84e4b63217d163b61d78dc6453408bde19a86254ee3b0f03871964b71f1b57f77037ecdbedbe79b09000");
|
|
|
|
GAMapNonceResponse response;
|
|
response.setBuffer(bytes);
|
|
|
|
QCOMPARE(response.getMappingData(), QByteArray::fromHex("042a8199d469fde8f98e22bf8bb5a72804b5293bb54a8afa4d84e4b63217d163b61d78dc6453 408bde19a86254ee3b0f03871964b71f1b57f77037ecdbedbe79b0"));
|
|
}
|
|
|
|
|
|
void parseGAMapNonceResponse_invalidData()
|
|
{
|
|
QByteArray bytes = QByteArray::fromHex("7c438141042a8199d469fde8f98e22bf8bb5a72804b5293bb54a8afa4d84e4b63217d163b61d78dc6453408bde19a86254ee3b0f03871964b71f1b57f77037ecdbedbe79b09000");
|
|
|
|
GAMapNonceResponse response;
|
|
response.setBuffer(bytes);
|
|
|
|
QCOMPARE(response.getMappingData(), QByteArray());
|
|
}
|
|
|
|
|
|
void parseGAPerformKeyAgreementResponse()
|
|
{
|
|
QByteArray bytes = QByteArray::fromHex("7c43844104a3be2ed0fccb4bf96df00be39a9c3e6b67d3a1118c95c195d0389fa14956c383a322c34f1b63a7bdb41f98b644aa9e15f823a2d726ef6ae8df3c10ac4e7298cc9000");
|
|
|
|
GAPerformKeyAgreementResponse response;
|
|
response.setBuffer(bytes);
|
|
|
|
QCOMPARE(response.getEphemeralPublicKey(), QByteArray::fromHex("04a3be2ed0fccb4bf96df00be39a9c3e6b67d3a1118c95c195d0389fa14956c383a322c34f1b63a7bdb41f98b644aa9e15f823a2d726ef6ae8df3c10ac4e7298cc"));
|
|
}
|
|
|
|
|
|
void parseGAPerformKeyAgreementResponse_invalid()
|
|
{
|
|
QByteArray bytes = QByteArray::fromHex("7c43814104a3be2ed0fccb4bf96df00be39a9c3e6b67d3a1118c95c195d0389fa14956c383a322c34f1b63a7bdb41f98b644aa9e15f823a2d726ef6ae8df3c10ac4e7298cc9000");
|
|
|
|
GAPerformKeyAgreementResponse response;
|
|
response.setBuffer(bytes);
|
|
|
|
QCOMPARE(response.getEphemeralPublicKey(), QByteArray());
|
|
}
|
|
|
|
|
|
void parseGAMutualAuthenticationResponse_withoutCARs()
|
|
{
|
|
QByteArray bytes = QByteArray::fromHex("7c0a8608afcd013365384ba39000");
|
|
|
|
GAMutualAuthenticationResponse response;
|
|
response.setBuffer(bytes);
|
|
|
|
QCOMPARE(response.getAuthenticationToken(), QByteArray::fromHex("afcd013365384ba3"));
|
|
QCOMPARE(response.getCarCurr(), QByteArray());
|
|
QCOMPARE(response.getCarPrev(), QByteArray());
|
|
}
|
|
|
|
|
|
void testGAMutualAuthenticationResponse_oneCAR()
|
|
{
|
|
// this is the response from a new card that did not see any link certificates
|
|
QByteArray bytes = QByteArray::fromHex("7c1a860871204ff538eec464870e44454356434165494430303130339000");
|
|
|
|
GAMutualAuthenticationResponse response;
|
|
response.setBuffer(bytes);
|
|
|
|
QCOMPARE(response.getCarCurr(), QByteArray("DECVCAeID00103"));
|
|
QCOMPARE(response.getCarPrev(), QByteArray());
|
|
}
|
|
|
|
|
|
void testGAMutualAuthenticationResponse_twoCARs()
|
|
{
|
|
// this is the response from a card that already saw link certificates
|
|
QByteArray bytes = QByteArray::fromHex("7c2a86086fa6266f2ef1f2d9870e4445544553546549443030303034880e44455445535465494430303030329000");
|
|
|
|
GAMutualAuthenticationResponse response;
|
|
response.setBuffer(bytes);
|
|
|
|
QCOMPARE(response.getCarCurr(), QByteArray("DETESTeID00004"));
|
|
QCOMPARE(response.getCarPrev(), QByteArray("DETESTeID00002"));
|
|
}
|
|
|
|
|
|
void testGAMutualAuthenticationResponse_invalid()
|
|
{
|
|
// this is the response from a new card that did not see any link certificates
|
|
QByteArray bytes = QByteArray::fromHex("7c1a810871204ff538eec464870e44454356434165494430303130339000");
|
|
|
|
GAMutualAuthenticationResponse response;
|
|
response.setBuffer(bytes);
|
|
|
|
QCOMPARE(response.getCarCurr(), QByteArray());
|
|
QCOMPARE(response.getCarPrev(), QByteArray());
|
|
}
|
|
|
|
|
|
void testGAChipAuthenticationResponse()
|
|
{
|
|
QByteArray bytes = QByteArray::fromHex("7c1481085b5b32c5b15d012c8208aaa14cfba15994d39000");
|
|
|
|
GAChipAuthenticationResponse response;
|
|
response.setBuffer(bytes);
|
|
|
|
QCOMPARE(response.getNonce(), QByteArray::fromHex("5b5b32c5b15d012c"));
|
|
QCOMPARE(response.getAuthenticationToken(), QByteArray::fromHex("aaa14cfba15994d3"));
|
|
}
|
|
|
|
|
|
void testGAChipAuthenticationResponse_invalid()
|
|
{
|
|
QByteArray bytes = QByteArray::fromHex("7c148208aaa14cfba15994d39000");
|
|
|
|
GAChipAuthenticationResponse response;
|
|
response.setBuffer(bytes);
|
|
|
|
QCOMPARE(response.getAuthenticationToken(), QByteArray());
|
|
QCOMPARE(response.getNonce(), QByteArray());
|
|
}
|
|
|
|
|
|
};
|
|
|
|
QTEST_GUILESS_MAIN(test_GeneralAuthenticateResponse)
|
|
#include "test_GeneralAuthenticateResponse.moc"
|