标签: digital-signature

如何签署自定义JCE安全提供程序

Sun的PKCS11 JCE安全提供程序缺少我们需要的一些功能.
所以我使用原始资源编写了一个增强版本.

遗憾的是,JCE基础结构拒绝新的提供程序
"JCE无法对提供程序进行身份验证",
因为它未正确签名.

javax.crypto.JceSecurity.verifyProviderJar(...)抛出.
(它叫javax.crypto.JarVerifier.verify())

有关如何签署新提供商以使其与JCE一起使用的任何建议?

java security jce digital-signature

11
推荐指数
2
解决办法
2万
查看次数

如何从C#应用程序发送已签名的电子邮件?

我需要从我的C#.NET应用程序中发送签名的电子邮件.这是最简单的方法吗?

.net c# email cryptography digital-signature

11
推荐指数
1
解决办法
2975
查看次数

将数字签名插入现有的pdf文件中

我需要使用rails应用程序服务器将数字签名插入到现有的pdf文件中.(基本上,客户端上传pdf文件,服务器使用本地证书对其进行签名)

我一直在使用JSignpdf将数字签名插入到pdf文件中,并开始探索ruby的宝石......

我在rubypdf网站http://soft.rubypdf.com/software/pdf-digital-signe上找到了另一个可移植文件,但在ruby中找不到任何宝石甚至示例代码.

我还看了OpenSSL的数字签名验证,但无法理解如何使用本地证书文件对现有文档进行实际签名.

我还在http://code.google.com/p/origami-pdf/上达到了一个高峰,但对于一个假设"简单"(至少在概念上)的任务来说,这似乎有点苛刻.

有什么想法/建议吗?

谢谢

ruby pdf digital-signature

11
推荐指数
1
解决办法
8048
查看次数

使用数字签名生成PDF

是否可以使用数字签名在PHP中生成PDF文件?开源解决方案是首选.

php pdf-generation digital-signature

10
推荐指数
2
解决办法
2万
查看次数

在Ruby中规范化XML

我正在使用Ruby/Rails开发SAML网关,并且我正在尝试编写一些代码来验证传入SAML响应的xml数字签名与原始服务的x509证书.

我的问题:签名依赖于XML的规范化版本被散列,然后签约,我无法找到一个Ruby的lib /宝石,将规范化每个XML 规范.我在rubyforge上发现了一个超级旧的宝石,但是如果像nokogiri这样的功能支持这种功能我会更感兴趣(来自nokogiri docs,它没有).

我已经广泛搜索过了,但我想在这里问一下是否有人有任何好的见解,然后再尝试编写我自己的版本或重新编写现有的c14n-r库.

ruby xml saml digital-signature

10
推荐指数
1
解决办法
3704
查看次数

验证Authenticode签名是否来自我们公司的自动更新程序

我正在实现自动更新功能,并需要一些有关如何使用最佳实践安全地执行此操作的建议.我想使用下载文件的Authenticode签名来验证它是否可以安全运行(即来自我们公司并且没有被篡改).我的问题与问题#2008519非常相似.

最底线的问题:检查自动更新功能的Authenticode签名的最佳,最安全的方法是什么?应检查证书中的哪些字段?要求是:(1)检查签名是否有效,(2)检查签名是否有效,(3)旧客户仍然可以在我的证书到期时更新,我得到一个新签名.

以下是我研究的一些背景信息/想法:我相信这可以分为两个步骤:

  1. 验证签名是否有效.我相信这应该很容易使用WinVerifyTrust,如http://msdn.microsoft.com/en-us/library/aa382384(VS.85).aspx中所述 - 我不认为这里有问题.

  2. 验证签名是否与我们公司相对应,而不是其他公司.这似乎是一个更难回答的问题:

一种可能性是检查签名中的一些字符串.可以通过MS KB文章#323809的代码获得,但是本文不会就应该为这种类型的应用程序(或任何其他类似的)检查哪些字段提出建议. 问题#1072540还说明了如何获取某些证书信息,但同样不建议实际检查哪些字段.我担心的是字符串可能不是最好的检查:例如,如果另一个人能够获得具有相同名称的证书,该怎么办?或者,如果我们有正当理由在将来更改字符串?

