BMF-RKSV-Technik / at-registrierkassen-mustercode

111 stars 39 forks source link

Signaturen mit 2. SmartCard ungültig #660

Closed ChristianSpath closed 6 years ago

ChristianSpath commented 6 years ago

Hallo zusammen!

Ich bin am Testsystem folgendermaßen vorgegangen: 1) SmartCard1 registriert => lt. FinanzOnline OK 2) Kasse registriert => lt. FinanzOnline OK 3) Startbeleg erstellt => lt. FinanzOnline OK 4) Beleg erstellt => lt. FinanzOnline OK 5) SmartCard2 registriert => lt. FinanzOnline OK 6) Beleg erstellt und mit SmartCard2 signiert => lt. FinanzOnline NICHT OK 7) Beleg erstellt und mit SmartCard1 signiert => lt. FinanzOnline OK

Es handelt sich um Gemalto Sticks von ATRUST.

Kann sich das jemand erklären?

Vielen Dank und liebe Grüße

ErichFreitag commented 6 years ago

Was ist die Fehlermeldung bei 6.?

ChristianSpath commented 6 years ago

Lieber Erich!

Code 43: Der übermittelte Beleg ist fehlerhaft. Hier der gesamte Response:

{ "fastnr": null, "paket_nr": "779826191", "art_uebermittlungSpecified": false, "ts_erstellung": "2018-03-17T13:54:36.4137111+01:00", "info": null, "result": [ { "satznr": "779826191", "kundeninfo": null, "rkdbMessage": [ { "rc": "43", "msg": "Der übermittelte Beleg ist fehlerhaft." } ], "verificationResultList": [ { "verificationId": "VERIFICATION_FROM_CASHBOX", "version": "1", "verificationName": "Prüfergebnis - Kasse", "verificationTextualDescription": "Bei der Belegprüfung wird untersucht, ob die Vorgaben der RKSV in Bezug auf den maschinenlesbaren Code am Beleg und auf die meldepflichtigen Metadaten der Sicherheitseinrichtung befolgt werden. Im Fehlerfall sind die genauen Fehlerinformationen nachfolgend angeführt.", "verificationState": 1, "verificationResultDetailedMessage": "Der vorliegende Beleg weist Fehler im maschinenlesbaren Code auf. Die Fehlerursachen sind nachfolgend angeführt:", "input": { "Any": [ { "RECEIPT": { "@xmlns": "https://finanzonline.bmf.gv.at/rkdb", "#text": "_R1-AT1_Kasse1_A2018/3_2018-03-17T09:45:36_6,00_0,00_9,00_2,25_0,00_IUL4R5nQem8=_44301783_ensYsW9bJ1E=_iQJRmfE07ceVYeZx6UJz4WypE1fdamCfVjI7D0vWq0s8Zu4tmPnEekANjG9ugJNtTpZB/fvo/e/vTnvEXqKdAA==" } } ] }, "output": null, "verificationTimestamp": "2018-03-17T13:54:35.022+01:00", "verificationResultList": [ { "verificationId": "RECEIPT_FULL", "version": "1", "verificationName": "Detailprüfung des maschinenlesbaren Codes", "verificationTextualDescription": "Dieses Modul und die dazugehörigen Submodule überprüfen die Gültigkeit des Belegs. Dabei werden sowohl Formatprüfungen, kryptographische Prüfungen (verschlüsselter Umsatzzähler, Signatur) als auch Prüfungen im Zusammenhang mit dem Status der Kasse bzw. der Signatur-/Siegelerstellungseinheit durchgeführt.", "verificationState": 1, "verificationResultDetailedMessage": null, "input": null, "output": null, "verificationTimestamp": "2018-03-17T13:54:35.131+01:00", "verificationResultList": [ { "verificationId": "CRYPTO", "version": "1", "verificationName": "Kryptographische Prüfungen", "verificationTextualDescription": "In diesem Modul und den dazugehörigen Submodulen werden die kryptographische Validität des Umsatzzählers und des Signaturwerts überprüft. Für den Umsatzzähler kann eine detaillierte Prüfung nur beim Startbeleg durchgeführt werden, da nur in diesem Fall der entschlüsselte Wert bekannt ist (Umsatzzähler = 0).", "verificationState": 1, "verificationResultDetailedMessage": null, "input": null, "output": null, "verificationTimestamp": "2018-03-17T13:54:35.133+01:00", "verificationResultList": [ { "verificationId": "CRYPTO_SIGNATURE", "version": "1", "verificationName": "Kryptographie: Überprüfung der kryptographischen Gültigkeit der Signatur", "verificationTextualDescription": "In diesem Modul wird die kryptographische Gültigkeit der Signatur mit Hilfe des öffentlichen Schlüssels überprüft.", "verificationState": 1, "verificationResultDetailedMessage": "Bei der Überprüfung des maschinenlesbaren Codes wurde ein Fehler beim Abgleich des Signaturwertes mit dem öffentlichen Schlüssel festgestellt. Bitte überprüfen Sie, ob die verwendete Signatur- bzw. Siegelerstellungseinheit korrekt in FinanzOnline registriert wurde.", "input": null, "output": null, "verificationTimestamp": "2018-03-17T13:54:35.133+01:00", "verificationResultList": null } ] } ] } ] } ], "abfrage_ergebnis": null } ] }

