OK, I Understand now...but cannot make it work...
I tried this, but without success :
int id_spq_ets_uri = OBJ_create("1.2.840.113549.1.9.16.5.1",
"id_spq_ets_uri", "id_spq_ets_uri");
pQInfo->pqualid = OBJ_nid2obj(id_spq_ets_uri);
pQInfo->d.other = ASN1_TYPE_new();
char *urlPolitica = "http://politicas.icpbrasil.gov.br/PA_AD_RT_v2_1.der";
ASN1_TYPE_set(pQInfo->d.other, V_ASN1_IA5STRING, urlPolitica);
Thanks.
Rogerio
On Jan 23, 2014, at 21:17 , Dr. Stephen Henson <[email protected]> wrote:
> On Thu, Jan 23, 2014, Rogrio Saulo wrote:
>
>> Hi all,
>>
>> Sorry if it as a stupid question but...
>>
>> I'm trying to add an custom policy qualifier attribute with another NID
>> different from NID_id_qt_cps to an PKCS7 envelope.
>>
>> If I use the NID_id_qt_cps all works fine, BUT if I change the NID to
>> another created by OBJ_create the program crashes at thei2d_POLICYINFO
>> function.
>>
>> I cannot use the POLICYQUALINFO object with another NID different from
>> NID_id_qt_cps??
>>
>> There is my working code :
>>
>> ASN1_OBJECT *polID;
>> POLICYINFO *pInfo = POLICYINFO_new();
>> polID = OBJ_txt2obj("2.16.76.1.7.1.2.2.1", 0);
>> pInfo->policyid = polID;
>> POLICYQUALINFO *pQInfo;
>> pQInfo = POLICYQUALINFO_new();
>> pInfo->qualifiers = sk_POLICYQUALINFO_new_null();
>> pQInfo = POLICYQUALINFO_new();
>> sk_POLICYQUALINFO_push(pInfo->qualifiers, pQInfo);
>> pQInfo->pqualid = OBJ_nid2obj(NID_id_qt_cps);
>> pQInfo->d.cpsuri = M_ASN1_IA5STRING_new();
>> char *urlPolitica = "http://politicas.icpbrasil.gov.br/PA_AD_RT_v2_1.der";
>> ASN1_STRING_set(pQInfo->d.cpsuri, urlPolitica, strlen(urlPolitica));
>> POLICY_add_attrib(si, pInfo); // WORKS FINE
>>
>> If I change the line :
>>
>> pQInfo->pqualid = OBJ_nid2obj(NID_id_qt_cps);
>>
>> With :
>>
>> int NID_id_spq_ets_uri = OBJ_create("1.2.840.113549.1.9.16.5.1",
>> "id_spq_ets_uri", "id_spq_ets_uri");
>> pQInfo->pqualid = OBJ_nid2obj(NID_id_spq_ets_uri);
>>
>> The program crashes at function POLICY_add_attrib in THIS LINE :
>>
>> int len = i2d_POLICYINFO(pInfo, NULL);
>>
>> What I'm doing wrong???
>>
>
> The problem is that the structure in question is the "any defined by OID"
> type. There are two standard OIDs NID_id_qt_cps and NID_id_qt_unotice. If you
> have any other OID the code has no idea how to handle it and so falls back to
> using ASN1_TYPE. The crash is because it's expecting ASN1_TYPE in the union
> but gets a different structure.
>
> So you need to populate the d.other field in that case.
>
> Steve.
> --
> Dr Stephen N. Henson. OpenSSL project core developer.
> Commercial tech support now available see: http://www.openssl.org
> ______________________________________________________________________
> OpenSSL Project http://www.openssl.org
> User Support Mailing List [email protected]
> Automated List Manager [email protected]