2014-01-28 39 views
0

我嘗試使用以下語法相同:無法使用OpenSSL的API來添加證書策略擴展在C++中

  • add_ext(x509OutCertificate, NID_certificate_policies, "Policy: 2.16.840.1.113733.1.7.54 ,CPS: https://www.verisign.com/cps");

  • add_ext(x509OutCertificate, NID_certificate_policies, "2.16.840.1.113733.1.7.54,https://www.verisign.com/cps");

&更多的組合。

但無法在證書中添加此擴展名。任何線索有什麼不對?

在此先感謝

+1

請問您可以添加更多代碼嗎? –

回答

0

這是一個真正的評論,但評論沒有空間。在v3_cpols.c

$ grep -R NID_certificate_policies *crypto/objects/obj_dat.h: NID_certificate_policies,3,&(lvalues[512]),0}, 
crypto/objects/objects.h:#define NID_certificate_policies 89 
crypto/objects/obj_mac.h:#define NID_certificate_policies  89 
crypto/x509v3/v3_cpols.c:NID_certificate_policies, 0,ASN1_ITEM_ref(CERTIFICATEPOLICIES), 
crypto/x509v3/pcy_cache.c: ext_cpols = X509_get_ext_d2i(x, NID_certificate_policies, &i, NULL); 
crypto/x509v3/v3_purp.c:  NID_certificate_policies, /* 89 */ 

看,有一種不祥的警告:

/* Certificate policies extension support: this one is a bit complex... */ 

下面是其宣稱:

const X509V3_EXT_METHOD v3_cpols = { 
    NID_certificate_policies, 0,ASN1_ITEM_ref(CERTIFICATEPOLICIES), 
    0,0,0,0, 
    0,0, 
    0,0, 
    (X509V3_EXT_I2R)i2r_certpol, 
    (X509V3_EXT_R2I)r2i_certpol, 
    NULL 
}; 

ASN1_ITEM_TEMPLATE(CERTIFICATEPOLICIES) = 
    ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, CERTIFICATEPOLICIES, POLICYINFO) 
ASN1_ITEM_TEMPLATE_END(CERTIFICATEPOLICIES) 

IMPLEMENT_ASN1_FUNCTIONS(CERTIFICATEPOLICIES) 

v3_cpol然後在ext_dat.h使用:

static const X509V3_EXT_METHOD *standard_exts[] = { 
    &v3_nscert, 
    &v3_ns_ia5_list[0], 
    &v3_ns_ia5_list[1], 
    &v3_ns_ia5_list[2], 
    &v3_ns_ia5_list[3], 
    &v3_ns_ia5_list[4], 
    &v3_ns_ia5_list[5], 
    &v3_ns_ia5_list[6], 
    ... 
    &v3_cpols, 
    ... 
}; 

似乎沒有文檔或明確的用法。我在OpenSSL上的兩本書缺乏對它的處理。它看起來像你在泥濘的水域。

也許OpenSSL user's list的人可以幫忙。我建議這樣做,因爲列表中的某些人可能會回答它(SH,DT,VD等),但我沒有在Stack Overflow的網站上看到它們。

相關問題