Danke für deine Hilfe

ErichFreitag commented 6 years ago

Na ja, die Fehlermeldung scheint eindeutig zu sein. Die Signatur wird als nicht gültig erkannt. Also bleibt an Möglichkeiten:

AxelKutschera commented 6 years ago

Hallo Erich,

  1. und 3. geht ja nicht, da 1. es ausschließt. (?) LG
ChristianSpath commented 6 years ago

Hallo zusammen!

Danke für eure Hilfe. Es sind definitiv beide Zertifikate korrekt. Ich kann das ganze nämlich umdrehen. D.H. zuerst SmartCard2 registrieren und Startbeleg erstellen, und dann halt mit SmartCard1 weiterarbeiten. In dem Fall bekomme ich die Fehlermeldung hat bei SmartCard1. Jene welche zuerst registriert wird funktioniert einwandfrei.

Alle Belege, die mit der jeweils zuerst angemeldeten SmartCard signiert werden, funkionerien. Auch wenn ich dazwischen mit der danach angemeldeten SmartCard arbeite.

Schon seltsam das Ganze.... Aber es kann ja nur an mir liegen. Ich bin sicher nicht der erste, der zwei SmartCards verwendet.

Danke

ErichFreitag commented 6 years ago

@AxelKutschera - schon richtig, Axel - das war mehr theoretisch-summarisch gemeint.

@ChristianSpath - auch OK. Das schließt aber einen möglichen Fehler mit der Verwendung der falschen Seriennummer/des falschen Zertifikats nicht zwangsläufig aus. Also beispielsweise: es wird die erst-verwendete Seriennummer gespeichert, das zweite Zertifikat zum signieren verwendet und dabei die Seriennummer des ersten Zertifikats verwendet (oder eben umgekehrt - es wird das gespeicherte Erst-Zertifikat verwendet und die zweite Seriennummer).

Was sagt denn die DEP- und Beleg-Prüfung mit dem A-SIT-Tool?

ChristianSpath commented 6 years ago

Ja, daran hab ich auch schon gedacht. Da bin ich gerade am Eruieren. Das A-SIT-Tool sagt in 0002_cashbox_full.json im Abschnitt "CRYPTO": "Die kryptographische Gültigkeit der Signatur ist nicht gegeben. Es scheint aber nicht der definierte Fall der ausgefallenen Sicherheitseinrichtung zuzutreffen."

ErichFreitag commented 6 years ago

Gut - damit sind sich Prüftool und Finanz-Online mal einig. Damit sollte sich der Fehler in obigem Sinne gut einkreisen lassen.

ChristianSpath commented 6 years ago

Hallo zusammen!

Vielen Dank an alle, die bei der Lösung geholfen haben. Erich's Vermutung war korrekt. Der gesamte RKSV-Workflow besteht ja aus einigen Klassen. Die zum Erstellen des Maschinencoderepräsentation hat ganz stur die erste Seriennummer verwendet.

Danke nochmal

ErichFreitag commented 6 years ago

"was irgendwie zu erwarten war" - freut mich - bitte gerne!