标签: digital-signature

如何使用Delphi 2009验证SOAP签名?

我正在使用D2009中的Clever Internet Suite来签署SOAP消息,并且需要一种在本地验证签名文档的方法.服务器保持弹出SOAP消息,并显示错误"哈希值不匹配".

我必须在提交之前略微操作文档,而不是签名部分,因此我需要找出这种操作是否导致错误.我还可以获取服务器收到的文档,并希望验证该副本以查看传输中是否有变化.

有没有办法使用Clever Suite?或者也许是Crypto.api?即使是我可以提供文档和公钥的独立应用程序也没问题.

感谢您提供的任何信息.

delphi soap delphi-2009 digital-signature

14
推荐指数
1
解决办法
479
查看次数

使用JavaScript在浏览器的密钥库中访问签名/加密 - 示例代码?(WebCryptoAPI)

我有一个Web服务器,只允许使用X509身份验证进行访问.奇迹般有效.现在我想扩展X509证书(存储在用户的浏览器密钥库中)的使用

  • 在将数据发送到服务器之前对其进行签名(使用JavaScript和HTTPPost)
  • 解密从服务器读取的数据(使用存储在那里的用户公钥加密)

我发现这个例子做的RSA签名非常接近....只有它从HTML文本区域获取密钥.我想从密钥库中读取它.现在加密非常不稳定:

我正在寻找签名和加密的一些工作示例(我有一些Java,但不是基于浏览器的JavaScript).

非常感谢帮助

javascript pki digital-signature webcrypto-api

14
推荐指数
1
解决办法
1万
查看次数

m_safeCertContext是一个无效的句柄

我一直在努力解决问题,也许你们可以指出我正确的方向.

我正试图通过https连接在网络服务器上对pdf进行数字签名.

在页面加载时我正在这样做:

HttpClientCertificate cs = Request.ClientCertificate;
X509Certificate card = new X509Certificate(cs.Certificate);
Org.BouncyCastle.X509.X509CertificateParser cp = new Org.BouncyCastle.X509.X509CertificateParser();
 Org.BouncyCastle.X509.X509Certificate[] chain = new Org.BouncyCastle.X509.X509Certificate[] { cp.ReadCertificate(card.GetRawCertData())};
Run Code Online (Sandbox Code Playgroud)

我在最后一行代码中收到错误"m_safeCertContext是一个无效的句柄".

请注意:

  • 我使用2个完全不同的证书得到同样的错误.
  • 证书正被检索到"卡"变量ok.
  • 我以前把卡拿到了X509Certificate2,但我昨天在某处读到了我无法通过转换为X509Certificate然后向下转换到X509Certificate2来解决错误.这是其中之一"嗯......这没有任何意义,但我还没有尝试过"的时刻.
  • 我试图将[System.Security.SecurityCritical, System.Security.SecurityTreatAsSafe]属性添加到所有方法甚至类中以查看它是否可行...没有这样的运气.

任何人都可以给我一个暗示吗?

c# digital-certificate digital-signature

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

用于管理Java中的XAdES签名的库

我正在寻找一个允许创建和验证XAdES签名的Java库(格式越多越好:XAdES-BES,XAdES-C,XAdES-XL等).

