标签: digital-signature

从不透明的pkcs7 p7m转换为分离的smime

嗨,我找不到一种方法来转换不透明的pkcs#7(p7m)在明文deatached smime中,以便签名的内容可以由常规的mime库处理.

我想取p7m文件并将其转换为一个有效签名的smime消息.

步骤应该是:

  • 从p7m中提取签名内容

  • 从p7m中提取cms结构

  • 将所有内容打包在一个带有分离签名的新smime结构中

这个操作可以吗?

我搜索过openssl手册,但我找不到办法.

openssl smime digital-signature pkcs#7

6
推荐指数
1
解决办法
1376
查看次数

使用用户签名在服务器文档上签名PDF

这是我想要做的:

  1. 用户创建文档(html)
  2. 编辑 - >在服务器上保存PDF
  3. 询问用户是否要签署文件
    • (是)这是问题所在
    • (没有)没问题
  4. ???? (不重要)

所以现在我面临的问题是如何在步骤3中执行此操作(是).如果签名在服务器上没有问题,我有一些html-> php-> pdf类可以使用数字签名进行签名但签名必须是在服务器上作为文件.问题是,我怎样才能直接在服务器上进行.用户选择是,读取签名(从他的计算机上的读者)并发送到服务器并完成签名.在这里,我相信如果没有像Java这样的东西,我就无法做到.在我看来,PHP和JavaScript肯定对于这个动作来说还不够.

有没有人遇到过这样的问题?也许一些准备使用的库?

PS不太确定标签是否正确,但无法弄清楚要放哪个.

php java signing digital-signature

6
推荐指数
1
解决办法
6266
查看次数

如何使用PHP检查来自broswer的数字签名

我有一个在浏览器中签署文本字符串的Javascript.它在Internet Explorer下使用CAPICOM,在Mozilla浏览器下使用window.crypto.签名过程后,我收到一个BASE64编码签名.

使用HTTPS我将签名和文本字符串上传到带有PHP应用程序的Web服务器.从SSL(HTTPS)我收到用户的证书.从这个证书我可以提取用户的公钥.

现在我想验证签名文本字符串的签名以及用户的证书和公钥.我试过openssl_verify PHP函数没有成功.

我总是收到一个错误:

错误:0408D077:rsa例程:FIPS_RSA_VERIFY:签名长度错误

  • 我有证书,没关系;
  • 我有从证书中提取的公钥,它也经过验证和确定;
  • 我有签名(BASE64解码);

不幸的是我无法验证签名?我无法提供演示或示例,因为它目前仅在本地网络中.

javascript php digital-certificate capicom digital-signature

6
推荐指数
1
解决办法
4353
查看次数

使用AngularJS进行数字签名

我正在使用MEAN堆栈,我想为具有表单的员工实现数字签名,但我找不到关于此主题的任何库或教程.

有没有人这样做过?这样做的正确方法是什么?

digital-signature angularjs

6
推荐指数
2
解决办法
8425
查看次数

SignedXml CanonicalizationMethod - http://www.w3.org/2006/12/xml-c14n11

是否可以使用带有SignedXml的http://www.w3.org/2006/12/xml-c14n11 CanonicalizationMethod?

SignedXml signedXml = new SignedXml(xmlDoc);
signedXml.SignedInfo.CanonicalizationMethod = "http://www.w3.org/2006/12/xml-c14n11";
Run Code Online (Sandbox Code Playgroud)

扔了

System.Security.Cryptography.CryptographicException: Could not create the XML tr
ansformation identified by the URI http://www.w3.org/2006/12/xml-c14n11.
Run Code Online (Sandbox Code Playgroud)

谢谢!

c# digital-signature signedxml

6
推荐指数
1
解决办法
1482
查看次数

验证 JsonWebToken 签名

我收到了 JWT,想验证它的签名。它未加密,基于 64 编码并使用 HmacSha256 签名。它是用我知道的秘密签署的。

我似乎找不到任何如何在不使用https://jwt.io/上列出的第三方库(即 java-jwt、jpose4j 等)来验证签名的示例。

是否有可能做到这一点?

到目前为止我所拥有的:

