@@ -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 std::map<JsonWebSignatureAlgorithm, QCryptographicHash::Algorithm>
6263 SIGNATURE_ALGO_TO_HASH {
@@ -85,7 +86,7 @@ QByteArray createSignature(const QString& origin, const QString& challengeNonce,
8586 const pcsc_cpp::byte_vector hashToBeSigned {hashToBeSignedQBytearray.cbegin (),
8687 hashToBeSignedQBytearray.cend ()};
8788
88- const auto signature = eid.signWithAuthKey (pin, hashToBeSigned);
89+ const auto signature = eid.signWithAuthKey ({cert. cbegin (), cert. cend ()}, pin, hashToBeSigned);
8990
9091 return QByteArray::fromRawData (reinterpret_cast <const char *>(signature.data ()),
9192 int (signature.size ()))
@@ -125,8 +126,8 @@ QVariantMap Authenticate::onConfirm(WebEidUI* window,
125126 auto pin = getPin (cardCertAndPin.cardInfo ->eid ().smartcard (), window);
126127
127128 try {
128- const auto signature =
129- createSignature (origin. url (), challengeNonce, cardCertAndPin.cardInfo ->eid (), pin);
129+ const auto signature = createSignature (origin. url (), cardCertAndPin. certificateBytesInDer ,
130+ challengeNonce, cardCertAndPin.cardInfo ->eid (), pin);
130131
131132 // Erase the PIN memory.
132133 // TODO: Use a scope guard. Verify that the buffers are actually zeroed and no copies
0 commit comments