当前位置: 首页 > 知识库问答 >
问题:

Xades4J兼容的PKCS11本机库中应该包含哪些内容?

贺兴昌
2023-03-14

在https://github.com/luisgoncalves/xades4j/wiki/definingkeyingdata中提到,存储在智能卡中的密钥和证书可以用于对XML文档进行签名。代码示例中提到了本机库:

KeyingDataProvider kp = new PKCS11KeyStoreKeyingDataProvider(
               "path/to/native/lib",
               "name",
               new FirstCertificateSelector(),
               null, null, false);

但是这个本机库中应该有什么,是dll还是Java jar,库应该导出哪些函数?我尝试使用来自我国数字签名包发行版的库pkcs11wrapper-1.2.18.jar和pkcs11wrapper.dll,但是抛出了异常

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

当我提供空路径或不存在库文件的路径时,也会生成类似的异常跟踪。

要从XADES4J中使用它,本机库中应该包含哪些内容?这个本机库是否支持一些被普遍接受的接口。也许Xades4J只适用于西班牙政府发行的智能卡?

共有1个答案

端木震博
2023-03-14

即来自卡提供商的驱动程序。要使用智能卡,您需要安装一些软件。该软件(通常)有一些不错的界面,但它也安装了驱动程序(windows的DLL,unix的也是)。

  • 葡萄牙卡
  • 比利时卡

回到XADES4J:

static protected String PTCC_PKCS11_LIB_PATH = "C:\\Windows\\System32\\pteidpkcs11.dll";
signatureToken = new PKCS11SignatureToken("/usr/local/lib/opensc-pkcs11.so", "22975".toCharArray(), 2);

请参阅以下内容:使用PKCS#11和iText使用eID签名PDF

 类似资料:
  • 问题内容: 在Java中,在代码中声明关键部分的惯用方式如下: 几乎所有块都在上同步 ,但这是否有特定原因?还有其他可能性吗?是否有关于同步对象的最佳实践?(例如?的私有实例) 问题答案: 首先,请注意以下代码段是相同的。 和: 做 完全一样的事情 。除了代码的可读性和样式之外,它们都不是其中之一。 当您同步方法或代码块时,重要的是要知道 为什么 要这样做,要锁定的 对象 到底是 什么,目的 是

  • junit-vintage engine是否意味着与JUnit4.12.x之前的版本兼容? 我将异常的来源缩小到VintageTestDescriptor.java中的几行(盯着第86行看) Category在JUnit4.12的实验包中,但似乎在JUnit4.7中没有。我找不到doc上的junit版本的复古引擎是兼容的。

  • 我有个问题。尝试改变版本(就像它在互联网上说的),但没有帮助。我已经读过了,这些答案修正了应用程序的类路径,使它包含一个单一的、兼容的org.springframework.plugin.core.pluginregistry版本,但它也没有帮助。 问题: 更正应用程序的类路径,使其包含Org.SpringFramework.http.Converter.Support.AllEncompassi

  • 在Karaf功能文件中,如果我包含某些捆绑包,那么Karaf将停止正常工作。 我如何知道哪些包不应该包含在特征文件中?例如,如果我在Windows上的Karaf中的特性文件中添加了这些包,Karaf会不高兴并表现得很奇怪。我认为这是因为Karaf已经为这些包提供了Java接口。 另外,是否有编程方法可以确定这一点? 是否有我不应包括的捆绑包列表? 我知道Karaf使用pax-logging而不是那

  • 我正在詹金斯建立一个新的多模块梯度项目,并试图让sonarqube分析它,但我遇到了几个不兼容的问题,我还没有能够解决。 我正在考虑使用 null

  • 我正在尝试进入机器学习领域,并决定自己尝试一些东西。我写了一个小的井字游戏。到目前为止,计算机使用随机移动与自己对弈。 现在,我想通过编写一个代理来应用强化学习,该代理将根据它对董事会当前状态的知识进行探索或利用。 我不明白的部分是这样的:代理用什么来为当前状态训练自己?假设一个RNG机器人玩家这样做: [..][..][..] […][x][o] [..][..][..] 现在代理必须决定最好的