Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用SEC_ASN1_SAVE?_C++_Xcode_Macos - Fatal编程技术网

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_测试))
测试之后
声明

嗨,我也在处理类似的问题。也许你可以试着在下面的问题上帮助我