{"id":"c1263","filename":"c1263_fiskal_sprint_fina_cert_rsa_zki.dok.json","weise3_id":"6681fa83fb03e85bdb776a1c7ae4611fcd357944a05f73e5db4dd623f29022df","tip":"implementacija","naziv":"Fiskal Sprint — FiscalCertificate + RSA-2048-SHA1 ZKI + JIR retry","kreator":"genesis","datum":"2026-06-05","snippet":"","status":"CLOSED","prev_weise3":"","bunker_l":"#5089ff","full":{"tip":"implementacija","naziv":"Fiskal Sprint — FiscalCertificate + RSA-2048-SHA1 ZKI + JIR retry","datum":"2026-06-05","commit":"ca739f5","pravna_osnova":"Zakon o fiskalizaciji u prometu gotovinom NN 133/12, čl. 8","sto_je_napravljeno":{"fiscal_cert_py":"FiscalSigner (RSA-2048-SHA1 ZKI potpis NN 133/12), AES-256-GCM encrypt/decrypt P12, get_signer() async","FiscalCertificate_model":"ZAKON 27 (weise3_id+bunker_seal_id+created_at), p12_enc+p12_tag+p12_iv (AES-256-GCM), company_id, oib, valid_to, je_trening","migracija_0032":"pos_fiscal_cert tablica + zki String(40→512) + jir String(40→80)","fiscal_cis_py_update":"izracunaj_zki() prima optionalni signer — s certifikatom pravi RSA potpis, bez certifikata ZKI:CERT_NEEDED","fiscal_py_zamjena_stuba":"stub → pravi servis: get_signer → Company.oib → fiskaliziraj() s pravi signerom","checkout_py_update":"prosljeđuje db + Company.oib u fiskaliziraj(); fiskaliziran = jir nije JIR: prefiks","pos_router_endpointi":["POST /api/v4/pos/fiscal-cert — upload P12, deaktivira stari, šifrira AES-256-GCM","GET /api/v4/pos/fiscal-cert — lista aktivnih certifikata","DELETE /api/v4/pos/fiscal-cert/{id} — soft deaktivacija"],"jir_retry_task":"Celery Beat 300s: pronalazi PosRacun jir=JIR:PENDING (<24h), šalje isti ZKI na CIS prod","celery_beat_schedule":"pos-jir-pending-retry svakih 5 minuta","settings_fiscal_cert_enc_key":"openssl rand -hex 32 u .env — AES-256-GCM ključ za P12 šifriranje"},"ZKI_algoritam":{"korak1":"MD5(OIB || DD.MM.YYYY HH:MM:SS || BrRac || OznPosPr || OznNapUr || Iznos.2dec)","korak2":"ZastKod = base64(RSA-2048-SHA1(md5_hex_bytes)) s privatnim ključem FINA P12 certifikata","napomena":"SHA1 je zakonski zahtjev NN 133/12 — ne SHA256"},"sljedeci_korak":"Ivan + Šeki: upload FINA test certifikata na POST /api/v4/pos/fiscal-cert (je_trening=true), test racun 0.01 EUR, provjeri JIR od CIS-a","stanje_eu_mar":{"EU":"alembic 0032, gunicorn OK, celery beat OK","MAR":"alembic 0032, gunicorn OK, celery beat OK"},"krunica_hash":"fc2bee5702b7908c51a79e5f2d5d6847367177cbc9a472c7e48f4268adeb3f62","status":"CLOSED","status_sealed":"2026-06-06T04:46:14Z","weise3_id":"6681fa83fb03e85bdb776a1c7ae4611fcd357944a05f73e5db4dd623f29022df","status_proof":"0d1310d2842b5ef5c02feca4c08759b13c06ef0571c2821e055fca7c1b5ea20f"}}