我需要从SEQUENCE
获取完整的DER编码项。但我有Segmentation fault: 11
。有什么问题?
如果我对SEC_ASN1_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);
}
以下是我找到的代码的一些链接。
答案 0 :(得分:0)
我解决了这个问题。
我必须在memset(&test, 0, sizeof(ASN1_TEST));
声明
test