我发现最有趣的实现是:

  • Java XML数字签名API(JSR 105)(= Java SE 6中包含的API),它基于以下内容;
  • Apache Santuario(http://santuario.apache.org/),它仅为基本功能提供有用的支持;
  • XAdES4j(http://code.google.com/p/xades4j/,精彩的演示文稿:http://prezi.com/06vyxbgohncv/xades4j-en/ ),这似乎很有趣,因为它"可以生成,验证和扩展XAdES主要表单中的签名:XAdES-BES,XAdES-EPES,XAdES-T和XAdES-C.此外,通过丰富现有签名来支持扩展表单".然而,这是一个thesys的结果,它只有一个开发人员;
  • eID数字签名服务(http://code.google.com/p/eid-dss/),由比利时联邦ICT部门开发,支持XAdES-XL格式.

您建议使用哪个或建立哪个?

java xml archiving digital-signature xml-signature

13
推荐指数
1
解决办法
1万
查看次数

如何使用OpenSSL计算RSA-SHA1(sha1WithRSAEncryption)值

我对RSA-SHA1感到困惑,我认为它是RSA_private_encrypt(SHA1(消息)).但我无法获得正确的签名值.有什么不对的吗?

openssl cryptography rsa digital-signature xml-signature

13
推荐指数
1
解决办法
1万
查看次数

Chrome中的电子智能卡数字签名

对于在浏览器上运行且需要专业人员签名的电子处方系统,我们使用Java小程序对XML请求进行签名,然后使用智能卡将其发送给WS.

但是自版本42以来,Chrome默认禁用NPAPI支持,并且在2015年9月的未来版本中,它将被完全禁用,然后applet根本不可用.

Chrome NPAPI弃用页面指向WebCrypto和TLS作为替代方案.但似乎WebCrypto 已经超出智能卡的支持范围,并且似乎TLS仅涉及加密协议,并且它没有提供使用电子卡的方法.

有人使用完全浏览器本机解决方案来签署文档并对流程有很好的控制.至少它将是nedeed:

  • 没有确认,也没有用户签名的XML请求的可视化.因为签名是对用户没有价值的内部技术请求,并且应用程序在内部LAN中受控且受信任的系统中运行.

google-chrome npapi smartcard digital-signature webcrypto-api

13
推荐指数
2
解决办法
4392
查看次数

生成数字签名但具有特定的命名空间前缀("ds:")

我对XML文件进行数字签名,但需要签名标记包含名称空间前缀"ds".我研究了很多谷歌,发现了许多相同的问题,但没有令人满意的答案.

我试图手动将"ds"放在文件中,但签名变得无效.标记"SignatureValue"对标记"SignedInfo"进行签名,因此签名变为无效.

有人可以告诉我如何生成标签"SignatureValue"的值,这样我可以在添加前缀"ds"后替换签名吗?

c# xml prefixes digital-signature

13
推荐指数
1
解决办法
4871
查看次数

InvalidKeyException:无效的密钥格式 java

我正在尝试从 Vault 检索公钥。它被秘密存储。

我正在尝试将检索到的字符串转换为公钥以验证签名。

示例公钥字符串如下所示

-----开始公钥----- MIIBITANBgkqhkiG9w0BAQEFAAOCAQ4AMIIBCQKCAQBWeqVZ8Ub/o4VQ8nnm888B /Ydqv2IN5bObxupZ7njMKuT/WPgwlK8+Wc0Xjhy82E51XW6E4/0um8sIQ1cxvoSO QsrfkRagD+ O9OrjQbb2TqrilDDhFx9EGjXuZpR3brDUufCG6SkypqiKSaMuoVoax c82TZ1uAIp5OSroWt1IdUkvam24X/7zDIf1l8XWCmbfCDrBb73hBYA4MgTjsSckC 5nz+GLcWTfz0wze4lwHCi1KYFv+1+WcYHWPLbqL tc8nzVqkuP5Ne/9HAFkaEAIw5 fKLccksaT/TLyIcrALcfuABlgX1yeBulVcbTAp+WiYRvo9+FKK23pbwkh+uy0tq1 AgMBAAE= -----结束公钥-----

我在我的秘密值中添加了相同的内容,并且没有格式。

但是,使用下面的代码,我在行中遇到错误 InvalidKeyException: INVALID KEY FORMAT

 PublicKey publicKey = fact.generatePublic(pubKeySpec);
Run Code Online (Sandbox Code Playgroud)

这是代码:

            String publicKeyAsString = secretClient.getSecret("key-name").getValue();
    
            byte[] keyContentAsBytes = publicKeyAsString.getBytes();
    
            KeyFactory fact = KeyFactory.getInstance("RSA");
            X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(keyContentAsBytes);
            PublicKey publicKey = fact.generatePublic(pubKeySpec);
Run Code Online (Sandbox Code Playgroud)

用堆栈跟踪编辑:

Caused by: java.security.InvalidKeyException: invalid key format
    at sun.security.x509.X509Key.decode(X509Key.java:386) ~[?:?]
    at sun.security.x509.X509Key.decode(X509Key.java:401) ~[?:?]
    at sun.security.rsa.RSAPublicKeyImpl.<init>(RSAPublicKeyImpl.java:122) ~[?:?]
    at sun.security.rsa.RSAKeyFactory.generatePublic(RSAKeyFactory.java:330) ~[?:?]
    at sun.security.rsa.RSAKeyFactory.engineGeneratePublic(RSAKeyFactory.java:235) ~[?:?]
Run Code Online (Sandbox Code Playgroud)

编辑:用于测试的公钥:

-----开始公钥----- MIIBITANBgkqhkiG9w0BAQEFAAOCAQ4AMIIBCQKCAQBWeqVZ8Ub/o4VQ8nnm888B /Ydqv2IN5bObxupZ7njMKuT/WPgwlK8+Wc0Xjhy82E51XW6E4/0um8sIQ1cxvoSO QsrfkRagD+ O9OrjQbb2TqrilDDhFx9EGjXuZpR3brDUufCG6SkypqiKSaMuoVoax c82TZ1uAIp5OSroWt1IdUkvam24X/7zDIf1l8XWCmbfCDrBb73hBYA4MgTjsSckC 5nz+GLcWTfz0wze4lwHCi1KYFv+1+WcYHWPLbqL tc8nzVqkuP5Ne/9HAFkaEAIw5 fKLccksaT/TLyIcrALcfuABlgX1yeBulVcbTAp+WiYRvo9+FKK23pbwkh+uy0tq1 …

java digital-signature public-key-encryption public-key

13
推荐指数
1
解决办法
1万
查看次数

使用 SSH 与 GPG 签署提交有什么区别?

\n

GitHub 现在支持 SSH 提交验证,因此您可以使用自行生成的 SSH 公钥在本地签署提交和标签,这将使其他人对您所做更改的来源充满信心。如果提交或标签具有可加密验证的 SSH 签名,GitHub 会将提交或标签设为“已验证”或“部分验证”。

\n

如果您已使用 SSH 密钥通过 GitHub 进行身份验证,现在可以上传相同或不同的密钥对\xe2\x80\x99s 公钥以将其用作签名密钥。您可以添加到帐户的签名密钥数量没有限制。有关更多信息,请访问GitHub 文档中的SSH 提交验证。

\n
\n

鉴于最近发生的事件,我想知道:使用 SSH 密钥与 GPG 密钥签署提交之间有什么区别?

\n

注意: 这是一个类似的问题,询问 GPG 和 SSH 之间的一般差异。这个问题具体是关于使用其中一种或另一种进行签名之间的区别。

\n

git ssh github gnupg digital-signature

13
推荐指数
2
解决办法
4440
查看次数

NDK应用程序签名检查

我在应用程序中有一些安全密钥.我想要安全地存储它.我喜欢将它存储在本机共享库中(可能是从某些代码生成的).之后,我希望它通过一种方法返回,该方法将检查原始APK的签名.所以没有人可以使用此文件,除了可信应用程序.我知道,ndk库也可以反编译,但是对本机代码进行逆向工程甚至比java .class文件更难.

题:

  1. 有没有办法从本机代码(c/c ++)中调用原始apk的签名?
  2. 如何确保从受信任的应用程序调用库?

java security android digital-signature android-ndk

12
推荐指数
2
解决办法
4012
查看次数