带有 win32 低级别消息 API 的 CAdES 签名
CAdES signature with win32 low level message apis
我正在尝试使用低级消息函数来创建符合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
相关文章:
- 用于访问容器<T>数据成员的正确 API
- 如何使用Luacneneneba API正确读取字符串和表参数
- C++MySQL C api用户输入行
- 如何使用 AWS Transcribe C++ API 中的'StartTranscriptionJobRequest'?
- 将std::string传递给WriteConsole API
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- 在gtest.中使用fff.h模拟系统API
- 有没有任务栏API可以立即应用注册表更改
- C++win32 API创建多个类似视口的窗口
- 使用libcurl提交批量url的正确BING Api POST url是什么
- 如何将真正的字符串从python c-api转换为python脚本
- 使用Qt框架在c ++类中创建API调用
- Libreoffice API (UNO):需要更改用户的 xTextField 文本
- 使用 WIN32 API (C/C++) 对特定树视图项进行着色
- 使用 Python Extension API 包装复杂C++类
- 如何使用 samtools C API 构建一个简单的主.cpp文件
- 第三方 API 中的编译错误 - Visual Studio
- Tensorflow c++ api undefined reference to 'tflite::D efaultErrorReporter()'
- clang 的 libFuzzer 可以在同一二进制文件中测试超过 1 个 API 吗?
- 带有 win32 低级别消息 API 的 CAdES 签名