gpt4 book ai didi

c++ - 具有 win32 低级消息 api 的 CAdES 签名

转载 作者:太空宇宙 更新时间:2023-11-04 12:45:34 29 4
gpt4 key购买 nike

我正在尝试使用低级消息函数来创建符合 CAdES-BES 的签名。

签名必须采用正确的 PKCS#7 格式以及四个签名属性。

前两个,类型和散列是自动放入的,但加密库。

第三个是消息的时间。我能够使用 CryptEncodeObject 和 szOID_RSA_signingTime 来放置它“1.2.840.113549.1.9.5”。

第四个是签名证书,加密 API 不支持 OID,1.2.840.113549.1.9.16.2.47。

为了能够手动添加它,我必须知道 CryptEncodeObject 在内部是如何工作的,以及要编码的结构类型:

SigningCertificateV2 ::=  SEQUENCE {
certs SEQUENCE OF ESSCertIDv2,
policies SEQUENCE OF PolicyInformation OPTIONAL
}


ESSCertIDv2 ::= SEQUENCE {
hashAlgorithm AlgorithmIdentifier
DEFAULT {algorithm id-sha256},
certHash Hash,
issuerSerial IssuerSerial OPTIONAL
}

Hash ::= OCTET STRING

IssuerSerial ::= SEQUENCE {
issuer GeneralNames,
serialNumber CertificateSerialNumber
}

以及在完成之前必须包含的更多结构。

可以尝试使用 ASN.1 编译器来构建整个东西,然后使用 DER 编码器对其进行编码,但是有更简单的方法吗?

最佳答案

我做到了,您必须使用 ASN.1 编译器,然后使用 CMS 对签名属性进行编码。

https://www.codeproject.com/Articles/1256991/AdES-An-implementation-of-CAdES-for-Windows-in-Cpl

关于c++ - 具有 win32 低级消息 api 的 CAdES 签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51800563/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com