This better reflects their behaviour.
X509_EXTENSION *X509_get_ext(X509 *x, int loc);
X509_EXTENSION *X509_delete_ext(X509 *x, int loc);
int X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc);
+void * X509_get_ext_d2i(X509 *x, int nid, int *crit, int *idx);
int X509_CRL_get_ext_count(X509_CRL *x);
int X509_CRL_get_ext_by_NID(X509_CRL *x, int nid, int lastpos);
X509_EXTENSION *X509_CRL_get_ext(X509_CRL *x, int loc);
X509_EXTENSION *X509_CRL_delete_ext(X509_CRL *x, int loc);
int X509_CRL_add_ext(X509_CRL *x, X509_EXTENSION *ex, int loc);
+void * X509_CRL_get_ext_d2i(X509_CRL *x, int nid, int *crit, int *idx);
int X509_REVOKED_get_ext_count(X509_REVOKED *x);
int X509_REVOKED_get_ext_by_NID(X509_REVOKED *x, int nid, int lastpos);
X509_EXTENSION *X509_REVOKED_get_ext(X509_REVOKED *x, int loc);
X509_EXTENSION *X509_REVOKED_delete_ext(X509_REVOKED *x, int loc);
int X509_REVOKED_add_ext(X509_REVOKED *x, X509_EXTENSION *ex, int loc);
+void * X509_REVOKED_get_ext_d2i(X509_REVOKED *x, int nid, int *crit, int *idx);
X509_EXTENSION *X509_EXTENSION_create_by_NID(X509_EXTENSION **ex,
int nid, int crit, ASN1_OCTET_STRING *data);
#include <openssl/objects.h>
#include <openssl/evp.h>
#include <openssl/x509.h>
+#include <openssl/x509v3.h>
+
int X509_CRL_get_ext_count(X509_CRL *x)
{
return(X509v3_delete_ext(x->crl->extensions,loc));
}
+void *X509_CRL_get_ext_d2i(X509_CRL *x, int nid, int *crit, int *idx)
+{
+ return X509V3_get_d2i(x->crl->extensions, nid, crit, idx);
+}
+
int X509_CRL_add_ext(X509_CRL *x, X509_EXTENSION *ex, int loc)
{
return(X509v3_add_ext(&(x->crl->extensions),ex,loc) != NULL);
return(X509v3_add_ext(&(x->cert_info->extensions),ex,loc) != NULL);
}
+void *X509_get_ext_d2i(X509 *x, int nid, int *crit, int *idx)
+{
+ return X509V3_get_d2i(x->cert_info->extensions, nid, crit, idx);
+}
+
int X509_REVOKED_get_ext_count(X509_REVOKED *x)
{
return(X509v3_get_ext_count(x->extensions));
return(X509v3_add_ext(&(x->extensions),ex,loc) != NULL);
}
+void *X509_REVOKED_get_ext_d2i(X509_REVOKED *x, int nid, int *crit, int *idx)
+{
+ return X509V3_get_d2i(x->extensions, nid, crit, idx);
+}
+
IMPLEMENT_STACK_OF(X509_EXTENSION)
IMPLEMENT_ASN1_SET_OF(X509_EXTENSION)
if(crit) *crit = -1;
return NULL;
}
-
-/* As above but for a passed certificate */
-
-void *X509V3_X509_get_d2i(X509 *x, int nid, int *crit, int *idx)
-{
- return X509V3_get_d2i(x->cert_info->extensions, nid, crit, idx);
-}
-
-void *X509V3_CRL_get_d2i(X509_CRL *x, int nid, int *crit, int *idx)
-{
- return X509V3_get_d2i(x->crl->extensions, nid, crit, idx);
-}
-
-void *X509V3_REVOKED_get_d2i(X509_REVOKED *x, int nid, int *crit, int *idx)
-{
- return X509V3_get_d2i(x->extensions, nid, crit, idx);
-}
/* V1 should mean no extensions ... */
if(!X509_get_version(x)) x->ex_flags |= EXFLAG_V1;
/* Handle basic constraints */
- if((bs=X509V3_X509_get_d2i(x, NID_basic_constraints, NULL, NULL))) {
+ if((bs=X509_get_ext_d2i(x, NID_basic_constraints, NULL, NULL))) {
if(bs->ca) x->ex_flags |= EXFLAG_CA;
if(bs->pathlen) {
if((bs->pathlen->type == V_ASN1_NEG_INTEGER)
x->ex_flags |= EXFLAG_BCONS;
}
/* Handle key usage */
- if((usage=X509V3_X509_get_d2i(x, NID_key_usage, NULL, NULL))) {
+ if((usage=X509_get_ext_d2i(x, NID_key_usage, NULL, NULL))) {
if(usage->length > 0) {
x->ex_kusage = usage->data[0];
if(usage->length > 1)
ASN1_BIT_STRING_free(usage);
}
x->ex_xkusage = 0;
- if((extusage=X509V3_X509_get_d2i(x, NID_ext_key_usage, NULL, NULL))) {
+ if((extusage=X509_get_ext_d2i(x, NID_ext_key_usage, NULL, NULL))) {
x->ex_flags |= EXFLAG_XKUSAGE;
for(i = 0; i < sk_ASN1_OBJECT_num(extusage); i++) {
switch(OBJ_obj2nid(sk_ASN1_OBJECT_value(extusage,i))) {
sk_ASN1_OBJECT_pop_free(extusage, ASN1_OBJECT_free);
}
- if((ns=X509V3_X509_get_d2i(x, NID_netscape_cert_type, NULL, NULL))) {
+ if((ns=X509_get_ext_d2i(x, NID_netscape_cert_type, NULL, NULL))) {
if(ns->length > 0) x->ex_nscert = ns->data[0];
else x->ex_nscert = 0;
x->ex_flags |= EXFLAG_NSCERT;
STACK_OF(CONF_VALUE) *X509V3_parse_list(char *line);
void *X509V3_EXT_d2i(X509_EXTENSION *ext);
void *X509V3_get_d2i(STACK_OF(X509_EXTENSION) *x, int nid, int *crit, int *idx);
-void *X509V3_X509_get_d2i(X509 *x, int nid, int *crit, int *idx);
-void *X509V3_CRL_get_d2i(X509_CRL *x, int nid, int *crit, int *idx);
-void *X509V3_REVOKED_get_d2i(X509_REVOKED *x, int nid, int *crit, int *idx);
X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc);
BIO_ctrl_reset_read_request 1906
DISPLAYTEXT_new 1907
ASN1_GENERALIZEDTIME_free 1908
-X509V3_REVOKED_get_d2i 1909
+X509_REVOKED_get_ext_d2i 1909
X509_set_ex_data 1910
X509_reject_set_bit_asc 1911
X509_NAME_add_entry_by_txt 1912
ASN1_OCTET_STRING_cmp 1955
sk_ACCESS_DESCRIPTION_value 1956
ASN1_BIT_STRING_new 1957
-X509V3_X509_get_d2i 1958
+X509_get_ext_d2i 1958
PEM_read_bio_X509_AUX 1959
ASN1_STRING_set_default_mask_asc 1960
PEM_write_bio_RSA_PUBKEY 1961
sk_ACCESS_DESCRIPTION_zero 2006
X509_TRUST_cleanup 2007
X509_NAME_add_entry_by_OBJ 2008
-X509V3_CRL_get_d2i 2009
+X509_CRL_get_ext_d2i 2009
sk_X509_TRUST_set 2010
X509_PURPOSE_iget_name 2011
PEM_read_PUBKEY 2012