问题描述
我正在尝试使用PKCS#11用JarSigner进行RSA-PSS-签名JAR文件。为了指定签名算法,JarSigner使用 sigalg 标志。 JDK 14 Docs of the JarSigner没有指定明确支持哪些标记。我已经测试过JarSigner接受“ RSASSA-PSS”作为有效算法。 JarSigner不接受Java加密服务提供程序(例如SunPKCS11加密服务提供程序)经常支持的“ SHA256withRSASSA-PSS”或类似的RSASSA-PSS变体。 尝试使用 sigalg “ RSASSA-PSS”签名时,JarSigner返回
jarsigner: unable to sign jar: java.security.SignatureException: Parameters required for RSASSA-PSS signature
此异常表示未设置PSS参数。我已将问题归结为JarSigner
- 无法通过命令行传递PSS参数(请参见JDK 14 Docs of the JarSigner)
- 从不设置PSS参数-JarSigner.java从不直接(参见第831至843行)或间接(参见Signature.java和P11PSSSignature.java)调用setParameter-> setEngineParameter-> setSigParams,即负责设置所需的PSS参数。
我错过了什么吗?如果是,我如何通过RSA-PSS签名JAR文件?如果否,这是一个错误吗?毕竟,JarSigner显然接受RSASSA-PSS作为有效的标志。还是在JarSigner和SunPKCS11实现之间不兼容?毕竟,在这种情况下,SunPKCS11可能只是使用硬编码的PSS参数值。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)