Id-kaardi allkirjastamine libdigidocpp teegiga

43 views
Skip to first unread message

Priit Tark

unread,
Jul 14, 2017, 4:19:50 AM7/14/17
to Rubyest
Tere,

Kas keegi on teostanud id-kaardi allkirjastamist uue libdigidocpp teegiga?

Ma tean, et libdigidocpp kaasa tuleva digidoc-tool on mõeldud demomiseks aga hetkel tekib juba demoprojekti ehitamisel probleeme. Käsitsi digidoc-tool websign toimib aga põhiprobleem on selles, et allkirjastamisel lasen teha kaks ajax http päringut. Nimelt esimene, et saada teada allkirjastatud dokumendi räsi (Digest to sign), mille anname browseri kasutajale allkirjastamiseks ning peale browseris allkirjastamist teeme teise http päringu, mille allkirjastatud räsiga (signed digest) allkirjastame dokumendi. Samas digidoc-tooli websign ei võimalda lahku lüüa digest to sign ja signed digest tegevust.

Sellest küsimus, kas keegi on sellega varem kokku puutunud, kuidas olete viinud dokumendi räsi ja allkirjastamise räsi osa eraldi?

Täiendasin digidoc-tooli c++ koodi, lisasin juurde omatehtud startWebsign ja endWebsign käsud, kus startWebsign teeb kuni digest to sign ja salvestab doci:

Signature *signature = doc->prepareSignature(signer.get());
cout << "Signature method: " << signature->signatureMethod() << endl;
 cout << "Digest to sign: " << signature->dataToSign() << endl;

Ning endWebsign avab salvestatud doci ja viib allkirjastamise lõpuni (hetkel ei tea, kas see teoreetiliselt on üldse võimalik?):

signature->setSignatureValue(File::hexToBin(p.digest));
signature->extendSignatureProfile(p.profile);

Antud minu tehtud startWebsign ja endWebsign kood on nähtaval:
https://github.com/gitlabeu/libdigidocpp/commit/f03b061ff90a65a6e478ed283b4ef0ffa87ffb0e

Lahku lüües aga websign allkiri ei valideeru. Hetkel ma ei tea kas websigni saab üleüldse lahku lüüa sellisel viisil?

Muidu websign käsitsi töötab aga lahtilöödud startWebsign ja endWebsign antud allkiri ei valideeru. Äkki liigun täiesti vales suunas ning websign tuleks lahendada hoopis kolmandat moodi?

Ette tänades igasugu info eest,

Lugupidamisega,

Priit Tark

Priit Tark

unread,
Jul 20, 2017, 2:46:04 AM7/20/17
to Rubyest
Tere,

Sain ühele küsimusele id.ee kasutajatoelt vastuse:

id.ee kasutajatugi: Lahku ei anna lüüa kuna, pooleldi signeeritud dokumenti ei anna salvestada ja teist korda jätkates tekib uus timestamp ja digest ei matchi pärast. Ilmselt tuleb tekitada mingi thread kus jääb see pooleldi allkirjastatud asi rippuma (mutexi otsa, või wait condition) või tekitada mingi service.

Ok, suund on selge, teen allkirjastamise serveri.

Priit

Andri Möll

unread,
Jul 20, 2017, 5:29:42 AM7/20/17
to rub...@googlegroups.com
Kui digidoci implementatsioon on kuidagigi sarnane X-tee sõnumite allkirjastamiga (XMLDSig jm kompott mängus?), siis võiks järeldada, et saad ikka hiljem allkirjastada. Ainult et tõenäoliselt ei saa sa libdigidocile toetuda.

Teine variant oleks katsetada libfaketime'iga. Kuskilt see timestamp tulema peab. Libdigidoci seest kuidagi? Proovi kell seisma panna ja vaata, kas midagi õnnestub.

Andri


Priit Tark wrote:
--
Saite selle sõnumi, kuna olete liitunud Google'i gruppide grupiga "Rubyest".
Grupist eraldumiseks ja selle grupi meilide saamise peatamiseks saatke meil aadressile rubyee+un...@googlegroups.com.
Rohkem valikuid leiate lehelt https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages