BMF-RKSV-Technik / at-registrierkassen-mustercode

111 stars 39 forks source link

kein gültiger Startbeleg #671

Closed BirgitHub closed 6 years ago

BirgitHub commented 6 years ago

Guten Tag zusammen, aktuell versuche ich einen Startbeleg zu validieren, welcher über die A-Trust Testschnitstelle (Rest-API) signiert wurde. Heißt das Zertifikat usw. frage ich direkt von A-Trust ab um es in die "cryptographicMaterialContainer.json" sowie die "dep-export.json" zu schreiben. Als Testcase und base64AesKey verwende ich die gleichen Daten wie die "TESTSUITE_TEST_SENARIO_1.json" aus diesem git um die Werte am ende besser verglichen zu können. Hierbei Fällt auf, dass der erkannte Startbleg bei mir und im Mustercode sich nur bei der Seriennummer und der Signierung unterscheiden (So wie es nach meinem Verständnis sein sollte). Dennoch wird der Umsatzzähler und der Beleg Typ nicht korrekt erkannt. Als Rückmeldung erhalte ich "Am Beginn des exportierten RKSV-DEP befindet sich kein gültiger Startbeleg."

Über sehe ich etwas?

Im Folgenden die Verwendeten Dateien:

cryptographicMaterialContainer.json:

