嗨,我找不到一种方法来转换不透明的pkcs#7(p7m)在明文deatached smime中,以便签名的内容可以由常规的mime库处理.
我想取p7m文件并将其转换为一个有效签名的smime消息.
步骤应该是:
从p7m中提取签名内容
从p7m中提取cms结构
将所有内容打包在一个带有分离签名的新smime结构中
这个操作可以吗?
我搜索过openssl手册,但我找不到办法.
这是我想要做的:
所以现在我面临的问题是如何在步骤3中执行此操作(是).如果签名在服务器上没有问题,我有一些html-> php-> pdf类可以使用数字签名进行签名但签名必须是在服务器上作为文件.问题是,我怎样才能直接在服务器上进行.用户选择是,读取签名(从他的计算机上的读者)并发送到服务器并完成签名.在这里,我相信如果没有像Java这样的东西,我就无法做到.在我看来,PHP和JavaScript肯定对于这个动作来说还不够.
有没有人遇到过这样的问题?也许一些准备使用的库?
PS不太确定标签是否正确,但无法弄清楚要放哪个.
我有一个在浏览器中签署文本字符串的Javascript.它在Internet Explorer下使用CAPICOM,在Mozilla浏览器下使用window.crypto.签名过程后,我收到一个BASE64编码签名.
使用HTTPS我将签名和文本字符串上传到带有PHP应用程序的Web服务器.从SSL(HTTPS)我收到用户的证书.从这个证书我可以提取用户的公钥.
现在我想验证签名文本字符串的签名以及用户的证书和公钥.我试过openssl_verify PHP函数没有成功.
我总是收到一个错误:
错误:0408D077:rsa例程:FIPS_RSA_VERIFY:签名长度错误
不幸的是我无法验证签名?我无法提供演示或示例,因为它目前仅在本地网络中.
javascript php digital-certificate capicom digital-signature
我正在使用MEAN堆栈,我想为具有表单的员工实现数字签名,但我找不到关于此主题的任何库或教程.
有没有人这样做过?这样做的正确方法是什么?
是否可以使用带有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)
谢谢!
我收到了 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 的答案,以下是解决方案: …
我们正在努力使用signtool.exe 摘要选项来优化数字签名过程。到目前为止,工作流程如下所示:
有没有办法在签名服务器上执行时间戳?
我正在对 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) 我有一个从第三方 CA 购买的数字证书,我想用它来签署包含大量库文件/包 (.bpl) 的软件。但是,一一签署需要花费很多时间,我想知道有什么方法可以让我用更短的时间签署所有文件?
我当前用来签署文件的命令如下:
signtool.exe sign /tr http://timestamp.sectigo.com /td sha256 /fd sha256 /a "Insert_path_to_the_file_you_wish_to_sign"
我有一个正确的、有效的、LTV 的adbe.pkcs7.detached PDF 签名实现,它是按照ISO32000 2008-1和RFC5652指南制作的。现在我还尝试允许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 签名?
java ×3
pdfbox ×2
php ×2
signtool ×2
angularjs ×1
bouncycastle ×1
c# ×1
capicom ×1
certificate ×1
code-signing ×1
javascript ×1
jwt ×1
openssl ×1
pdf ×1
pkcs#7 ×1
signedxml ×1
signing ×1
smime ×1
windows ×1