Open shawtaylor opened 7 years ago
Wenn ich die Frage richtig verstehe - das was sie signieren wollen. Also wahrscheinlich header.payload, siehe Detailfragen 3.1.
Klappt leider nicht. Vielleicht hat einer ja eine Idee. Signatur.zip
Habe mal meinen Quellcode (mit Testdaten) beigelegt.
Starten mit..... \NurSignatur\SampleClient\libReadCard.sln
Also wir haben von Globaltrust ein Dokument mit Beispielcode in unterschiedlichen Programmiersprachen bekommen, wie man Daten mit der Smartcard signiert. Am Besten du fragst mal bei deiner Certificate Authority (A-Trust, Globaltrust, den dritten hab ich vergessen) nach.
Und was genau man signieren muss steht in dem Dokument mit den Detailfragen. Auch der Mustercode war hier sehr hilfreich!
Noch ein Tipp: Die ECDSA-Signatur muss nicht mittels DER encodiert werden, das benötigt nur der java verifier, sondern mit base64 (je nachdem ob fürs jws mit urlSafe oder für den maschinenlesbaren code/qr-code nicht url-safe)
EDIT: Ich sehe grad, das ist ja gar kein java, sondern c#-code...
Das Signaturverfahren heisst SHA256 ECDSA. Die Signaturkarte (also zumindestens die von A-trust) macht aber nur den ECDSA Teil, den SHA256 über JWSHeader.JWSPayload mußt Du vorher selber machen.
Hallo,
was muss ich den an textString übergeben, damit eine richtige Signatur erstellt wird? Verstehe ich nicht.
string textString = "Das ist ein Beispieltext der anstelle eines Registrierkasseneintrags signiert wird... "; byte[] text = Encoding.Unicode.GetBytes(textString); SHA256Managed crypt = new SHA256Managed(); byte[] hash = crypt.ComputeHash(text, 0, text.Length); crypt.Dispose();
// String pin = "123456"; string pin = CardINI.ReadString("Card", "PIN", "123456");