Portaal Portaal Pingviini veeb foorumi pealeht
  Viki  |  IRC  |  Otsing  |  Küsimused ja vastused  |  Profiil  |  Privaatsõnumite vaatamiseks logi sisse  | Logi sisse või Registreeru
<empty>
Vaata järgmist teemat
Vaata eelmist teemat

Postita uus teemaVasta teemale
Autor Sõnum
mait
Pingviini aktivist
Pingviini aktivist



Liitunud: 14.12.2012
Postitused: 104
Asukoht: Tartu
Distributsioon: OpenSuse 12.2; 13.2, Leap
estonia.gif
postituspostitatud: 26.12.2025, 14:11  postituse pealkiri:  openSUSE Leap 16.0 ja ID-kaart  

ID-kaardi tarkvara kompileerimine lõpeb kohe libdigidoc juures alguses üllatusliku veateatega:
Kood:
 
                /libdigidoc/DigiDocError.c:588:16: error: conflicting types for ‘checkUnknownErr’; have ‘int(SignedDoc *)’ {akaint(struct SignedDoc_st *)’}
  588 | EXP_OPTION int checkUnknownErr(SignedDoc* pSigDoc)

Alliktekstid on aastast 2019 ja võiks ju ära kompileerida. Varem pole sellega kunagi probleeme olnud.



Järgnev võiks olla üks lahendus, kuidas ID-kaardiga dokumendi allkirjastamise OpenSUSE Leap 16.0 peal käima saab. Alustada saab peale opsüsteemi paigaldust. Muuseas, pakihaldur myrlyn on tüütu, sest sulgeb end iga kord peale paigalduse lõppu ja kui on vaja katseliselt järjest lisada, siis tuleb jälle teda uuesti käivitada. Klassikaline yast on parem, aga see tuleb eraldi paigaldada ja käima läheb ainult tekstimoodis xterm-s käsurealt.

Esmalt vaja paigaldada opensc, kaardilugejate draiverid ja arenduspaketid (*devel) ja muid pakke tuleb edaspidi järjest vajadusel lisada :
Kood:
+ libeac3, opensc, opensc-bash-completion.
+ pcsc-lite
+ pcsc-lite-devel
+ pcsc-ccid
+ pkcs11-(tool)
.


Nüüd pcscd teenusele restart:
Kood:
% sudo systemctl stop pcscd
% sudo systemctl stop pcscd.socket
% sudo systemctl start pcscd


... USB-kaardilugeja sisse ja testida, kas tunneb kaarti:

Kood:
% opensc-tool -l
   # Detected readers (pcsc)
   Nr.  Card  Features  Name
   0    No              Gemalto PC Twin Reader (131F78C1) 00 00
.
Sisemist lugejat ei näita.
Aga kui ID-kaart sai sisse pandud, siis
Kood:
 % opensc-tool -l
 # Detected readers (pcsc)
    Nr.  Card  Features  Name
   0    Yes             Alcor Micro AU9540 00 00
   1    No              Gemalto PC Twin Reader (131F78C1) 01 00
.

Kontrolliks veel:
Kood:
 % pkcs11-tool -L
   Available slots:
   Slot 0 (0x0): Alcor Micro AU9540 00 00
   token label        : annab nime ja muud
   ======== toimib  =======================
.


Nüüd keerulisem osa ehk allkirjastamiseks ID-kaardi tarkvara ehitamine.

Alliktekstid tuleb tõmmata esmalt GitHub-st (git clone --recursive ...).

(1) * libdigidoc *
Tahab hulka lisasid ja lõpuks cmake lõpetab esimeses postituses näidatud veaga.


CMakeLists.txt failis prooviks sai tehtud netiõpetuste järgi lisandusi, kas ja mis neist lõpuks mõjus, jäi testimata (sest esimene keeruline lahendus tuli isekompileeritud gcc-11 abil):

Kood:
cmake_policy(VERSION 3.00)
   
     set(CMAKE_CXX_STANDARD 11)
   set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")
   set(CMAKE_CXX_STANDARD_REQUIRED ON)

   include(CheckCXXCompilerFlag)
   CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
   CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
   if(COMPILER_SUPPORTS_CXX11)
       set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
   elseif(COMPILER_SUPPORTS_CXX0X)
       set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
   else()
           message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
   endif()

        % cd cmake
     % cmake -D CMAKE_C_COMPILER=gcc-13  ../
     % make



