Hi Emerson, I'll take a look at it. It actually might help a lot since I'm also from Brazil.
Btw, I've added you at gitHub, hope it's not a problem. Thanks for your help. On 2020/06/22 21:48:27, Emerson Sachio Saito <emerson.sa...@serpro.gov.br> wrote: > Hi, > > See this project, maybe it will help you: https://github.com/demoiselle/signer > > > Emerson Sachio Saito > > ----- Mensagem original ----- > De: "Thomas Chojecki" <i...@rayman2200.de> > Para: users@pdfbox.apache.org > Enviadas: Segunda-feira, 22 de junho de 2020 18:10:15 > Assunto: AW: Sign a PDF using USB Token - PKCS#11 > > Hi Gustavo, > you need to provide a so called KeyProvider for the hardware token. The > KeyProvider delegate the access to the private key on the USB Token. > > It’s almost 5 years ago I worked with hardware token. That was on Java 6, so > maybe things changed. > > From the message I can see, the key is read from the pkcs11 keystore but BC > can not find the SunPKCS11 provider. This happen, if you don‘t tegister the > right provider or don‘t pass it to the CMSSIgnedData. > > Can you post the output of the follow code, right before you sign. > > Provider[] providers = Security.getProviders(); > System.out.println(providers.length); > Arrays.stream(providers).forEach(System.out::println); > > > In the example code, the CMSSignedData use the default provider BC and not > the SunPKCS11. > > Some years ago I worked on a crypto extension for the pdfbox but never > finished it. There are some samples and a running testsuite. I’ve tested the > code with a TeleSec smartCard and it worked. > > So give it maybe a try. Clone this repo > https://github.com/Rayman2200/pdfbox-crypto and search for SignTest.java and > add the follow code > > @Test > public void testPAdES_B_Signature_HW_Token() throws > UnrecoverableKeyException, KeyStoreException, NoSuchAlgorithmException, > IOException, > IllegalArgumentException, COSVisitorException, SignatureException > { > > String configName = "C:\\pkcs11\\pkcs11.cfg"; > Provider p = new sun.security.pkcs11.SunPKCS11(configName); > Security.addProvider(p); > > KeyProvider keyProvider = KeyProvider.getInstance(keystore, > keystore.aliases().nextElement(), new char[0], p.getName()); > > SignatureProvider signatureProvider = > PAdES_B_Provider.getInstance(keyProvider); > signatureProvider.setSignatureAlgorithm(SIGNATURE_ALGORITHM); > > InputStream stream = > SignTest.class.getResourceAsStream("/unsignedPDF/LibreOffice_4_3_Sample.pdf"); > > PDCrypto cryptoEngine = null; > try > { > cryptoEngine = PDCrypto.load(stream); > cryptoEngine.createSignatureBuilder() > .setKeyProvider(keyProvider) > .setSignatureProvider(signatureProvider) > .setSigernName("SignerName") > .sign(new File(OUTPUT_FOLDER, "Sample_PAdES_B_signed.pdf")); > > } > finally > { > closeStream(stream); > } > > } > > The project is configured for Java 1.5 so you will need to have Java 8 > installed. That the only version that is compatible. > > > Best regards > Thomas > > > > > > > Von: Gustavo Delgado > Gesendet: Samstag, 20. Juni 2020 05:49 > An: users@pdfbox.apache.org > Betreff: Sign a PDF using USB Token - PKCS#11 > > Hello everyone! I hope you're all doing well. > > I'm struggling to digitally sign a pdf document for more time then I would > like and any help here is appreciated. > > I'm using a USB Token (StarSign Crypto USB Token S) and the proprietary .dll > available to load the keystore. > I can get the available info from the token, but whenever I try to sign a pdf > using the <CreateSignature> class, I get the following exception: > > <<org.bouncycastle.operator.OperatorCreationException: cannot create signer: > No installed provider supports this key: > sun.security.pkcs11.P11Key$P11PrivateKey>> > > I've done some research but I couldn't find any resource to overcome this > problem using PDF Box, which is the library I'd like to use because of its > license. > > If can be of any help, I'm also posting the code I've used: > > https://gist.github.com/benywolf42/f5784671301478dd3e2cf803eb6ef8d5 > > Thanks in advance and be safe! > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@pdfbox.apache.org > For additional commands, e-mail: users-h...@pdfbox.apache.org > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@pdfbox.apache.org > For additional commands, e-mail: users-h...@pdfbox.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@pdfbox.apache.org For additional commands, e-mail: users-h...@pdfbox.apache.org