En https://github.com/luisgoncalves/xades4j/wiki/DefiningKeyingData il est dit que les clés et les certificats qui sont stockés dans la carte à puce, peuvent être utilisés pour signer des documents XML. bibliothèque native est mentionné dans l'exemple de code:Que devrait être dans la bibliothèque native PKCS11 compatible Xades4J?
KeyingDataProvider kp = new PKCS11KeyStoreKeyingDataProvider(
"path/to/native/lib",
"name",
new FirstCertificateSelector(),
null, null, false);
Mais ce qui devrait être dans cette bibliothèque native, est-ce pot dll ou Java, quelles fonctions la bibliothèque doit exporter? J'ai essayé d'utiliser les bibliothèques pkcs11wrapper-1.2.18.jar et pkcs11wrapper.dll des distributions de paquets de signature numérique de mon pays, mais les exceptions ont été jetées:
Exception in thread "main" java.security.ProviderException: java.lang.reflect.InvocationTargetException
at xades4j.providers.impl.PKCS11KeyStoreKeyingDataProvider.createPkcs11Provider(PKCS11KeyStoreKeyingDataProvider.java:211)
at xades4j.providers.impl.PKCS11KeyStoreKeyingDataProvider.access$100(PKCS11KeyStoreKeyingDataProvider.java:52)
at xades4j.providers.impl.PKCS11KeyStoreKeyingDataProvider$1.getBuilder(PKCS11KeyStoreKeyingDataProvider.java:118)
at xades4j.providers.impl.KeyStoreKeyingDataProvider.ensureInitialized(KeyStoreKeyingDataProvider.java:175)
at xades4j.providers.impl.KeyStoreKeyingDataProvider.getSigningCertificateChain(KeyStoreKeyingDataProvider.java:189)
at xades4j.production.SignerBES.sign(SignerBES.java:151)
at xades4j.production.SignerBES.sign(SignerBES.java:122)
...
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at xades4j.providers.impl.PKCS11KeyStoreKeyingDataProvider.createPkcs11Provider(PKCS11KeyStoreKeyingDataProvider.java:198)
... 8 more
Caused by: java.security.ProviderException: Error parsing configuration
at sun.security.pkcs11.Config.getConfig(Config.java:88)
at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:129)
at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:107)
... 13 more
Caused by: sun.security.pkcs11.ConfigurationException: Unexpected value Token['('], line 2
at sun.security.pkcs11.Config.excToken(Config.java:375)
at sun.security.pkcs11.Config.parseLine(Config.java:595)
at sun.security.pkcs11.Config.parseLibrary(Config.java:666)
at sun.security.pkcs11.Config.parse(Config.java:398)
at sun.security.pkcs11.Config.<init>(Config.java:220)
at sun.security.pkcs11.Config.getConfig(Config.java:84)
... 15 more
La trace d'exception similaire est généré également dans les cas où je fournir un chemin ou un chemin vide vers un fichier de bibliothèque inexistant.
Que devrait être dans la bibliothèque native pour l'utiliser à partir de Xades4J? Cette bibliothèque native devrait-elle supporter une interface universellement acceptée? Peut-être Xades4J est approprié uniquement pour les cartes à puce qui sont émises par le gouvernement de l'Espagne?