{
    "base64AESKey": "WQRtiiya3hYh/Uz44Bv3x8ETl1nrH6nCdErn69g5/lU=",
    "certificateOrPublicKeyMap": {
        "2159B9F6": {
            "id": "2159B9F6",
            "signatureDeviceType": "CERTIFICATE",
            "signatureCertificateOrPublicKey": "MIIEvTCCA6WgAwIBAgIEIVm59jANBgkqhkiG9w0BAQsFADCBoTELMAkGA1UEBgwCQVQxSDBGBgNVBAoMP0EtVHJ1c3QgR2VzLiBmLiBTaWNoZXJoZWl0c3N5c3RlbWUgaW0gZWxla3RyLiBEYXRlbnZlcmtlaHIgR21iSDEjMCEGA1UECwwaYS1zaWduLVByZW1pdW0tVGVzdC1TaWctMDIxIzAhBgNVBAMMGmEtc2lnbi1QcmVtaXVtLVRlc3QtU2lnLTAyMB4XDTE2MDMxMDE0NDczOVoXDTIwMDUxMDE0NDczOVowYzELMAkGA1UEBgwCQVQxGTAXBgNVBAMMEFVJRDogQVRVMTIzNDU2NzgxFDASBgNVBAQMC0FUVTEyMzQ1Njc4MQwwCgYDVQQqDANVSUQxFTATBgNVBAUMDDUyOTkxMjU1MjI4NjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDmCCjepLRPT+MvR4CHqycC25UNfFaFcyqCL8lwEVsUVk10bmQn290u20foEaa075geQvJokWbTwTQqLgORYVVejggIDMIIB/zCBhAYIKwYBBQUHAQEEeDB2MEYGCCsGAQUFBzAChjpodHRwOi8vd3d3LmEtdHJ1c3QuYXQvY2VydHMvYS1zaWduLVByZW1pdW0tVGVzdC1TaWctMDIuY3J0MCwGCCsGAQUFBzABhiBodHRwOi8vb2NzcC10ZXN0LmEtdHJ1c3QuYXQvb2NzcDAOBgNVHQ8BAf8EBAMCBsAwJwYIKwYBBQUHAQMBAf8EGDAWMAgGBgQAjkYBATAKBggrBgEFBQcLATCBrgYDVR0fBIGmMIGjMIGgoIGdoIGahoGXbGRhcDovL2xkYXAtdGVzdC5hLXRydXN0LmF0L291PWEtc2lnbi1QcmVtaXVtLVRlc3QtU2lnLTAyIChTSEEtMjU2KSxvPUEtVHJ1c3QsYz1BVD9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0P2Jhc2U/b2JqZWN0Y2xhc3M9ZWlkQ2VydGlmaWNhdGlvbkF1dGhvcml0eTAJBgNVHRMEAjAAMFkGA1UdIARSMFAwCAYGBACLMAEBMEQGBiooABEBCzA6MDgGCCsGAQUFBwIBFixodHRwOi8vd3d3LmEtdHJ1c3QuYXQvZG9jcy9jcC9hLXNpZ24tUHJlbWl1bTATBgNVHSMEDDAKgAhGBp+OQY4VvTARBgNVHQ4ECgQITEStzGF8AcEwDQYJKoZIhvcNAQELBQADggEBADKLJSnaG7sMsX0USrzLHRXuWPKCrOXbLfXmnmlAN2+2Pzd/wAXXL1G2dpRpyspoC4QxLVQrUQE+WQae94lXdI7yFwVk8Y5bR+K/bY/EfNSPiwSyxXtYOnMrH+s9szH5nCG4aRGxys5hrbxfyS8GHXqv8V6cUlddCYkwXL4XXBpSxh9UofVOA1+mtKEtESg9ifcayV6TwBOHmzg7GZe0IY32VIpjaJQA8LQU1YDARx+yfuxtc4KBk3o5ZaVmZ4xyX/elUTLQX8aMnT7sIbhA3+FFvaD70iYp+9kZL9LO9bzfS/yv0xmPjFLVQ817DwTHM1ZFGk5d6WRGBIm7fjq8QuM="
        }
    }
}
dep-export.json:
{
  "verificationId" : "RKSV_DEP_EXPORT",
  "version" : 1,
  "verificationName" : "Zusammenfassung der Ergebnisse der RKSV-DEP-Export Prüfungen pro Beleg (Datei \"i_DEP.json\")",
  "verificationTextualDescription" : "Es wird die Richtigkeit des exportierten RKSV-DEP pro Beleg überprüft: Abfolge der Belege, Entwicklung des verschlüsselten Umsatzzählers, Verkettung der Belege, chronologische Reihenfolge, nur eine Kasse pro RKSV-DEP-Export, nur ein Systemtyp pro RKSV-DEP-Export. Es handelt sich um ein Hilfsmodul das die Ergebnisse dieser Prüfungen pro Beleg zusammenfasst (z.B. \"0001_dep.json\").",
  "verificationState" : "FAIL",
  "verificationResultDetailedMessage" : "Am Beginn des exportierten RKSV-DEP befindet sich kein gültiger Startbeleg.",
  "input" : {
    "AUTH_LEVEL" : "PRUEFTOOL_DEP",
    "TURNOVER_SUM" : "NULL",
    "SYSTEM_TYPE_INITIAL" : "OPEN",
    "TIMEOFRECEIPT" : "2016-03-11T03:57:08.000",
    "RECEIPT_PREV" : "NULL",
    "RECEIPT_SIGNED" : "NULL",
    "DECRYPTED_TURNOVER_VALUE" : "NULL",
    "CASHBOX_ID_INITIAL" : "CASHBOX-DEMO-1",
    "SIGNED_PENULT" : "NULL",
    "SIGNED_PREV" : "NULL",
    "STATE_SIGDEVICE_AUSFALL_MARKER" : "NULL",
    "RECEIPT" : "_R1-AT100_CASHBOX-DEMO-1_CASHBOX-DEMO-1-Receipt-ID-1_2016-03-11T03:57:08_0,00_0,00_0,00_0,00_0,00_4r1iIdZG_559528438_cg8hNU5ihto=_z1aOSpkPZDP2uAtiOaA2OPbehpqWQHxyuX5bgn37rb5DpLX6JqAWiJjc7EnfS79673scaR3XE4goMELJJfKQog==",
    "KNOWN_RECEIPT_IDS" : "NULL",
    "RK_SUITE_ID" : "NULL",
    "SYSTEM_TYPE" : "OPEN",
    "TYPE_RECEIPT" : "NULL",
    "STATE_SIGDEVICE_AUSFALL_REPORTED" : "NULL",
    "CASHBOX_ID" : "CASHBOX-DEMO-1",
    "TYPE_RECEIPT_PREV" : "NULL",
    "STATE_SIGDEVICE_TIMEOFRECEIPT" : "NICHT_REGISTRIERT"
  },
  "output" : {
    "SOFTFAIL" : "false"
  },
  "verificationTimestamp" : "2018-10-24T11:15:46.524+02:00",
  "verificationResultList" : [ {
    "verificationId" : "DEP_ONLY_ONE_CASHBOX_ID",
    "version" : 1,
    "verificationName" : "Eine Kasse pro RKSV-DEP Export",
    "verificationTextualDescription" : "In diesem Modul wird überprüft, ob die Entwicklung des verschlüsselten Umsatzzählers mit den Belegbeträgen übereinstimmt.",
    "verificationState" : "PASS",
    "input" : {
      "CASHBOX_ID_INITIAL" : "CASHBOX-DEMO-1",
      "CASHBOX_ID" : "CASHBOX-DEMO-1"
    },
    "verificationTimestamp" : "2018-10-24T11:15:46.525+02:00"
  }, {
    "verificationId" : "DEP_ONLY_ONE_SYTEM_TYPE",
    "version" : 1,
    "verificationName" : "Vermischung der Systeme",
    "verificationTextualDescription" : "In diesem Modul wird überprüft ob Signatureinrichtungen aus dem geschlossenen Gesamtsystem (AT0) und Signatur/Siegelerstellungseinheiten vermischt werden. Es kann nur ein System-Typ im exportieren RKSV-DEP abgebildet werden.",
    "verificationState" : "PASS",
    "input" : {
      "SYSTEM_TYPE_INITIAL" : "OPEN",
      "SYSTEM_TYPE" : "OPEN"
    },
    "verificationTimestamp" : "2018-10-24T11:15:46.525+02:00"
  }, {
    "verificationId" : "DEP_UNIQUE_RECEIPT_ID",
    "version" : 1,
    "verificationName" : "Belegnummer – Mehrfachverwendung",
    "verificationTextualDescription" : "In diesem Modul wird überprüft ob die selbe Belegnummer mehrfach im RKSV-DEP-Export vorkommt.",
    "verificationState" : "PASS",
    "input" : {
      "KNOWN_RECEIPT_IDS" : "NULL",
      "RECEIPT_IDENTIFIER" : "CASHBOX-DEMO-1-Receipt-ID-1"
    },
    "output" : {
      "KNOWN_RECEIPT_IDS" : "_CASHBOX-DEMO-1-Receipt-ID-1"
    },
    "verificationTimestamp" : "2018-10-24T11:15:46.525+02:00"
  }, {
    "verificationId" : "DEP_TURNOVER_COMPARE",
    "version" : 1,
    "verificationName" : "Entwicklung des Umsatzzählers",
    "verificationTextualDescription" : "In diesem Modul wird überprüft, ob die Entwicklung des verschlüsselten Umsatzzählers mit den Belegbeträgen übereinstimmt.",
    "verificationState" : "PASS",
    "input" : {
      "DECRYPTED_TURNOVER_VALUE" : "NULL",
      "TURNOVER_SUM" : "NULL",
      "SUM_TAX_SET_ERMAESSIGT2" : "0,00",
      "SUM_TAX_SET_ERMAESSIGT1" : "0,00",
      "SUM_TAX_SET_NORMAL" : "0,00",
      "TYPE_RECEIPT" : "NULL",
      "SUM_TAX_SET_NULL" : "0,00",
      "SUM_TAX_SET_BESONDERS" : "0,00"
    },
    "output" : {
      "TURNOVER_SUM" : "NULL"
    },
    "verificationTimestamp" : "2018-10-24T11:15:46.526+02:00"
  }, {
    "verificationId" : "DEP_STATE",
    "version" : 1,
    "verificationName" : "Abfolge von Belegen im RKSV-DEP",
    "verificationTextualDescription" : "In diesem Modul wird überprüft, ob die Abfolge der Belege im exportierten DEP korrekt ist: Position des Startbeleges, Position des Sammelbeleges nach dem Ausfall der Signatureinrichtung.",
    "verificationState" : "FAIL",
    "verificationResultDetailedMessage" : "Am Beginn des exportierten RKSV-DEP befindet sich kein gültiger Startbeleg.",
    "input" : {
      "SIGNED_PENULT" : "NULL",
      "AUTH_LEVEL" : "PRUEFTOOL_DEP",
      "SIGNED_PREV" : "NULL",
      "TYPE_RECEIPT" : "NULL",
      "TYPE_RECEIPT_PREV" : "NULL"
    },
    "verificationTimestamp" : "2018-10-24T11:15:46.526+02:00"
  } ]
}