Siis jõuab openssl-i teegini ja lõpetab veaga:
Kood:
  libdigidoc/libdigidoc/DigiDocOCSP.c:983:37: error: ‘OCSP_R_SERVER_RESPONSE_PARSE_ERROR’ undeclared (first use in this function); did you mean ‘OCSP_R_SERVER_READ_ERROR’?
      983 |     OCSPerr(OCSP_F_OCSP_SENDREQ_BIO,OCSP_R_SERVER_RESPONSE_PARSE_ERROR);


Konstant OCSP_R_SERVER_RESPONSE_PARSE_ERROR on puudu. Sarnased OCSP_R_* definitsioonid on failis ocsperr.h.
Paneme netis olevast vanemast ocsperr.h versioonist masina /usr/include/openssl/ocsperr.h faili:


Kood:
           #  define OCSP_R_SERVER_RESPONSE_ERROR                     114
         #  define OCSP_R_SERVER_RESPONSE_PARSE_ERROR               115

ja DigiDocOCSP.c päisesse
Kood:
 #include <openssl/ocsperr.h>
.

Nüüd võiks saada ära teha make käsu ja kompileerida paki.


Kui ei tee või ei saa üle sellest postituses alguses näidatud veast, siis tuleb minna keerulist teed ja paigaldada gcc-11 kompilaator.
Ma kompileerisin ise sellest gcc11-11.5.0+git3328-2.1.src.rpm. Kompilaator kompileerimisel tuleb arvestada, kui OpenSUSE 16.0 on jäetud 64-bitiseks (nii nagu ta on) - soovituse selleks gcc-11 make annab ise.

Kui gcc-11 on tehtud ja make installiga paigaldatud, siis saab hakata uuesti proovima libdigidoc-i kompileerimist nii:
Kood:
 cmake -D CMAKE_C_COMPILER=/usr/local/bin/gcc -D CMAKE_CXX_COMPILER=/usr/local/bin/g++ ../

ja päris palju tuleb tegeleda teekide otsinguteedega (lisada viidad ja kaustad, millest gcc-11 ja ld otsivad).

Tuleb jälgida, et millist kompilaatorit kasutatakse väljakutsetel (% gcc --version).
Katsetamisel on vaja cmake kaustast kõik peale "modules" kataloogi ära kustutada enne uut proovimist.

Otsinguteede sättimisel (kui cmake ei tee teste läbi) oli abiks netist leitud soovitused:
Kood:
 % ld --verbose | grep SEARCH_DIR | tr -s ' ;' \\012

ja
Kood:
 gcc -print-search-dirs | sed '/^lib/b 1;d;:1;s,/[^/.][^/]*/\.\./,/,;t 1;s,:[^=]*=,:;,;s,;,;  ,g' | tr \; \\012
.

Lõpuks saab tehtud :
Kood:
 
       % cd cmake
       % cmake -D CMAKE_C_COMPILER=/usr/local/bin/gcc -D CMAKE_CXX_COMPILER=/usr/local/bin/g++ ../
       % make
       % make install
.



(2) * libdigidocpp *
Kood:
 % cmake ../

Vaja on lisapakette paigaldada.
Kood:
 % make

Annab veateate "cannot find -lltdl:"

Lisada tuli libtool (A Tool to Build Shared Libraries)
[100%] Built target digidoc_csharp

# Lõpuks
Kood:
 % make install


(3) * digidoc klient4 DigiDoc4-Client *

Kood:
 % cmake ../

Tahtis ldap ja QT komplekt ( qt6-base-devel, qt6-svg-devel, qt6-linguist-devel, flatbuffers-devel).

Kood:
 % make

[100%] Linking CXX executable qdigidoc4
[100%] Built target qdigidoc4

Kood:
 % make install


Ja prooviks
Kood:
 % /usr/local/bin/qdigidoc4

Läheb käima ja saab allkirjastada dokumendi.

Info lehel annab:
Kood:
 Keeleseaded: Estonian / et_EE.UTF-8

      Rakenduse versioon: 4.10.0.0 (64 bit)
      Operatsioonisüsteem: openSUSE Leap 16.0 (x86_64/x86_64)
      Protsessor: Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz
      Tuum: Linux 6.12.0-160000.8-default #1 SMP PREEMPT_DYNAMIC Thu Dec 11 09:18:13 UTC 2025 (5d31a95) x86_64

      Teegid:
      QT (6.9.1)
      OpenSSL build (OpenSSL 3.5.0 8 Apr 2025)
      OpenSSL current (OpenSSL 3.5.0 8 Apr 2025)
      libpcsclite1 (2.0.1)
      pcsc-lite (2.0.1)
      opensc (0.26.1)


