来自OpenSSL文档
使用命名曲线prime256v1(又名P-256)创建给定SHA-256散列值的ECDSA签名。
第二步:使用ECDSA_do_sign()计算SHA-256哈希值的ECDSA签名:
sig = ECDSA_do_sign(digest, 32, eckey);
if (sig == NULL) {
/* error */
}
或使用ECDSA_sign():
unsigned char *buffer, *pp;
int buf_len;
buf_len = ECDSA_size(eckey);
buffer = OPENSSL_malloc(buf_len);
pp = buffer;
if (ECDSA_sign(0, dgst, dgstlen, pp, &buf_len, eckey) == 0) {
/* error */
}
第三步:使用ECDSA_do_verify()验证创建的ECDSA签名:
ret = ECDSA_do_verify(digest, 32, sig, eckey);
或者使用ECDSA_verify():
ret = ECDSA_verify(0, digest, 32, buffer, buf_len, eckey);
最后评估返回值:
if (ret == 1) {
/* signature ok */
} else if (ret == 0) {
/* incorrect signature */
} else {
/* error */
}
EOF
这使我认识到,我需要验证使用ECDSA_do_sign
或ECDSA_ sign
创建的每个签名,对吗?创建的签名是否可能无效?
来自NIST PUB 186-4-数字签名标准第4.7节:
签字验证可由任何当事人(即签字人、预定接收人或任何其他当事人)使用签字人的公用钥匙进行。签字人似宜在将已签名的电文发送给预定收件人之前,核实计算出的签字是否正确。预期的收件人(或任何其他方)验证签名以确定其真实性。
(签字人是签字制作人)
PDF下载示例:https://drive.google.com/file/d/12wv1Pb7gh4vCKOGhX4cZ3aOrLSiOo4If/view?usp=sharing 因此,当PDF在A.Reader(连续版本)中打开时,它表示证书无效,因为对该文档所做的更改导致签名无效。 但我看不出有什么变化。我们自己的应用程序只添加了一个签名(证书),为数千个其他PDF添加了正确的签名。未执行其
当我使用带电子令牌的IText对PDF进行签名时,签名的PDF在Acrobat Adobe Reader中显示“至少一个签名无效”。我正在使用有效的电子代币。以下是签署Pdf的代码。
我一直在研究使用Maven POM为JavaFX项目生成可运行JAR文件的各种方法。每个问题都描述了相同的问题。令人沮丧的是,对于同一个目标,似乎有几种不同的解决方案。 问题: JAVAlang.SecurityException:清单主属性的签名文件摘要无效 在命令行上执行JAR文件时出错。虽然Netbean可以愉快地运行程序并调试程序。 诊断 关于这一点,有几个Stackoverflow和论坛
我正在使用iText 5.5.9和数字签名白皮书示例中给出的示例为PDF生成数字签名。 我得到了普通的数字签名外观。我需要的是一个数字签名,它显示一个图标,指示它的验证状态,就像这个例子中的黄色问号: 这个黄色问号会根据签名是否被验证而变成红色十字或绿色刻度。 在过去的两天里,我一直在搜索这篇文章,我看到的唯一区别是,我使用的数字证书是自签名的,而参考PDF中使用的数字证书是由Adobe Appr
作为我对客户机/服务器pdf签名研究的一部分,我测试了itext pdf延迟签名示例。不幸的是,我得到的合并空签名pdf和哈希值的pdf ie输出显示无效签名。 下面是我的代码片段 我正在使用pkcss11 usb令牌进行签名
PDF创建步骤: 通过添加空签名字段名称创建pdf:suhasb@gmail.com和nikhil.courser@gmail.com,使用原始的hello.pdf输出文件名hello_tag.pdf运行程序>tagpdfsignaturefields.java 从hello_tag.pdf文件中提取签名字段suhasb@gmail.com进行首次签名,输出文件名为hello_signd.pdf