Skip to content

Instantly share code, notes, and snippets.

@grakic grakic/ePorezi-macOS.md
Last active Feb 17, 2020

Embed
What would you like to do?
ePorezi na macOS

ePorezi na macOS

Zvanična klijentska aplikacija Poreske uprave se može preuzeti sa njihove stranice.

U pitanju je Java aplikacija koja dolazi sa posebno priređenom distribucijom Oracle Java radnog okruženja. Aplikacija podržava samo Microsoft Windows operativni sistem i sertifikatima u Personals skladištu pristupa kroz Microsoft CryptoAPI koji poziva operacije na pametnoj kartici ili tokenu posredstvom midlvera.

Sertifikaciono telo Pošte korisnicima nudi SafeSign midlver, osim u verziji za Windows i u verziji za GNU/Linux i macOS operativne sisteme. Midlver isporučuje prateću aplikaciju za upravljanje karticom/tokenom i PKCS#11 biblioteku. Programi poput jSignPDF, Adobe Reader ili LibreOffice mogu da učitaju ovu biblioteku i omoguće korisniku elektronsko potpisivanje dokumenata.

Elektronsko potpisivanje se koristi i na portalu ePorezi Poreske uprave, posredstvom pomenute klijentske aplikacije.

Da bi klijentsku aplikaciju mogli da koristimo na macOS-u moramo da je naučimo da kartici/tokenu umesto kroz Microsoft CryptoAPI pristupa kroz SafeSign PKCS#11 modul. Minimalno (nezvanično) prerađena verzija ePorezi 1.0 tako da umesto MS CAPI koristi PKCS#11 sa odgovarajućim putanjama midlvera prema podrazumevanoj instalaciji na macOS-u se može preuzeti sa:

http://goranrakic.com/tmp/ePorezi_1.1_mac.zip

Prepravljena verzija nije podržana od strane Poreske uprave. Napravljena je isključivo u najboljoj nameri, sa željom da se i korisnicima macOS-a omogući pristup portalu. Izmene menjaju isključivo deo aplikacije koji je okrenut ka kartici, bez izmena u kodu koji je okrenut ka portalu. Za pristup kartici izmenjena aplikacija koristi isključivo postojeće PKCS#11 biblioteke i ne bi trebalo da dovede do oštećenja ili neočekivanog blokiranja kartice (kartica će biti blokirana u slučaju da korisnik više puta unese pogrešan PIN kod, što je podrazumevano ponašanje). Ipak napisano ne predstavlja garanciju i ovu nepodržanu i prepravljenu verziju koristite isključivo na svoju odgovornost.

Klijentska aplikacija je minimalno izmenjena, samo koliko je bilo neophodno za učitavanje PKCS#11 modula. U slučaju greški aplikacija će "zakucati" ili "pući", i jedino u log zapisu ili eventualnom ispisu u terminalu možete da naslutite šta je problem. Ovakvo prepravljanje gotove aplikacije kada izvorni kod nije dostupan nije jednostavno i postoje ograničene mogućnosti za dodavanje nove funkcionalnosti. Verovatno bi bilo lakše i praktičnije napraviti novu alternativnu aplikaciju, koja bi mogla da izgleda i ovako.

Na macOS-u nakon svakog uspešnog potpisivanja prikazuje se greška o padu programa. Aplikacija bi u tom trenutku trebalo da se tiho zatvori, međutim pri izlasku dolazi do neogovarajućeg pristupa (EXC_BAD_ACCESS). Pretpostavljam da je problem u zaostaloj niti ili resursu koji je potrebno osloboditi, međutim to ostaje u delu aplikacije koji ne mogu ili ne znam kako da prepravim (patchujem).

Osim Sertifikacionog tela Pošte, moguće da i druga sertifikaciona tela imaju dostupan PKCS#11 modul za macOS (npr. NexusPersonal za Halcom ili NetSet CardEdge za PKS/MUP).

@vuk-nikolic

This comment has been minimized.

Copy link

vuk-nikolic commented Jan 26, 2020

Svaka čast Gorane! Da li imaš ideju kako da izvučem log aplikacije? interesuje me šta sam omanuo :)

Ispratio sam uputstvo ali mi se vrti crveni peščnik doživotno sa MUPovim sertifikatom izdatim posle 18.08.2014. Probam sam prvo pravu prijavu, a onda više puta testnu, ali ista stvar.
Iskopirao sam libnstpkcs11.dylib, verzija mac os 10.15.2, a java:

java 13.0.2 2020-01-14
Java(TM) SE Runtime Environment (build 13.0.2+8)
Java HotSpot(TM) 64-Bit Server VM (build 13.0.2+8, mixed mode, sharing)

info iz aplikacije:

OS info: mac os x
Server version: 1.2.2
Application version: 1.0
CertBody: MUP/PKS (CardEdge PKCS11)
Trying PKCS11 module path /usr/local/lib/libnstpkcs11.dylib
Loading PKCS11 module: name=CardEdge
library=/usr/local/lib/libnstpkcs11.dylib

