Kood: Vali kõik
/libdigidoc/DigiDocError.c:588:16: error: conflicting types for ‘checkUnknownErr’; have ‘int(SignedDoc *)’ {akaint(struct SignedDoc_st *)’}
588 | EXP_OPTION int checkUnknownErr(SignedDoc* pSigDoc)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: Vali kõik
+ libeac3, opensc, opensc-bash-completion.
+ pcsc-lite
+ pcsc-lite-devel
+ pcsc-ccid
+ pkcs11-(tool)
Nüüd pcscd teenusele restart:
Kood: Vali kõik
% sudo systemctl stop pcscd
% sudo systemctl stop pcscd.socket
% sudo systemctl start pcscd... USB-kaardilugeja sisse ja testida, kas tunneb kaarti:
Kood: Vali kõik
% 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: Vali kõik
% 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: Vali kõik
% 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: Vali kõik
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 ../
% makeSiis jõuab openssl-i teegini ja lõpetab veaga:
Kood: Vali kõik
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: Vali kõik
# define OCSP_R_SERVER_RESPONSE_ERROR 114
# define OCSP_R_SERVER_RESPONSE_PARSE_ERROR 115ja DigiDocOCSP.c päisesse
Kood: Vali kõik
#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: Vali kõik
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: Vali kõik
% ld --verbose | grep SEARCH_DIR | tr -s ' ;' \\012 ja
Kood: Vali kõik
gcc -print-search-dirs | sed '/^lib/b 1;d;:1;s,/[^/.][^/]*/\.\./,/,;t 1;s,:[^=]*=,:;,;s,;,; ,g' | tr \; \\012 Lõpuks saab tehtud :
Kood: Vali kõik
% 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: Vali kõik
% cmake ../ Vaja on lisapakette paigaldada.
Kood: Vali kõik
% make Annab veateate "cannot find -lltdl:"
Lisada tuli libtool (A Tool to Build Shared Libraries)
[100%] Built target digidoc_csharp
# Lõpuks
Kood: Vali kõik
% make install(3) * digidoc klient4 DigiDoc4-Client *
Kood: Vali kõik
% cmake ../Tahtis ldap ja QT komplekt ( qt6-base-devel, qt6-svg-devel, qt6-linguist-devel, flatbuffers-devel).
Kood: Vali kõik
% make [100%] Linking CXX executable qdigidoc4
[100%] Built target qdigidoc4
Kood: Vali kõik
% make install Ja prooviks
Kood: Vali kõik
% /usr/local/bin/qdigidoc4 Läheb käima ja saab allkirjastada dokumendi.
Info lehel annab:
Kood: Vali kõik
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: Vali kõik
% dir /usr/lib64/onepin-opensc-pkcs11.so
lrwxrwxrwx. 1 root root 16 14. jaan 2025 /usr/lib64/onepin-opensc-pkcs11.so -> opensc-pkcs11.soFF-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: Vali kõik
% cd <alliktekstid/>web-eid-app
% sh test.sh ... paigaldada on vaja GTest jm.
... ehitab ....
100% tests passed, 0 tests failed out of 4
Kood: Vali kõik
% 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: Vali kõik
/etc/opt/chrome/native-messaging-hosts/eu.webeid.json
/usr/lib64/mozilla/native-messaging-hosts/eu.webeid.json
/opt/google/chrome/extensions/ncibgoaomkmdpilpocfeponihegamlic.jsonFireFox restart ja prooviks https://eesti.ee
PIN1 toimib.
PIN2 toimib ka pangas.
Tehtud!