Muster Beleg aus diesem git:

_R1-AT100_CASHBOX-DEMO-1_CASHBOX-DEMO-1-Receipt-ID-1_2016-03-11T03:57:08_0,00_0,00_0,00_0,00_0,00_4r1iIdZG_82424e8077297aa3_cg8hNU5ihto=_rKThZdYRoO4cyowsAK3KQjmgXg9cA3XmGVnR53EtYloroivDePObBTlGy6XhAOx2d4ZROEMcGI5crmBGLo0mBA==

Mein Beleg:

_R1-AT100_CASHBOX-DEMO-1_CASHBOX-DEMO-1-Receipt-ID-1_2016-03-11T03:57:08_0,00_0,00_0,00_0,00_0,00_4r1iIdZG_559528438_cg8hNU5ihto=_z1aOSpkPZDP2uAtiOaA2OPbehpqWQHxyuX5bgn37rb5DpLX6JqAWiJjc7EnfS79673scaR3XE4goMELJJfKQog==

Vielen Dank im Voraus Birgit

ErichFreitag commented 6 years ago

Vorbehaltlich noch anderer Fehler ist zunächst AT100 falsch - das muss für A-Trust A1 lauten.

AxelKutschera commented 6 years ago

Lieber Erich, den Fehler hatte ich auch gesehen - aber Du hast beim Tippen das "T" vergessen. Es lautet für A-Trust "AT1". LG Axel