Čitač je neki gemalto pc usb-tr providni što sam uzeo mislim u winwinu/gigatronu

Screenshot ako pomaže: Screenshot 2020-01-26 at 19 23 14

Hteo bih da pomognem oko aplikacije, još jednom svaka čast za trud!

@najdanovicivan

This comment has been minimized.

Copy link

najdanovicivan commented Jan 27, 2020

Problem koji se desava je zbog Jave 13. Aplikacija radi u Java 8 problem je klasa sun.security.pkcs11.SunPKCS11 koja je od Java 9 prepravljena da koristi prototype model

@najdanovicivan

This comment has been minimized.

Copy link

najdanovicivan commented Jan 28, 2020

@vuk-nikolic

Ovako se moze naterati da se koristiti java 8 na OSX-u ukoliko postoje instalirane nove verzije. Otvoriti aplikaciju ePorezi u finderu desnim klikom -> Show Package Contents

Zatim idemo u folder Contents gde se nalazi fajl info.plist

Otvorimo info.plist file u bilo kom tekst editoru

U fajlu se nalazi parametar

<key>JVMVersion</key>
<string>1.8+</string>

Samo prepravimo verziju na 1.8 bez plusa

<key>JVMVersion</key>
<string>1.8</string>
@cyberkurajber

This comment has been minimized.

Copy link

cyberkurajber commented Jan 28, 2020

Ako nije instalirana i Java 8, nece pomoci samo promena gore navedenog stringa.

Koristeci Terminal i Homebrew, instalacija je:
brew tap homebrew/cask-versions
a zatim:
brew cask install homebrew/cask-versions/adoptopenjdk8

Nakon ovoga mi je proradilo. Hvala Gorane!

@najdanovicivan

This comment has been minimized.

Copy link

najdanovicivan commented Jan 28, 2020

Ne mora preko homebrew-a moze i sa Oracle sajta da se preuzme pkg installer

@vuk-nikolic

This comment has been minimized.

Copy link

vuk-nikolic commented Jan 31, 2020

Hvala obojici za info.
Instalirao sam javu 8 (openjdk version "1.8.0_242" odnosno OpenJDK Runtime Environment (build 1.8.0_242-b08)) ali idalje mi se isto ponaša nažalost.

@MladenJanjetovic

This comment has been minimized.

Copy link

MladenJanjetovic commented Feb 6, 2020

Uspeo sam da mi aplikacija kaze sertifikat validan i da me redirektuje na sajt eporezi, ali onda dobijem obavestenje da treba da otvorim eporezi.app koji je vec otvoren ali iz nekog razloga crashuje.
Evo pocetka log-a ako ista znaci:

Process:               java [19648]
Path:                  /Applications/ePorezi.app/Contents/MacOS/universalJavaApplicationStub
Identifier:            com.itsinbox.smartbox.SmartBox
Version:               1.1 (???)
Code Type:             X86-64 (Native)
Parent Process:        ??? [1]
User ID:               501

Date/Time:             2020-02-06 11:34:51.923 +0100
OS Version:            Mac OS X 10.15.3 (19D76)
Report Version:        12
Bridge OS Version:     3.0 (14Y908)
Anonymous UUID:        0ED85ECF-3DC8-F3AF-047B-3400C887BBD0


Time Awake Since Boot: 61000 seconds

System Integrity Protection: enabled

Crashed Thread:        7  Java: VM Thread

Exception Type:        EXC_BAD_ACCESS (SIGABRT)
Exception Codes:       EXC_I386_GPFLT
Exception Note:        EXC_CORPSE_NOTIFY

Application Specific Information:
abort() called
@lazanet

This comment has been minimized.

Copy link

lazanet commented Feb 6, 2020

Мислим да сам успео да га ухакујем да ради на новијим јавама (тестирано на 11), ако нађете неке багове вичите тамо на issue.
https://github.com/lazanet/ePorezi/releases/tag/1.0

@velibor-mandzo

This comment has been minimized.

Copy link

velibor-mandzo commented Feb 12, 2020

Meni uporno ne skine / instalira libnstpkcs11.dylib sa Poštinog linka, jel moze neko da baci fajl ili direkt link thanks?

@velibor-mandzo

This comment has been minimized.

Copy link

velibor-mandzo commented Feb 12, 2020

OS info: mac os x CertBody: MUP/PKS (CardEdge PKCS11) Server version: 1.2.2 Application version: 1.0 Trying PKCS11 module path /usr/local/lib/libnstpkcs11.dylib PKCS11 module not found! Error java.security.KeyStoreException: PKCS11 module not found!

@zkosanovic

This comment has been minimized.

Copy link

zkosanovic commented Feb 12, 2020

@velibor-mandzo Moraš sam da skineš i prebaciš u /usr/local/lib/: https://nx7674.your-storageshare.de/s/659pz24qxoA4JcG

@velibor-mandzo

This comment has been minimized.

Copy link

velibor-mandzo commented Feb 12, 2020

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.