private boolean validateSignature( String header, String data, String signature, String secretKey ) throws Exception {
    Base64 base64 = new Base64( true );
    SecretKeySpec secret = new SecretKeySpec( secretKey.getBytes(), "HmacSHA256" );
    Mac mac = Mac.getInstance( "HmacSHA256" );
    mac.init( secret );

    byte[] hmacDataBytes = mac.doFinal( data.getBytes( StandardCharsets.UTF_8.name()) );
    String hmacData = new String( hmacDataBytes );

    return hmacData.equals( signature ); // Compare signatures here...
}
Run Code Online (Sandbox Code Playgroud)

根据 @pedrofb 和 @jps 的答案,以下是解决方案: …

java digital-signature jwt

6
推荐指数
1
解决办法
4599
查看次数

Signtool.exe /dg /ds /di 选项和时间戳

我们正在努力使用signtool.exe 摘要选项来优化数字签名过程。到目前为止,工作流程如下所示:

  1. 在客户端上创建摘要:signtool.exe sign /f cert /fd sha256 /dg 。我的文件.dll
  2. MyFile.dll.dig摘要发送到我们的签名服务器。
  3. 在签名服务器上签名摘要:signtool.exe sign /f cert /fd sha256 /ds MyFile.dll.dig
  4. 将签名MyFile.dll.dig.signed发送回客户端。
  5. 在客户端创建签名:signtool.exe sign /di .MyFile.dll
  6. 在客户端添加时间戳:signtool.exe timestamp /tr http://some_timestamp_server /td sha256 MyFile.dll

有没有办法在签名服务器上执行时间戳?

code-signing digital-signature trusted-timestamp signtool

6
推荐指数
1
解决办法
1578
查看次数

Pdfbox 签名 - saveIncremental 与 saveIncrementalForExternalSigning

我正在对 pdf 文件进行签名,但我有些担心。从 pdfbox 示例中,我看到了两种签署 pdf 的方法。第一个是:

document.saveIncremental(output);
Run Code Online (Sandbox Code Playgroud)

第二种方式:

ExternalSigningSupport externalSigning = doc.saveIncrementalForExternalSigning(fos);
// invoke external signature service
byte[] cmsSignature = sign(externalSigning.getContent());

if (isLateExternalSigning()) {
    // this saves the file with a 0 signature
    externalSigning.setSignature(new byte[0]);
    // remember the offset (add 1 because of "<")
    int offset = signature.getByteRange()[1] + 1;
    // now write the signature at the correct offset without any PDFBox methods
    RandomAccessFile raf = new RandomAccessFile(signedFile, "rw");
    raf.seek(offset);
    raf.write(Hex.getBytes(cmsSignature));
    raf.close();
} else {
    // set signature bytes …
Run Code Online (Sandbox Code Playgroud)

java digital-signature pdfbox

6
推荐指数
1
解决办法
1558
查看次数

使用signtool.exe签署多个文件

我有一个从第三方 CA 购买的数字证书,我想用它来签署包含大量库文件/包 (.bpl) 的软件。但是,一一签署需要花费很多时间,我想知道有什么方法可以让我用更短的时间签署所有文件?

我当前用来签署文件的命令如下:
signtool.exe sign /tr http://timestamp.sectigo.com /td sha256 /fd sha256 /a "Insert_path_to_the_file_you_wish_to_sign"

windows certificate digital-signature signtool

6
推荐指数
1
解决办法
6714
查看次数

ETSI.CAdES.detached 和 adbe.pkcs7.detached PDF 签名之间的差异

我有一个正确的、有效的、LTV 的adbe.pkcs7.detached PDF 签名实现,它是按照ISO32000 2008-1RFC5652指南制作的。现在我还尝试允许ETSI EN 319 142-1中描述的ETSI.CAdES.detached类型签名。据我到目前为止所了解的,主要区别是/SubFilter值、DSS结构、ESS属性和document-time-stamp。为了符合该标准,所有这 4 项更改都是必要的吗?

如果是,最终的 PDF 文档是否具有与adbe.pkcs7.detached文档相同的长期功能 ?

ETSI文档中提到,有必要在过期前重新应用文档时间戳DSS以保持签名有效,为什么adbe.pkcs7.detached文档中不会发生这种情况以及如何避免这?

SignedData结构中的ESS属性究竟是如何构造的?其中是否还有其他变化?

该代码是使用 Java 中的 PDFBox 和 BouncyCastle 实现的,该库是否也能够实现 ETSI 签名?

pdf bouncycastle digital-signature pdfbox

6
推荐指数
1
解决办法
1606
查看次数