@@ -55,8 +55,9 @@ QVariantMap createAuthenticationToken(const QString& signatureAlgorithm,
5555 };
5656}
5757
58- QByteArray createSignature (const QString& origin, const QString& challengeNonce,
59- const ElectronicID& eid, const pcsc_cpp::byte_vector& pin)
58+ QByteArray createSignature (const QString& origin, const QByteArray& cert,
59+ const QString& challengeNonce, const ElectronicID& eid,
60+ const pcsc_cpp::byte_vector& pin)
6061{
6162 static const auto SIGNATURE_ALGO_TO_HASH =
6263 std::map<JsonWebSignatureAlgorithm, QCryptographicHash::Algorithm> {
@@ -83,7 +84,7 @@ QByteArray createSignature(const QString& origin, const QString& challengeNonce,
8384 const auto hashToBeSigned =
8485 pcsc_cpp::byte_vector {hashToBeSignedQBytearray.cbegin (), hashToBeSignedQBytearray.cend ()};
8586
86- const auto signature = eid.signWithAuthKey (pin, hashToBeSigned);
87+ const auto signature = eid.signWithAuthKey ({cert. cbegin (), cert. cend ()}, pin, hashToBeSigned);
8788
8889 return QByteArray::fromRawData (reinterpret_cast <const char *>(signature.data ()),
8990 int (signature.size ()))
@@ -122,8 +123,8 @@ QVariantMap Authenticate::onConfirm(WebEidUI* window,
122123 auto pin = getPin (cardCertAndPin.cardInfo ->eid ().smartcard (), window);
123124
124125 try {
125- const auto signature =
126- createSignature (origin. url (), challengeNonce, cardCertAndPin.cardInfo ->eid (), pin);
126+ const auto signature = createSignature (origin. url (), cardCertAndPin. certificateBytesInDer ,
127+ challengeNonce, cardCertAndPin.cardInfo ->eid (), pin);
127128
128129 // Erase the PIN memory.
129130 // TODO: Use a scope guard. Verify that the buffers are actually zeroed and no copies
0 commit comments