0
我需要从SEQUENCE
获得完整的DER编码项目。但我有Segmentation fault: 11
。哪里不对?如何使用SEC_ASN1_SAVE?
如果我评论与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);
}
下面是使用代码一些链接,我发现。
kSecAsn1TBSCertificateTemplate template