sergioito Posted March 7, 2012 Report Share Posted March 7, 2012 Viva, Estou a trabalhar num projecto na faculdade que consiste em assinar digitalmente documentos, inicialmente através do cartão único e mais tarde evoluirá para assinar com um certificado que esteja na máquina. Acontece que tenho de trabalhar com java, coisa que não tenho grande experiência, estou a trabalhar com o NetBeans 7.1 a tentar fazer uma função ou webservice que faça o pretendido. Se me pudessem dar algumas dicas, tanto a nivel de bibliotecas, como tutoriais, ideias, realmente tudo seria uma boa ajuda pois tenho muito que estudar nestes campos 😉 Já encontrei alguns exemplos que supostamente faziam algo do género mas fico perdido nas bibliotecas e assim e pouca coisa funciona. Desde já agradeço. Link to comment Share on other sites More sharing options...
joaorosa Posted March 7, 2012 Report Share Posted March 7, 2012 Tens as bibliotecas security do Java que fazem o pretendido! Link to comment Share on other sites More sharing options...
sergioito Posted June 12, 2012 Author Report Share Posted June 12, 2012 (edited) Neste momento tenho o seguinte codigo: public static void blele() throws PteidException, KeyStoreException, NoSuchAlgorithmException, UnrecoverableKeyException { String pkcs11Config = "name = SmartCard"; String os = System.getProperty("os.name"); if (os.equals("Linux") || os.equals("Mac OS X")) { //pkcs11Config = pkcs11Config + NL + "library = libpteidpkcs11.so"; // pkcs11Config = pkcs11Config + NL + "library = /usr/local/lib/libpteidpkcs11.so"; } else if (os.equals("Windows")) { //pkcs11Config = pkcs11Config + "library = C:\\Windows\\System32\\PTEIDP~1.DLL"; } String pkcs11ConfigFile = "C:\\Program Files\\Java\\jre7\\lib\\security\\pkcs11.cfg"; Provider pkcs11Provider = new sun.security.pkcs11.SunPKCS11(pkcs11ConfigFile); Security.addProvider(pkcs11Provider); //byte[] pkcs11configBytes = pkcs11Config.getBytes(); //ByteArrayInputStream configStream = new ByteArrayInputStream(pkcs11configBytes); //Provider pkcs11Provider = new sun.security.pkcs11.SunPKCS11(configStream); //Security.addProvider(pkcs11Provider); CallbackHandler cmdLineHdlr = new com.sun.security.auth.callback.DialogCallbackHandler(); KeyStore.Builder builder = KeyStore.Builder.newInstance("PKCS11", pkcs11Provider, new KeyStore.CallbackHandlerProtection(cmdLineHdlr)); KeyStore ks = builder.getKeyStore(); String assinaturaCertifLabel = "CITIZEN SIGNATURE CERTIFICATE"; chain = ks.getCertificateChain(assinaturaCertifLabel); PrivateKey key = (PrivateKey)ks.getKey(assinaturaCertifLabel, null); // } Não liguem ao comentado porque estou a testar várias formas porque tenho sempre o mesmo erro: Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: no j2pkcs11 in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860) at java.lang.Runtime.loadLibrary0(Runtime.java:845) at java.lang.System.loadLibrary(System.java:1084) at sun.security.pkcs11.wrapper.PKCS11$1.run(PKCS11.java:84) at java.security.AccessController.doPrivileged(Native Method) at sun.security.pkcs11.wrapper.PKCS11.<clinit>(PKCS11.java:82) at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:312) at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:103) ... Alguma ajuda? Edited June 12, 2012 by Baderous geshi Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now