C++ 如何使用SEC_ASN1_SAVE?
我需要从C++ 如何使用SEC_ASN1_SAVE?,c++,xcode,macos,C++,Xcode,Macos,我需要从序列获取完整的DER编码项。但是我有分段错误:11。怎么了 如果我用SEC\u ASN1\u SAVE注释行它对version工作正常,但我需要获得derVersion typedef struct { SecAsn1Item derVersion; SecAsn1Item version; } ASN1_TEST; const SecAsn1Template kTestTemplate[] = { {SEC_ASN1_SEQUENCE, 0, NULL, si
序列
获取完整的DER编码项。但是我有分段错误:11
。怎么了
如果我用SEC\u ASN1\u SAVE注释行
它对version
工作正常,但我需要获得derVersion
typedef struct {
SecAsn1Item derVersion;
SecAsn1Item version;
} ASN1_TEST;
const SecAsn1Template kTestTemplate[] = {
{SEC_ASN1_SEQUENCE, 0, NULL, sizeof(ASN1_TEST)},
{SEC_ASN1_SAVE, offsetof(ASN1_TEST, derVersion)},
{SEC_ASN1_INTEGER, offsetof(ASN1_TEST, version)},
{0}
};
void ParseASN1(){
const char der[] = "\x30\x05\x02\x03\x01\x00\x01";
SecAsn1CoderRef coder = NULL;
OSStatus status = SecAsn1CoderCreate(&coder);
if (status) {
THROW_EXCEPTION("SecAsn1CoderCreate");
}
ASN1_TEST test;
status = SecAsn1Decode(
coder,
(CK_BYTE_PTR)der, 7,
kTestTemplate,
&test
);
if (status) {
SecAsn1CoderRelease(coder);
THROW_EXCEPTION("SecAsn1Decode");
}
fprintf(stdout, "Test.version: %lu\n", test.version.Length);
fprintf(stdout, "Test.derVersion: %lu\n", test.derVersion.Length);
SecAsn1CoderRelease(coder);
}
下面是我找到的一些代码链接
我解决了这个问题
我必须添加
memset(&test,0,sizeof(ASN1_测试))代码>在测试之后
声明嗨,我也在处理类似的问题。也许你可以试着在下面的问题上帮助我