Jump to content

assinar digitalmente documentos


sergioito
 Share

Recommended Posts

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

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 by Baderous
geshi
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.