我正在尝试构建一个 NodeJS/V8 桥来执行 openssl 操作。
其中之一是提取 PKCS#7 信封的内容。我想要的是相当于这个 cmd :
openssl smime -verify -inform DER -noverify
这只是在 PKCS#7 信封内输出纯内容。
我正在查看 CMS_* 操作,但看起来 CMS_verify 只应该返回一个 int (参见。http://www.openssl.org/docs/crypto/CMS_verify.html),我正在寻找字符串/如果验证成功,则为二进制内容。
这是我到目前为止得到的。如果实现这一点的代码对你们中的任何人来说都是微不足道的......那真是太棒了,因为 openssl 文档很烂,看起来整个网络上没有一个关于 CMS 的 C 代码......最后,这就是我一生中第一次做任何 C++!
PS:关于这些DecodeWrite
东西的额外问题,知道这是做什么的吗?
static Handle<Value> Verify(const Arguments& args) {
HandleScope scope;
ASSERT_IS_BUFFER(args[0]);
ssize_t klen = Buffer::Length(args[0].As<Object>());
if (klen < 0) {
return ThrowException(Exception::TypeError(String::New("Bad argument")));
}
// No clue of what these three lines do !
char* kbuf = new char[klen];
ssize_t kwritten = DecodeWrite(kbuf, klen, args[0], BINARY);
assert(kwritten == klen);
Handle<Object> options = args[1]->ToObject();
options->Get(String::New("inform"))
//@todo!
//int CMS_verify(CMS_ContentInfo *cms, STACK_OF(X509) *certs, X509_STORE *store, BIO *indata, BIO *out, unsigned int flags);