/* DigiDoc4J library * * This software is released under either the GNU Library General Public * License (see LICENSE.LGPL). * * Note that the only valid version of the LGPL license as far as this * project is concerned is the original GNU Library General Public License * Version 2.1, February 1999 */ package prototype; import java.security.NoSuchAlgorithmException; import org.digidoc4j.Container; import org.digidoc4j.ContainerBuilder; import org.digidoc4j.Signature; import org.digidoc4j.SignatureBuilder; import org.digidoc4j.SignatureToken; import org.digidoc4j.signers.PKCS11SignatureToken; public class PKCS11SignerTestMain { /** * PKCS#11 module path depends on your operating system and installed smart card or hardware token library. * * If you are using OpenSC (https://github.com/OpenSC/OpenSC/wiki), then * For Windows, it could be C:\Windows\SysWOW64\opensc-pkcs11.dll * For Linux, it could be /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so * For OSX, it could be /usr/local/lib/opensc-pkcs11.so * */ public static final String PKCS_11_MODULE_PATH = "/usr/local/lib/opensc-pkcs11.so"; /** * Secret pin code for digital signature */ public static final String PIN_CODE = "22975"; /** * Token slot index. Depends on the hardware token. Estonian ID-Card slot index is 2. */ public static final int SLOT_INDEX = 2; public static void signWithIDCard() throws NoSuchAlgorithmException { Container container = ContainerBuilder. aContainer(ContainerBuilder.BDOC_CONTAINER_TYPE). withDataFile("testFiles/test.txt", "text/plain"). build(); SignatureToken pkcs11Signer = new PKCS11SignatureToken(PKCS_11_MODULE_PATH, PIN_CODE.toCharArray(), SLOT_INDEX); Signature signature = SignatureBuilder. aSignature(container). withSignatureToken(pkcs11Signer). invokeSigning(); container.addSignature(signature); container.saveAsFile("signWithIDCard.ddoc"); } public static void main(String[] args) throws NoSuchAlgorithmException { signWithIDCard(); } }