- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在使用 pyPkcs11 来签署文件。
以下调用适用于使用 RSA 和 sha256 签署常见文件,
session.sign(privKey, toSign, Mechanism(CKM_SHA256_RSA_PKCS, None)
但是我的一些文件已经经过哈希处理 (sha256),并且签名需要提供与此 openSSL 命令给出的输出相同的输出:
openssl pkeyutl -sign -pkeyopt digest:sha256 -in <inFilePath> -inkey <keyPath> -out <outFilePath>
我尝试了以下调用,它不会在签名之前生成文件的哈希值,
session.sign(privKey, toSign, Mechanism(CKM_RSA_PKCS, None)
但是结果不是我预期的,根据这篇文章的第一个答案CKM_RSA_PKCS vs CKM_RSA_X_509 mechanisms in PKCS#11 ,
CKM_RSA_PKCS on the other hand also performs the padding as defined in the PKCS#1 standards. This padding is defined within EMSA-PKCS1-v1_5, steps 3, 4 and 5. This means that this mechanism should only accept messages that are 11 bytes shorter than the size of the modulus. To create a valid RSASSA-PKCS1-v1_5 signature, you need to perform steps 1 and 2 of EMSA-PKCS1-v1_5 yourself.
经过一些研究,我的文件似乎包含RFC 3447描述的签名的第一步。 ,因此缺少的部分是第二个部分,其中生成了 ASN.1 值。
我可以使用 pkcs11 强制执行此操作吗?
PKCS#11 documentation似乎没有包含任何相关信息。
最佳答案
我看到有两种方法可以做到这一点;合适的取决于 token (并非所有 token /包装器都执行所有机制)。
30 31 30 0d 06 09 60 86 48 01 65 03 04 02 01 05 00 04 20
产生一个 51 个八位字节的字符串,这实际上是 ASN.1 DER哈希类型和值的编码
DigestInfo ::= SEQUENCE {digestAlgorithm DigestAlgorithm,digest OCTET STRING}2. 进一步在左侧追加 k-51个八位字节的字符串(其中 k-51-3为
FF
)
00 01 FF FF FF FF..FF FF FF FF 00
产生一个k八位字节字符串3. 使用CKM_RSA_X_509机制进行签名(长度为k八位字节)。
免责声明:我没有检查,最近也没有使用过 PKCS#11 设备。
注意:虽然没有已知的针对其正确实现的攻击,但使用 PKCS#1 v1.5 签名填充越来越令人不悦;例如French authorities recommend
RecomSignAsym-1. Il est recommandé d’employer des mécanismes de signature asymétrique disposant d’une preuve de sécurité.
或者,用英语:
It is recommended to use asymmetric signature mechanisms featuring a security proof
他们提到了 RSA-SSA-PSS(原文如此)。作为奖励,该机制的 PKCS#11 实现是 CKM_RSA_PKCS_PSS 机制,它接受哈希值,而不是要签名的数据,从而使所要求的内容变得微不足道。
关于rsa - 使用 pkcs#11 api 使用 RSA 签署 sha256 哈希?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47106122/
有人可以告诉我签署我的 clickonce 应用程序的步骤吗? 如果从某人那里购买证书,我该如何安装它在我的开发盒以及我希望它运行的服务器上? 请概述步骤。 马尔科姆 最佳答案 以下是我相信您正在执行
我正在使用命令行 jarsigner.exe -keystore Keys.jks base.apk debug0 使用我自己的 key 退出 APK ,在删除 META-INF/CERT.RSA、C
我使用 iTextSharp 签署 PDF 文件。但是 Adobe Reader 无法验证我的签名。我使用证书颁发机构生成的 SHA-2 测试证书(我也尝试过 SHA-1)。我已经为该机构的测试证
我在尝试签署 F# 类库项目时遇到了很多麻烦。 首先我试过这个thread ,使用 AssemblyKeyFileAttribute 但没有成功。 我还尝试将标志“--keyfile:keyfile.
我正在尝试掌握 .NET dll/程序集的正式签名。 尤其 何时以及如何使用私钥 创建/控制私钥的最佳实践 需要签署什么样的模块/最佳实践 最佳答案 请参阅使用 Strong Name Signatu
我有一个由五个项目组成的解决方案,每个项目都编译成单独的程序集。现在我正在对它们进行代码签名,但我很确定我做错了。这里的最佳做法是什么? 用不同的 key 对每个签名;确保密码不同 用不同的 key
我有一个由五个项目组成的解决方案,每个项目都编译为单独的程序集。现在我正在对它们进行代码签名,但我很确定我做错了。这里的最佳实践是什么? 使用不同的 key 对每个签名进行签名;确保密码不同 使用不同
尝试在 Java 中签署 SOAP 消息时抛出异常: 14:47:39.896 [AWT-EventQueue-0] ERROR com.ui.FinestraPrincipal - WSHandle
我正在运行 java web start 应用程序。由于应用程序数字签名已过期。我已经从 CA 购买了签名,并使用 storetype 作为 pkcs12 对我的 jar 文件进行了签名。 对 JNL
我已经在jar中手动添加了一些类文件。并在服务器中替换。但服务器没有拿出这个新的 jar 说:java.lang.SecurityException:类“test.TestProcess2”的签名者信
我想使用 keytool 对我的插件 jar 进行签名以生成 key 。 我知道有 -validity 选项,但如何设置它以使插件始终有效且永不过期。 谢谢 最佳答案 查看 keytool 文档: V
我有一个需要互联网访问的 Java 应用程序,因为它通过 WebView 嵌入了 Web 浏览器。 JavaFX 组件。 如果应用程序未打包在 Jar 中,则执行不会出现问题。但是,当打包在 Jar
我以前做过,但我完全忘记了如何签署 activeX 控件? 最佳答案 Digital Signing for ActiveX Components (MSDN) 关于activex - 签署 Acti
不知不觉中我删除了通常命名如下的钥匙串(keychain)系统证书 Software Signing com.apple.systemdefault com.apple.kerberos.kdc Ap
我尝试了一些基于 iText v1 或 v2 的数字 PDF 签名实用程序,发现似乎整个 PDF 都加载到内存中(对于 60M PDF 进程可能需要多达 300-400MB 的内存)。 最近的 iTe
我正在尝试使用 Python 对 Amazon 的 SimpleDB 服务进行 API 调用。例如,我使用的是最简单的请求 ListDomains。然而,无论我如何尝试,响应始终是“我们计算的请求签名
我的同事给了我一个Java项目来支持和增强。我需要签署 .jar 文件。我只找到了下一个文件:genkey.bat、project.cer、signjar.bat 和 keystore-jar.jar
目前我正在升级我的旧应用程序,它是使用 itextsharp 5.0.0 完成的到 5.4.5(最新)...但是我在获取等效代码时遇到了问题 PdfSignatureAppearance.SetCry
如果我有一个作为 API 请求发送的复杂对象(例如下面的订单),我应该在生成签名时包括所有属性还是应该只使用一个子集? 我问是因为我不清楚,而且从查看其他 API 的请求参数来看,请求参数是扁平和简单
为什么 WP7 项目不支持强名称签名?项目属性中没有签名选项卡。 无论如何,我已经使用 AssemblyInfo.cs 中的 AssemblyKeyFile 和 AssemblyDelaySign 属
我是一名优秀的程序员,十分优秀!