ErichFreitag commented 6 years ago

4 Augen - danke, Axel!

BirgitHub commented 6 years ago

Habe es bereits auch mit AT1 probiert. AT100 ist lediglich der letzte versuch gewesen, dass ganze anzugleichen.


"verificationResultDetailedMessage" : "Am Beginn des exportierten RKSV-DEP befindet sich kein gültiger Startbeleg.",
  "input" : {
    "AUTH_LEVEL" : "PRUEFTOOL_DEP",
    "TURNOVER_SUM" : "NULL",
    "SYSTEM_TYPE_INITIAL" : "OPEN",
    "TIMEOFRECEIPT" : "2016-03-11T03:57:08.000",
    "RECEIPT_PREV" : "NULL",
    "RECEIPT_SIGNED" : "NULL",
    "DECRYPTED_TURNOVER_VALUE" : "NULL",
    "CASHBOX_ID_INITIAL" : "CASHBOX-DEMO-1",
    "SIGNED_PENULT" : "NULL",
    "SIGNED_PREV" : "NULL",
    "STATE_SIGDEVICE_AUSFALL_MARKER" : "NULL",
    "RECEIPT" : "_R1-AT1_CASHBOX-DEMO-1_CASHBOX-DEMO-1-Receipt-ID-1_2016-03-11T03:57:08_0,00_0,00_0,00_0,00_0,00_4r1iIdZG_559528438_cg8hNU5ihto=_tPa/bPdeptwWJq2LlkKFWYwXsGj66AhhI76ho8DcN94BZFBE4R8DsNyxeqKO2fyUjogONbZb/6pUTV1/tAVd6A==",
    "KNOWN_RECEIPT_IDS" : "NULL",
    "RK_SUITE_ID" : "NULL",
    "SYSTEM_TYPE" : "OPEN",
    "TYPE_RECEIPT" : "NULL",
    "STATE_SIGDEVICE_AUSFALL_REPORTED" : "NULL",
    "CASHBOX_ID" : "CASHBOX-DEMO-1",
    "TYPE_RECEIPT_PREV" : "NULL",
    "STATE_SIGDEVICE_TIMEOFRECEIPT" : "NICHT_REGISTRIERT"
  },
ErichFreitag commented 6 years ago

Ich kann es mir später (abends) im Detail ansehen, dazu brauche ich bitte den vollständigen korrekten maschinenlesbaren Code mit _R1-AT1...

Was mir auch noch auffällt: im crypto-File ist eine andere Zertifikats-Seriennummer eingetragen als im Beleg (2159B9F6 versus 559528438). Die muss identisch sein.

BirgitHub commented 6 years ago

Ich kann es mir später (abends) im Detail ansehen, dazu brauche ich bitte den vollständigen korrekten maschinenlesbaren Code mit _R1-AT1...

Was mir auch noch auffällt: im crypto-File ist eine andere Zertifikats-Seriennummer eingetragen als im Beleg (2159B9F6 versus 559528438). Die muss identisch sein.

Dank dir vielmals! Das war der Fehler.

Ich hatte die Werte nur in den Beiden Dateien verglichen. Im Crpto muss die ID in HEX sein (2159B9F6 ) in der dep-export.json als dezimal (559528438) und auf dem beleg selber wieder rin Hex. Letzteres hab ich als Dezimal ausgegeben.