(4) FireFox-i seadistus ja veebis allkirjastamine.
FF-l oli kohe olemas Web-eID (13. juuni 2023, Ver 2.2.1).

Tavaline FF-i kontroll esmalt.

Xterm-s käsurealt teegi olemasolu kontroll:
Kood:
 % dir /usr/lib64/onepin-opensc-pkcs11.so
     lrwxrwxrwx. 1 root root 16 14. jaan   2025 /usr/lib64/onepin-opensc-pkcs11.so -> opensc-pkcs11.so


FF-i durvaseadete all oli viide /usr/lib64/onepin-opensc-pkcs11.so.
ID-kaart lugejasse ja FF-i seadistuse all katseks <Sisselogimine>.
Leiab üles ID-kaardi ja küsib PIN1. Näitab, et on sees. <Logi välja>.


Nüüd web-eid rakenduse kompileerimine ja paigaldus.

Kood:
 % cd <alliktekstid/>web-eid-app
       % sh test.sh

... paigaldada on vaja GTest jm.
... ehitab ....
100% tests passed, 0 tests failed out of 4

Kood:
 % cd build
      % make install
      [100%] Built target web-eid-tests
      Install the project...
      -- Install configuration: "RelWithDebInfo"      
      
      -- Installing: /usr/local/bin/web-eid
      -- Installing: /usr/local/lib64/mozilla/native-messaging-hosts/eu.webeid.json
      -- Installing: /usr/local/share/web-eid/eu.webeid.json
      -- Installing: /usr/local/etc/chromium/native-messaging-hosts/eu.webeid.json
      -- Installing: /usr/local/etc/opt/chrome/native-messaging-hosts/eu.webeid.json
      -- Installing: /usr/local/share/google-chrome/extensions/ncibgoaomkmdpilpocfeponihegamlic.json
      -- Installing: /usr/local/share/chromium/extensions/ncibgoaomkmdpilpocfeponihegamlic.json
      -- Installing: /usr/local/share/applications/web-eid.desktop
      -- Installing: /usr/local/share/icons/hicolor/16x16/apps/web-eid.png
      -- Installing: /usr/local/share/icons/hicolor/32x32/apps/web-eid.png
      -- Installing: /usr/local/share/icons/hicolor/128x128/apps/web-eid.png
      -- Installing: /usr/local/share/icons/hicolor/256x256/apps/web-eid.png               
      -- Installing: /usr/local/share/icons/hicolor/512x512/apps/web-eid.png
      


Prooviks FF-s https://eesti.ee.
= Kasutaja tuvastamine ebaõnnestus.

OpenSUSE Leap 15.5 kogemusest on teada, et mõned failid tuleb pärast käsitsi õigesse kausta kopeerida.

Vaja oli leida <alliktekstid/>web-eid-app kataloogipuust ja paigaldada (kopeerida) käsitsi failid:
Kood:
 /etc/opt/chrome/native-messaging-hosts/eu.webeid.json
         /usr/lib64/mozilla/native-messaging-hosts/eu.webeid.json
         /opt/google/chrome/extensions/ncibgoaomkmdpilpocfeponihegamlic.json


FireFox restart ja prooviks https://eesti.ee
PIN1 toimib.
PIN2 toimib ka pangas.
Tehtud!


acrux
Pingviini kasutaja
Pingviini kasutaja


Vanus: 64
Liitunud: 15.03.2010
Postitused: 36
Asukoht: Tallinn
Distributsioon: KDE Neon
estonia.gif
postituspostitatud: 30.12.2025, 21:06  postituse pealkiri:  (teema puudub)  

Hea töö!
Tundub aga, et keegi hea inimene pakendab ID kaardi tarkvara päris mitmele distributsioonile, sealhulgas ka Leap 16-le:
https://download.opensuse.org/repositories/home:/ulo:/open-eid/


Näita (aja järgi):      
Postita uus teemaVasta teemale


Vaata järgmist teemat
Vaata eelmist teemat
Powered by phpBB2 Plus based on phpBB © 2001/7 phpBB Group