Merci pentru raspuns, sounds fun.
Am gasit ceva API cu Adobe LiveCycle, dar pentru asta trebuie Adobe Acrobat Pro.
Adobe LiveCycle * Quick Start (EJB mode): Digitally signing a PDF document using the Java API
Daca e vreun mod sa ii dau direct la Adobe Acrobat ce as trimite la
signClient.sign(
credDoc,
fieldName,
myCred,
HashAlgorithm.SHA1,
reason,
location,
contactInfo,
appear,
revCheck,
ocspSpec,
crlSpec,
tspSpec);
ar rezolva problema.
Cu LiveCycle e posibil sau poate ma induce in eroare documentatia:
Adobe LiveCycle * Digitally Signing Interactive Forms
Am mai gasit
(
https://www.adobe.com/devnet-docs/etk_deprecated/tools/DigSig/Acrobat_DigitalSignatures_in_PDF.pdf)
Totusi fiindca nu merge by default, oarecum imi da senzatia ca nu o sa imi semneze nici ei documentul cand il trimit prim email deci s-ar putea sa ma chinui degeaba.
Fun stuff, deci am descoperit ca de fapt Adobe e problema…
Ca sa folosesti CSC trebuie sa obtii un hash de la documentul PDF, acest lucru e simplu daca ai un PDF cu o singura semnatura, dar daca vrei sa ai mai multe semnaturi se complica lucrurile.
Dupa ca sa semnezi trebuie sa obtii hash-ul documentului, sa il trimiti la server impreuna cu certificatul, alias-ul, respectiv parola la certificat si sa primesti semnatura pe care o scrii pe pdf (asta e partea simpla, tot API-ul CSC e deschis - ai inclusiv OpenAPI/postman)
In cazul formularului de ANAF trebuie cumva luat un hash, facut tot procesul cu CSC pana avem semnatura si dupa scrisa semnatura pe document pe primul field de semnatura si prima parte din document…
La momentul actual nu cred ca as putea face asta cumva fara LiveCycle… Deci un certificat cu CSC e inutil pentru ANAF nu fiindca nu e bun, ci fiindca Adobe nu suporta CSC nativ si nu poti semna dracovenia de formular de confirmare/declaratie cu Dynamic XFA.
Singurul mod in care probabil pot sa il fac sa mearga e sa injectez un certificat self-signed ca si placeholder in Adobe DC, sa semnez documentul si sa inregistrez din memorie tot ce se schimba in document, sa trimit hash-ul folosit pentru self-signed de Adobe la Transsped ca sa generez semnatura si dupa sa caut in memorie certificatul self-signed din document si sa il inlocuiesc cu certificatul si semnatura de la CSC. Daca planetele se alinieaza dupa ce deschizi documentul va fi valid cu semnatura CSC. E si mai complicat ca documentul XAF poate fi modificat doar cand e randat, adica ar fi prea fain sa semnez cu un placeholder si dupa sa rulez un replace pe pdf cu certificatul de la transsped.