问题的人#2008519有一个非常相似的要求.他对"TrustedByUs"功能的需求与我的相同.但是,他通过比较公钥来进行检查.虽然这可以在短期内起作用,但似乎它不适用于自动更新功能.这是因为代码签名证书最长有效期为2 - 3年.因此,在将来,当我们在2年内购买新证书时,由于公钥的更改,旧客户将无法再更新.

c windows cryptography authenticode digital-signature

10
推荐指数
1
解决办法
1615
查看次数

如何使用Java XML中的引用URI加载外部资源

我试图从URI引用中提取XML节点.此URI引用由XAdES4j签名者生成,并且可以引用同一XML文件或同一文件夹中的节点.

我希望加载引用会很简单

XMLSignatureInput referencedXML = ResourceResolver.resolveStatic(referenceNode.getAttributeNode("URI"), referenceDoc.getBaseURI());
Run Code Online (Sandbox Code Playgroud)

然而,这只是给我一个NullPointerException没有有用的消息.两个参数都是非null,在一个简单的例子中,URI属性是"data.xml",referenceDoc基URI是"/Users/ryan/.../test-files/signature.xml.data.xml驻留在相同的test-files目录.

URI可以指向文件中的元素,所以我希望有一个参考加载器可以为我处理这种复杂性.我错过了什么?!

编辑:

我试图加载的引用是:

<ds:Reference Id="xmldsig-c6050e36-d9e7-46d9-ac5f-447d1bbb405f-ref0" URI="lote.xml" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
Run Code Online (Sandbox Code Playgroud)

java xml reference digital-signature

10
推荐指数
1
解决办法
1207
查看次数

在Java中加载原始的64字节长ECDSA公钥

我有一个原始(r,s)格式的ECDSA NIST P-256公钥.似乎没有简单的方法将它加载到实现java.security.interfaces.ECPublicKey的对象中.

加载64字节公钥的最简洁方法是什么,以便可以用来检查签名?

java cryptography digital-signature public-key ecdsa

10
推荐指数
4
解决办法
6105
查看次数

使用 keyUsage 创建自签名证书

我正在使用自签名的数字签名证书签署 PDF,并且我正在寻找一种方法来添加keyUsage链接)我找到了这篇文章,并相应地更改了我的 openssl.cnf。

req_extensions = v3_req
[ v3_req ]
basicConstraints = CA:TRUE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment,dataEncipherment

我正在使用下一个代码对数字签名进行自签名:

openssl genrsa -des3 -passout pass:1234 -out aaa.private.pem -extensions v3_req

openssl req -passout pass:1234 -subj "/C=IL/ST= - /L=/O=/CN=AB" -utf8 -key aaa.private.pem -passin pass:1234 -new > aaa.cert. csr -extensions v3_req

openssl rsa -in aaa.private.pem -passin pass:1234 -out aaa.key

openssl x509 -req -days 3650 -in aaa.cert.csr -out aaa.cert -signkey aaa.key -CA myCA.ca.cert -CAkey myCA.ca.key -CAcreateserial -extensions v3_req

openssl pkcs12 …

openssl digital-signature

10
推荐指数
0
解决办法
5684
查看次数

Chrome下的数字签名小程序的替代方案

目前我们已经开发出一个可以使用java applet对文档进行数字签名的系统.然而,由于禁止使用chrome,我们正在寻找替代数字签名解决方案.

目前签署的工作方式如下:

  1. HTTP GET被发送到servlet以获取将要签名的文档;
  2. 小程序启动,数字签名驱动程序从文件系统中提取,用户输入PIN;
  3. applet获取认证链,检查CRL/OSCP并签署文档;
  4. applet将已签名文件的多部分帖子发送到系统中的servlet.

一种替代解决方案是在浏览器中导入证书并使用js进行签名.但这不是一个用户友好的解决方案.

另一个解决方案可能是要求用户使用JNLP下载运行程序,该程序下载并签署文档并使用HTTP多部分POST自动上载它.这种方法的缺点是它需要额外的用户交互(下载操作)而我们丢失浏览器http会话,因此我们必须再次进行身份验证.

哪个更可行?你能想到另类吗?

java applet google-chrome digital-signature

10
推荐指数
1
解决办法
2688
查看次数