LCOV - code coverage report
Current view: top level - usr/include/openssl - x509v3.h (source / functions) Hit Total Coverage
Test: out.info Lines: 0 1 0.0 %
Date: 2022-01-27 10:43:00 Functions: 0 2 0.0 %

          Line data    Source code
       1             : /*
       2             :  * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved.
       3             :  *
       4             :  * Licensed under the OpenSSL license (the "License").  You may not use
       5             :  * this file except in compliance with the License.  You can obtain a copy
       6             :  * in the file LICENSE in the source distribution or at
       7             :  * https://www.openssl.org/source/license.html
       8             :  */
       9             : 
      10             : #ifndef HEADER_X509V3_H
      11             : # define HEADER_X509V3_H
      12             : 
      13             : # include <openssl/bio.h>
      14             : # include <openssl/x509.h>
      15             : # include <openssl/conf.h>
      16             : # include <openssl/x509v3err.h>
      17             : 
      18             : #ifdef __cplusplus
      19             : extern "C" {
      20             : #endif
      21             : 
      22             : /* Forward reference */
      23             : struct v3_ext_method;
      24             : struct v3_ext_ctx;
      25             : 
      26             : /* Useful typedefs */
      27             : 
      28             : typedef void *(*X509V3_EXT_NEW)(void);
      29             : typedef void (*X509V3_EXT_FREE) (void *);
      30             : typedef void *(*X509V3_EXT_D2I)(void *, const unsigned char **, long);
      31             : typedef int (*X509V3_EXT_I2D) (void *, unsigned char **);
      32             : typedef STACK_OF(CONF_VALUE) *
      33             :     (*X509V3_EXT_I2V) (const struct v3_ext_method *method, void *ext,
      34             :                        STACK_OF(CONF_VALUE) *extlist);
      35             : typedef void *(*X509V3_EXT_V2I)(const struct v3_ext_method *method,
      36             :                                 struct v3_ext_ctx *ctx,
      37             :                                 STACK_OF(CONF_VALUE) *values);
      38             : typedef char *(*X509V3_EXT_I2S)(const struct v3_ext_method *method,
      39             :                                 void *ext);
      40             : typedef void *(*X509V3_EXT_S2I)(const struct v3_ext_method *method,
      41             :                                 struct v3_ext_ctx *ctx, const char *str);
      42             : typedef int (*X509V3_EXT_I2R) (const struct v3_ext_method *method, void *ext,
      43             :                                BIO *out, int indent);
      44             : typedef void *(*X509V3_EXT_R2I)(const struct v3_ext_method *method,
      45             :                                 struct v3_ext_ctx *ctx, const char *str);
      46             : 
      47             : /* V3 extension structure */
      48             : 
      49             : struct v3_ext_method {
      50             :     int ext_nid;
      51             :     int ext_flags;
      52             : /* If this is set the following four fields are ignored */
      53             :     ASN1_ITEM_EXP *it;
      54             : /* Old style ASN1 calls */
      55             :     X509V3_EXT_NEW ext_new;
      56             :     X509V3_EXT_FREE ext_free;
      57             :     X509V3_EXT_D2I d2i;
      58             :     X509V3_EXT_I2D i2d;
      59             : /* The following pair is used for string extensions */
      60             :     X509V3_EXT_I2S i2s;
      61             :     X509V3_EXT_S2I s2i;
      62             : /* The following pair is used for multi-valued extensions */
      63             :     X509V3_EXT_I2V i2v;
      64             :     X509V3_EXT_V2I v2i;
      65             : /* The following are used for raw extensions */
      66             :     X509V3_EXT_I2R i2r;
      67             :     X509V3_EXT_R2I r2i;
      68             :     void *usr_data;             /* Any extension specific data */
      69             : };
      70             : 
      71             : typedef struct X509V3_CONF_METHOD_st {
      72             :     char *(*get_string) (void *db, const char *section, const char *value);
      73             :     STACK_OF(CONF_VALUE) *(*get_section) (void *db, const char *section);
      74             :     void (*free_string) (void *db, char *string);
      75             :     void (*free_section) (void *db, STACK_OF(CONF_VALUE) *section);
      76             : } X509V3_CONF_METHOD;
      77             : 
      78             : /* Context specific info */
      79             : struct v3_ext_ctx {
      80             : # define CTX_TEST 0x1
      81             : # define X509V3_CTX_REPLACE 0x2
      82             :     int flags;
      83             :     X509 *issuer_cert;
      84             :     X509 *subject_cert;
      85             :     X509_REQ *subject_req;
      86             :     X509_CRL *crl;
      87             :     X509V3_CONF_METHOD *db_meth;
      88             :     void *db;
      89             : /* Maybe more here */
      90             : };
      91             : 
      92             : typedef struct v3_ext_method X509V3_EXT_METHOD;
      93             : 
      94             : DEFINE_STACK_OF(X509V3_EXT_METHOD)
      95             : 
      96             : /* ext_flags values */
      97             : # define X509V3_EXT_DYNAMIC      0x1
      98             : # define X509V3_EXT_CTX_DEP      0x2
      99             : # define X509V3_EXT_MULTILINE    0x4
     100             : 
     101             : typedef BIT_STRING_BITNAME ENUMERATED_NAMES;
     102             : 
     103             : typedef struct BASIC_CONSTRAINTS_st {
     104             :     int ca;
     105             :     ASN1_INTEGER *pathlen;
     106             : } BASIC_CONSTRAINTS;
     107             : 
     108             : typedef struct PKEY_USAGE_PERIOD_st {
     109             :     ASN1_GENERALIZEDTIME *notBefore;
     110             :     ASN1_GENERALIZEDTIME *notAfter;
     111             : } PKEY_USAGE_PERIOD;
     112             : 
     113             : typedef struct otherName_st {
     114             :     ASN1_OBJECT *type_id;
     115             :     ASN1_TYPE *value;
     116             : } OTHERNAME;
     117             : 
     118             : typedef struct EDIPartyName_st {
     119             :     ASN1_STRING *nameAssigner;
     120             :     ASN1_STRING *partyName;
     121             : } EDIPARTYNAME;
     122             : 
     123             : typedef struct GENERAL_NAME_st {
     124             : # define GEN_OTHERNAME   0
     125             : # define GEN_EMAIL       1
     126             : # define GEN_DNS         2
     127             : # define GEN_X400        3
     128             : # define GEN_DIRNAME     4
     129             : # define GEN_EDIPARTY    5
     130             : # define GEN_URI         6
     131             : # define GEN_IPADD       7
     132             : # define GEN_RID         8
     133             :     int type;
     134             :     union {
     135             :         char *ptr;
     136             :         OTHERNAME *otherName;   /* otherName */
     137             :         ASN1_IA5STRING *rfc822Name;
     138             :         ASN1_IA5STRING *dNSName;
     139             :         ASN1_TYPE *x400Address;
     140             :         X509_NAME *directoryName;
     141             :         EDIPARTYNAME *ediPartyName;
     142             :         ASN1_IA5STRING *uniformResourceIdentifier;
     143             :         ASN1_OCTET_STRING *iPAddress;
     144             :         ASN1_OBJECT *registeredID;
     145             :         /* Old names */
     146             :         ASN1_OCTET_STRING *ip;  /* iPAddress */
     147             :         X509_NAME *dirn;        /* dirn */
     148             :         ASN1_IA5STRING *ia5;    /* rfc822Name, dNSName,
     149             :                                  * uniformResourceIdentifier */
     150             :         ASN1_OBJECT *rid;       /* registeredID */
     151             :         ASN1_TYPE *other;       /* x400Address */
     152             :     } d;
     153             : } GENERAL_NAME;
     154             : 
     155             : typedef struct ACCESS_DESCRIPTION_st {
     156             :     ASN1_OBJECT *method;
     157             :     GENERAL_NAME *location;
     158             : } ACCESS_DESCRIPTION;
     159             : 
     160             : typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS;
     161             : 
     162             : typedef STACK_OF(ASN1_OBJECT) EXTENDED_KEY_USAGE;
     163             : 
     164             : typedef STACK_OF(ASN1_INTEGER) TLS_FEATURE;
     165             : 
     166           0 : DEFINE_STACK_OF(GENERAL_NAME)
     167             : typedef STACK_OF(GENERAL_NAME) GENERAL_NAMES;
     168             : DEFINE_STACK_OF(GENERAL_NAMES)
     169             : 
     170             : DEFINE_STACK_OF(ACCESS_DESCRIPTION)
     171             : 
     172             : typedef struct DIST_POINT_NAME_st {
     173             :     int type;
     174             :     union {
     175             :         GENERAL_NAMES *fullname;
     176             :         STACK_OF(X509_NAME_ENTRY) *relativename;
     177             :     } name;
     178             : /* If relativename then this contains the full distribution point name */
     179             :     X509_NAME *dpname;
     180             : } DIST_POINT_NAME;
     181             : /* All existing reasons */
     182             : # define CRLDP_ALL_REASONS       0x807f
     183             : 
     184             : # define CRL_REASON_NONE                         -1
     185             : # define CRL_REASON_UNSPECIFIED                  0
     186             : # define CRL_REASON_KEY_COMPROMISE               1
     187             : # define CRL_REASON_CA_COMPROMISE                2
     188             : # define CRL_REASON_AFFILIATION_CHANGED          3
     189             : # define CRL_REASON_SUPERSEDED                   4
     190             : # define CRL_REASON_CESSATION_OF_OPERATION       5
     191             : # define CRL_REASON_CERTIFICATE_HOLD             6
     192             : # define CRL_REASON_REMOVE_FROM_CRL              8
     193             : # define CRL_REASON_PRIVILEGE_WITHDRAWN          9
     194             : # define CRL_REASON_AA_COMPROMISE                10
     195             : 
     196             : struct DIST_POINT_st {
     197             :     DIST_POINT_NAME *distpoint;
     198             :     ASN1_BIT_STRING *reasons;
     199             :     GENERAL_NAMES *CRLissuer;
     200             :     int dp_reasons;
     201             : };
     202             : 
     203             : typedef STACK_OF(DIST_POINT) CRL_DIST_POINTS;
     204             : 
     205             : DEFINE_STACK_OF(DIST_POINT)
     206             : 
     207             : struct AUTHORITY_KEYID_st {
     208             :     ASN1_OCTET_STRING *keyid;
     209             :     GENERAL_NAMES *issuer;
     210             :     ASN1_INTEGER *serial;
     211             : };
     212             : 
     213             : /* Strong extranet structures */
     214             : 
     215             : typedef struct SXNET_ID_st {
     216             :     ASN1_INTEGER *zone;
     217             :     ASN1_OCTET_STRING *user;
     218             : } SXNETID;
     219             : 
     220             : DEFINE_STACK_OF(SXNETID)
     221             : 
     222             : typedef struct SXNET_st {
     223             :     ASN1_INTEGER *version;
     224             :     STACK_OF(SXNETID) *ids;
     225             : } SXNET;
     226             : 
     227             : typedef struct NOTICEREF_st {
     228             :     ASN1_STRING *organization;
     229             :     STACK_OF(ASN1_INTEGER) *noticenos;
     230             : } NOTICEREF;
     231             : 
     232             : typedef struct USERNOTICE_st {
     233             :     NOTICEREF *noticeref;
     234             :     ASN1_STRING *exptext;
     235             : } USERNOTICE;
     236             : 
     237             : typedef struct POLICYQUALINFO_st {
     238             :     ASN1_OBJECT *pqualid;
     239             :     union {
     240             :         ASN1_IA5STRING *cpsuri;
     241             :         USERNOTICE *usernotice;
     242             :         ASN1_TYPE *other;
     243             :     } d;
     244             : } POLICYQUALINFO;
     245             : 
     246             : DEFINE_STACK_OF(POLICYQUALINFO)
     247             : 
     248             : typedef struct POLICYINFO_st {
     249             :     ASN1_OBJECT *policyid;
     250             :     STACK_OF(POLICYQUALINFO) *qualifiers;
     251             : } POLICYINFO;
     252             : 
     253             : typedef STACK_OF(POLICYINFO) CERTIFICATEPOLICIES;
     254             : 
     255             : DEFINE_STACK_OF(POLICYINFO)
     256             : 
     257             : typedef struct POLICY_MAPPING_st {
     258             :     ASN1_OBJECT *issuerDomainPolicy;
     259             :     ASN1_OBJECT *subjectDomainPolicy;
     260             : } POLICY_MAPPING;
     261             : 
     262             : DEFINE_STACK_OF(POLICY_MAPPING)
     263             : 
     264             : typedef STACK_OF(POLICY_MAPPING) POLICY_MAPPINGS;
     265             : 
     266             : typedef struct GENERAL_SUBTREE_st {
     267             :     GENERAL_NAME *base;
     268             :     ASN1_INTEGER *minimum;
     269             :     ASN1_INTEGER *maximum;
     270             : } GENERAL_SUBTREE;
     271             : 
     272             : DEFINE_STACK_OF(GENERAL_SUBTREE)
     273             : 
     274             : struct NAME_CONSTRAINTS_st {
     275             :     STACK_OF(GENERAL_SUBTREE) *permittedSubtrees;
     276             :     STACK_OF(GENERAL_SUBTREE) *excludedSubtrees;
     277             : };
     278             : 
     279             : typedef struct POLICY_CONSTRAINTS_st {
     280             :     ASN1_INTEGER *requireExplicitPolicy;
     281             :     ASN1_INTEGER *inhibitPolicyMapping;
     282             : } POLICY_CONSTRAINTS;
     283             : 
     284             : /* Proxy certificate structures, see RFC 3820 */
     285             : typedef struct PROXY_POLICY_st {
     286             :     ASN1_OBJECT *policyLanguage;
     287             :     ASN1_OCTET_STRING *policy;
     288             : } PROXY_POLICY;
     289             : 
     290             : typedef struct PROXY_CERT_INFO_EXTENSION_st {
     291             :     ASN1_INTEGER *pcPathLengthConstraint;
     292             :     PROXY_POLICY *proxyPolicy;
     293             : } PROXY_CERT_INFO_EXTENSION;
     294             : 
     295             : DECLARE_ASN1_FUNCTIONS(PROXY_POLICY)
     296             : DECLARE_ASN1_FUNCTIONS(PROXY_CERT_INFO_EXTENSION)
     297             : 
     298             : struct ISSUING_DIST_POINT_st {
     299             :     DIST_POINT_NAME *distpoint;
     300             :     int onlyuser;
     301             :     int onlyCA;
     302             :     ASN1_BIT_STRING *onlysomereasons;
     303             :     int indirectCRL;
     304             :     int onlyattr;
     305             : };
     306             : 
     307             : /* Values in idp_flags field */
     308             : /* IDP present */
     309             : # define IDP_PRESENT     0x1
     310             : /* IDP values inconsistent */
     311             : # define IDP_INVALID     0x2
     312             : /* onlyuser true */
     313             : # define IDP_ONLYUSER    0x4
     314             : /* onlyCA true */
     315             : # define IDP_ONLYCA      0x8
     316             : /* onlyattr true */
     317             : # define IDP_ONLYATTR    0x10
     318             : /* indirectCRL true */
     319             : # define IDP_INDIRECT    0x20
     320             : /* onlysomereasons present */
     321             : # define IDP_REASONS     0x40
     322             : 
     323             : # define X509V3_conf_err(val) ERR_add_error_data(6, \
     324             :                         "section:", (val)->section, \
     325             :                         ",name:", (val)->name, ",value:", (val)->value)
     326             : 
     327             : # define X509V3_set_ctx_test(ctx) \
     328             :                         X509V3_set_ctx(ctx, NULL, NULL, NULL, NULL, CTX_TEST)
     329             : # define X509V3_set_ctx_nodb(ctx) (ctx)->db = NULL;
     330             : 
     331             : # define EXT_BITSTRING(nid, table) { nid, 0, ASN1_ITEM_ref(ASN1_BIT_STRING), \
     332             :                         0,0,0,0, \
     333             :                         0,0, \
     334             :                         (X509V3_EXT_I2V)i2v_ASN1_BIT_STRING, \
     335             :                         (X509V3_EXT_V2I)v2i_ASN1_BIT_STRING, \
     336             :                         NULL, NULL, \
     337             :                         table}
     338             : 
     339             : # define EXT_IA5STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_IA5STRING), \
     340             :                         0,0,0,0, \
     341             :                         (X509V3_EXT_I2S)i2s_ASN1_IA5STRING, \
     342             :                         (X509V3_EXT_S2I)s2i_ASN1_IA5STRING, \
     343             :                         0,0,0,0, \
     344             :                         NULL}
     345             : 
     346             : # define EXT_END { -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
     347             : 
     348             : /* X509_PURPOSE stuff */
     349             : 
     350             : # define EXFLAG_BCONS            0x1
     351             : # define EXFLAG_KUSAGE           0x2
     352             : # define EXFLAG_XKUSAGE          0x4
     353             : # define EXFLAG_NSCERT           0x8
     354             : 
     355             : # define EXFLAG_CA               0x10
     356             : /* Really self issued not necessarily self signed */
     357             : # define EXFLAG_SI               0x20
     358             : # define EXFLAG_V1               0x40
     359             : # define EXFLAG_INVALID          0x80
     360             : /* EXFLAG_SET is set to indicate that some values have been precomputed */
     361             : # define EXFLAG_SET              0x100
     362             : # define EXFLAG_CRITICAL         0x200
     363             : # define EXFLAG_PROXY            0x400
     364             : 
     365             : # define EXFLAG_INVALID_POLICY   0x800
     366             : # define EXFLAG_FRESHEST         0x1000
     367             : # define EXFLAG_SS               0x2000 /* cert is apparently self-signed */
     368             : 
     369             : # define EXFLAG_NO_FINGERPRINT   0x100000
     370             : 
     371             : # define KU_DIGITAL_SIGNATURE    0x0080
     372             : # define KU_NON_REPUDIATION      0x0040
     373             : # define KU_KEY_ENCIPHERMENT     0x0020
     374             : # define KU_DATA_ENCIPHERMENT    0x0010
     375             : # define KU_KEY_AGREEMENT        0x0008
     376             : # define KU_KEY_CERT_SIGN        0x0004
     377             : # define KU_CRL_SIGN             0x0002
     378             : # define KU_ENCIPHER_ONLY        0x0001
     379             : # define KU_DECIPHER_ONLY        0x8000
     380             : 
     381             : # define NS_SSL_CLIENT           0x80
     382             : # define NS_SSL_SERVER           0x40
     383             : # define NS_SMIME                0x20
     384             : # define NS_OBJSIGN              0x10
     385             : # define NS_SSL_CA               0x04
     386             : # define NS_SMIME_CA             0x02
     387             : # define NS_OBJSIGN_CA           0x01
     388             : # define NS_ANY_CA               (NS_SSL_CA|NS_SMIME_CA|NS_OBJSIGN_CA)
     389             : 
     390             : # define XKU_SSL_SERVER          0x1
     391             : # define XKU_SSL_CLIENT          0x2
     392             : # define XKU_SMIME               0x4
     393             : # define XKU_CODE_SIGN           0x8
     394             : # define XKU_SGC                 0x10
     395             : # define XKU_OCSP_SIGN           0x20
     396             : # define XKU_TIMESTAMP           0x40
     397             : # define XKU_DVCS                0x80
     398             : # define XKU_ANYEKU              0x100
     399             : 
     400             : # define X509_PURPOSE_DYNAMIC    0x1
     401             : # define X509_PURPOSE_DYNAMIC_NAME       0x2
     402             : 
     403             : typedef struct x509_purpose_st {
     404             :     int purpose;
     405             :     int trust;                  /* Default trust ID */
     406             :     int flags;
     407             :     int (*check_purpose) (const struct x509_purpose_st *, const X509 *, int);
     408             :     char *name;
     409             :     char *sname;
     410             :     void *usr_data;
     411             : } X509_PURPOSE;
     412             : 
     413             : # define X509_PURPOSE_SSL_CLIENT         1
     414             : # define X509_PURPOSE_SSL_SERVER         2
     415             : # define X509_PURPOSE_NS_SSL_SERVER      3
     416             : # define X509_PURPOSE_SMIME_SIGN         4
     417             : # define X509_PURPOSE_SMIME_ENCRYPT      5
     418             : # define X509_PURPOSE_CRL_SIGN           6
     419             : # define X509_PURPOSE_ANY                7
     420             : # define X509_PURPOSE_OCSP_HELPER        8
     421             : # define X509_PURPOSE_TIMESTAMP_SIGN     9
     422             : 
     423             : # define X509_PURPOSE_MIN                1
     424             : # define X509_PURPOSE_MAX                9
     425             : 
     426             : /* Flags for X509V3_EXT_print() */
     427             : 
     428             : # define X509V3_EXT_UNKNOWN_MASK         (0xfL << 16)
     429             : /* Return error for unknown extensions */
     430             : # define X509V3_EXT_DEFAULT              0
     431             : /* Print error for unknown extensions */
     432             : # define X509V3_EXT_ERROR_UNKNOWN        (1L << 16)
     433             : /* ASN1 parse unknown extensions */
     434             : # define X509V3_EXT_PARSE_UNKNOWN        (2L << 16)
     435             : /* BIO_dump unknown extensions */
     436             : # define X509V3_EXT_DUMP_UNKNOWN         (3L << 16)
     437             : 
     438             : /* Flags for X509V3_add1_i2d */
     439             : 
     440             : # define X509V3_ADD_OP_MASK              0xfL
     441             : # define X509V3_ADD_DEFAULT              0L
     442             : # define X509V3_ADD_APPEND               1L
     443             : # define X509V3_ADD_REPLACE              2L
     444             : # define X509V3_ADD_REPLACE_EXISTING     3L
     445             : # define X509V3_ADD_KEEP_EXISTING        4L
     446             : # define X509V3_ADD_DELETE               5L
     447             : # define X509V3_ADD_SILENT               0x10
     448             : 
     449             : DEFINE_STACK_OF(X509_PURPOSE)
     450             : 
     451             : DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS)
     452             : 
     453             : DECLARE_ASN1_FUNCTIONS(SXNET)
     454             : DECLARE_ASN1_FUNCTIONS(SXNETID)
     455             : 
     456             : int SXNET_add_id_asc(SXNET **psx, const char *zone, const char *user, int userlen);
     457             : int SXNET_add_id_ulong(SXNET **psx, unsigned long lzone, const char *user,
     458             :                        int userlen);
     459             : int SXNET_add_id_INTEGER(SXNET **psx, ASN1_INTEGER *izone, const char *user,
     460             :                          int userlen);
     461             : 
     462             : ASN1_OCTET_STRING *SXNET_get_id_asc(SXNET *sx, const char *zone);
     463             : ASN1_OCTET_STRING *SXNET_get_id_ulong(SXNET *sx, unsigned long lzone);
     464             : ASN1_OCTET_STRING *SXNET_get_id_INTEGER(SXNET *sx, ASN1_INTEGER *zone);
     465             : 
     466             : DECLARE_ASN1_FUNCTIONS(AUTHORITY_KEYID)
     467             : 
     468             : DECLARE_ASN1_FUNCTIONS(PKEY_USAGE_PERIOD)
     469             : 
     470             : DECLARE_ASN1_FUNCTIONS(GENERAL_NAME)
     471             : GENERAL_NAME *GENERAL_NAME_dup(GENERAL_NAME *a);
     472             : int GENERAL_NAME_cmp(GENERAL_NAME *a, GENERAL_NAME *b);
     473             : 
     474             : ASN1_BIT_STRING *v2i_ASN1_BIT_STRING(X509V3_EXT_METHOD *method,
     475             :                                      X509V3_CTX *ctx,
     476             :                                      STACK_OF(CONF_VALUE) *nval);
     477             : STACK_OF(CONF_VALUE) *i2v_ASN1_BIT_STRING(X509V3_EXT_METHOD *method,
     478             :                                           ASN1_BIT_STRING *bits,
     479             :                                           STACK_OF(CONF_VALUE) *extlist);
     480             : char *i2s_ASN1_IA5STRING(X509V3_EXT_METHOD *method, ASN1_IA5STRING *ia5);
     481             : ASN1_IA5STRING *s2i_ASN1_IA5STRING(X509V3_EXT_METHOD *method,
     482             :                                    X509V3_CTX *ctx, const char *str);
     483             : 
     484             : STACK_OF(CONF_VALUE) *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method,
     485             :                                        GENERAL_NAME *gen,
     486             :                                        STACK_OF(CONF_VALUE) *ret);
     487             : int GENERAL_NAME_print(BIO *out, GENERAL_NAME *gen);
     488             : 
     489             : DECLARE_ASN1_FUNCTIONS(GENERAL_NAMES)
     490             : 
     491             : STACK_OF(CONF_VALUE) *i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method,
     492             :                                         GENERAL_NAMES *gen,
     493             :                                         STACK_OF(CONF_VALUE) *extlist);
     494             : GENERAL_NAMES *v2i_GENERAL_NAMES(const X509V3_EXT_METHOD *method,
     495             :                                  X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval);
     496             : 
     497             : DECLARE_ASN1_FUNCTIONS(OTHERNAME)
     498             : DECLARE_ASN1_FUNCTIONS(EDIPARTYNAME)
     499             : int OTHERNAME_cmp(OTHERNAME *a, OTHERNAME *b);
     500             : void GENERAL_NAME_set0_value(GENERAL_NAME *a, int type, void *value);
     501             : void *GENERAL_NAME_get0_value(const GENERAL_NAME *a, int *ptype);
     502             : int GENERAL_NAME_set0_othername(GENERAL_NAME *gen,
     503             :                                 ASN1_OBJECT *oid, ASN1_TYPE *value);
     504             : int GENERAL_NAME_get0_otherName(const GENERAL_NAME *gen,
     505             :                                 ASN1_OBJECT **poid, ASN1_TYPE **pvalue);
     506             : 
     507             : char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method,
     508             :                             const ASN1_OCTET_STRING *ia5);
     509             : ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method,
     510             :                                          X509V3_CTX *ctx, const char *str);
     511             : 
     512             : DECLARE_ASN1_FUNCTIONS(EXTENDED_KEY_USAGE)
     513             : int i2a_ACCESS_DESCRIPTION(BIO *bp, const ACCESS_DESCRIPTION *a);
     514             : 
     515             : DECLARE_ASN1_ALLOC_FUNCTIONS(TLS_FEATURE)
     516             : 
     517             : DECLARE_ASN1_FUNCTIONS(CERTIFICATEPOLICIES)
     518             : DECLARE_ASN1_FUNCTIONS(POLICYINFO)
     519             : DECLARE_ASN1_FUNCTIONS(POLICYQUALINFO)
     520             : DECLARE_ASN1_FUNCTIONS(USERNOTICE)
     521             : DECLARE_ASN1_FUNCTIONS(NOTICEREF)
     522             : 
     523             : DECLARE_ASN1_FUNCTIONS(CRL_DIST_POINTS)
     524             : DECLARE_ASN1_FUNCTIONS(DIST_POINT)
     525             : DECLARE_ASN1_FUNCTIONS(DIST_POINT_NAME)
     526             : DECLARE_ASN1_FUNCTIONS(ISSUING_DIST_POINT)
     527             : 
     528             : int DIST_POINT_set_dpname(DIST_POINT_NAME *dpn, X509_NAME *iname);
     529             : 
     530             : int NAME_CONSTRAINTS_check(X509 *x, NAME_CONSTRAINTS *nc);
     531             : int NAME_CONSTRAINTS_check_CN(X509 *x, NAME_CONSTRAINTS *nc);
     532             : 
     533             : DECLARE_ASN1_FUNCTIONS(ACCESS_DESCRIPTION)
     534             : DECLARE_ASN1_FUNCTIONS(AUTHORITY_INFO_ACCESS)
     535             : 
     536             : DECLARE_ASN1_ITEM(POLICY_MAPPING)
     537             : DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_MAPPING)
     538             : DECLARE_ASN1_ITEM(POLICY_MAPPINGS)
     539             : 
     540             : DECLARE_ASN1_ITEM(GENERAL_SUBTREE)
     541             : DECLARE_ASN1_ALLOC_FUNCTIONS(GENERAL_SUBTREE)
     542             : 
     543             : DECLARE_ASN1_ITEM(NAME_CONSTRAINTS)
     544             : DECLARE_ASN1_ALLOC_FUNCTIONS(NAME_CONSTRAINTS)
     545             : 
     546             : DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_CONSTRAINTS)
     547             : DECLARE_ASN1_ITEM(POLICY_CONSTRAINTS)
     548             : 
     549             : GENERAL_NAME *a2i_GENERAL_NAME(GENERAL_NAME *out,
     550             :                                const X509V3_EXT_METHOD *method,
     551             :                                X509V3_CTX *ctx, int gen_type,
     552             :                                const char *value, int is_nc);
     553             : 
     554             : # ifdef HEADER_CONF_H
     555             : GENERAL_NAME *v2i_GENERAL_NAME(const X509V3_EXT_METHOD *method,
     556             :                                X509V3_CTX *ctx, CONF_VALUE *cnf);
     557             : GENERAL_NAME *v2i_GENERAL_NAME_ex(GENERAL_NAME *out,
     558             :                                   const X509V3_EXT_METHOD *method,
     559             :                                   X509V3_CTX *ctx, CONF_VALUE *cnf,
     560             :                                   int is_nc);
     561             : void X509V3_conf_free(CONF_VALUE *val);
     562             : 
     563             : X509_EXTENSION *X509V3_EXT_nconf_nid(CONF *conf, X509V3_CTX *ctx, int ext_nid,
     564             :                                      const char *value);
     565             : X509_EXTENSION *X509V3_EXT_nconf(CONF *conf, X509V3_CTX *ctx, const char *name,
     566             :                                  const char *value);
     567             : int X509V3_EXT_add_nconf_sk(CONF *conf, X509V3_CTX *ctx, const char *section,
     568             :                             STACK_OF(X509_EXTENSION) **sk);
     569             : int X509V3_EXT_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section,
     570             :                          X509 *cert);
     571             : int X509V3_EXT_REQ_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section,
     572             :                              X509_REQ *req);
     573             : int X509V3_EXT_CRL_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section,
     574             :                              X509_CRL *crl);
     575             : 
     576             : X509_EXTENSION *X509V3_EXT_conf_nid(LHASH_OF(CONF_VALUE) *conf,
     577             :                                     X509V3_CTX *ctx, int ext_nid,
     578             :                                     const char *value);
     579             : X509_EXTENSION *X509V3_EXT_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
     580             :                                 const char *name, const char *value);
     581             : int X509V3_EXT_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
     582             :                         const char *section, X509 *cert);
     583             : int X509V3_EXT_REQ_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
     584             :                             const char *section, X509_REQ *req);
     585             : int X509V3_EXT_CRL_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
     586             :                             const char *section, X509_CRL *crl);
     587             : 
     588             : int X509V3_add_value_bool_nf(const char *name, int asn1_bool,
     589             :                              STACK_OF(CONF_VALUE) **extlist);
     590             : int X509V3_get_value_bool(const CONF_VALUE *value, int *asn1_bool);
     591             : int X509V3_get_value_int(const CONF_VALUE *value, ASN1_INTEGER **aint);
     592             : void X509V3_set_nconf(X509V3_CTX *ctx, CONF *conf);
     593             : void X509V3_set_conf_lhash(X509V3_CTX *ctx, LHASH_OF(CONF_VALUE) *lhash);
     594             : # endif
     595             : 
     596             : char *X509V3_get_string(X509V3_CTX *ctx, const char *name, const char *section);
     597             : STACK_OF(CONF_VALUE) *X509V3_get_section(X509V3_CTX *ctx, const char *section);
     598             : void X509V3_string_free(X509V3_CTX *ctx, char *str);
     599             : void X509V3_section_free(X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *section);
     600             : void X509V3_set_ctx(X509V3_CTX *ctx, X509 *issuer, X509 *subject,
     601             :                     X509_REQ *req, X509_CRL *crl, int flags);
     602             : 
     603             : int X509V3_add_value(const char *name, const char *value,
     604             :                      STACK_OF(CONF_VALUE) **extlist);
     605             : int X509V3_add_value_uchar(const char *name, const unsigned char *value,
     606             :                            STACK_OF(CONF_VALUE) **extlist);
     607             : int X509V3_add_value_bool(const char *name, int asn1_bool,
     608             :                           STACK_OF(CONF_VALUE) **extlist);
     609             : int X509V3_add_value_int(const char *name, const ASN1_INTEGER *aint,
     610             :                          STACK_OF(CONF_VALUE) **extlist);
     611             : char *i2s_ASN1_INTEGER(X509V3_EXT_METHOD *meth, const ASN1_INTEGER *aint);
     612             : ASN1_INTEGER *s2i_ASN1_INTEGER(X509V3_EXT_METHOD *meth, const char *value);
     613             : char *i2s_ASN1_ENUMERATED(X509V3_EXT_METHOD *meth, const ASN1_ENUMERATED *aint);
     614             : char *i2s_ASN1_ENUMERATED_TABLE(X509V3_EXT_METHOD *meth,
     615             :                                 const ASN1_ENUMERATED *aint);
     616             : int X509V3_EXT_add(X509V3_EXT_METHOD *ext);
     617             : int X509V3_EXT_add_list(X509V3_EXT_METHOD *extlist);
     618             : int X509V3_EXT_add_alias(int nid_to, int nid_from);
     619             : void X509V3_EXT_cleanup(void);
     620             : 
     621             : const X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext);
     622             : const X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid);
     623             : int X509V3_add_standard_extensions(void);
     624             : STACK_OF(CONF_VALUE) *X509V3_parse_list(const char *line);
     625             : void *X509V3_EXT_d2i(X509_EXTENSION *ext);
     626             : void *X509V3_get_d2i(const STACK_OF(X509_EXTENSION) *x, int nid, int *crit,
     627             :                      int *idx);
     628             : 
     629             : X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc);
     630             : int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value,
     631             :                     int crit, unsigned long flags);
     632             : 
     633             : #if OPENSSL_API_COMPAT < 0x10100000L
     634             : /* The new declarations are in crypto.h, but the old ones were here. */
     635             : # define hex_to_string OPENSSL_buf2hexstr
     636             : # define string_to_hex OPENSSL_hexstr2buf
     637             : #endif
     638             : 
     639             : void X509V3_EXT_val_prn(BIO *out, STACK_OF(CONF_VALUE) *val, int indent,
     640             :                         int ml);
     641             : int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, unsigned long flag,
     642             :                      int indent);
     643             : #ifndef OPENSSL_NO_STDIO
     644             : int X509V3_EXT_print_fp(FILE *out, X509_EXTENSION *ext, int flag, int indent);
     645             : #endif
     646             : int X509V3_extensions_print(BIO *out, const char *title,
     647             :                             const STACK_OF(X509_EXTENSION) *exts,
     648             :                             unsigned long flag, int indent);
     649             : 
     650             : int X509_check_ca(X509 *x);
     651             : int X509_check_purpose(X509 *x, int id, int ca);
     652             : int X509_supported_extension(X509_EXTENSION *ex);
     653             : int X509_PURPOSE_set(int *p, int purpose);
     654             : int X509_check_issued(X509 *issuer, X509 *subject);
     655             : int X509_check_akid(X509 *issuer, AUTHORITY_KEYID *akid);
     656             : void X509_set_proxy_flag(X509 *x);
     657             : void X509_set_proxy_pathlen(X509 *x, long l);
     658             : long X509_get_proxy_pathlen(X509 *x);
     659             : 
     660             : uint32_t X509_get_extension_flags(X509 *x);
     661             : uint32_t X509_get_key_usage(X509 *x);
     662             : uint32_t X509_get_extended_key_usage(X509 *x);
     663             : const ASN1_OCTET_STRING *X509_get0_subject_key_id(X509 *x);
     664             : const ASN1_OCTET_STRING *X509_get0_authority_key_id(X509 *x);
     665             : const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x);
     666             : const ASN1_INTEGER *X509_get0_authority_serial(X509 *x);
     667             : 
     668             : int X509_PURPOSE_get_count(void);
     669             : X509_PURPOSE *X509_PURPOSE_get0(int idx);
     670             : int X509_PURPOSE_get_by_sname(const char *sname);
     671             : int X509_PURPOSE_get_by_id(int id);
     672             : int X509_PURPOSE_add(int id, int trust, int flags,
     673             :                      int (*ck) (const X509_PURPOSE *, const X509 *, int),
     674             :                      const char *name, const char *sname, void *arg);
     675             : char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp);
     676             : char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp);
     677             : int X509_PURPOSE_get_trust(const X509_PURPOSE *xp);
     678             : void X509_PURPOSE_cleanup(void);
     679             : int X509_PURPOSE_get_id(const X509_PURPOSE *);
     680             : 
     681             : STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x);
     682             : STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x);
     683             : void X509_email_free(STACK_OF(OPENSSL_STRING) *sk);
     684             : STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x);
     685             : /* Flags for X509_check_* functions */
     686             : 
     687             : /*
     688             :  * Always check subject name for host match even if subject alt names present
     689             :  */
     690             : # define X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT    0x1
     691             : /* Disable wildcard matching for dnsName fields and common name. */
     692             : # define X509_CHECK_FLAG_NO_WILDCARDS    0x2
     693             : /* Wildcards must not match a partial label. */
     694             : # define X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS 0x4
     695             : /* Allow (non-partial) wildcards to match multiple labels. */
     696             : # define X509_CHECK_FLAG_MULTI_LABEL_WILDCARDS 0x8
     697             : /* Constraint verifier subdomain patterns to match a single labels. */
     698             : # define X509_CHECK_FLAG_SINGLE_LABEL_SUBDOMAINS 0x10
     699             : /* Never check the subject CN */
     700             : # define X509_CHECK_FLAG_NEVER_CHECK_SUBJECT    0x20
     701             : /*
     702             :  * Match reference identifiers starting with "." to any sub-domain.
     703             :  * This is a non-public flag, turned on implicitly when the subject
     704             :  * reference identity is a DNS name.
     705             :  */
     706             : # define _X509_CHECK_FLAG_DOT_SUBDOMAINS 0x8000
     707             : 
     708             : int X509_check_host(X509 *x, const char *chk, size_t chklen,
     709             :                     unsigned int flags, char **peername);
     710             : int X509_check_email(X509 *x, const char *chk, size_t chklen,
     711             :                      unsigned int flags);
     712             : int X509_check_ip(X509 *x, const unsigned char *chk, size_t chklen,
     713             :                   unsigned int flags);
     714             : int X509_check_ip_asc(X509 *x, const char *ipasc, unsigned int flags);
     715             : 
     716             : ASN1_OCTET_STRING *a2i_IPADDRESS(const char *ipasc);
     717             : ASN1_OCTET_STRING *a2i_IPADDRESS_NC(const char *ipasc);
     718             : int X509V3_NAME_from_section(X509_NAME *nm, STACK_OF(CONF_VALUE) *dn_sk,
     719             :                              unsigned long chtype);
     720             : 
     721             : void X509_POLICY_NODE_print(BIO *out, X509_POLICY_NODE *node, int indent);
     722             : DEFINE_STACK_OF(X509_POLICY_NODE)
     723             : 
     724             : #ifndef OPENSSL_NO_RFC3779
     725             : typedef struct ASRange_st {
     726             :     ASN1_INTEGER *min, *max;
     727             : } ASRange;
     728             : 
     729             : # define ASIdOrRange_id          0
     730             : # define ASIdOrRange_range       1
     731             : 
     732             : typedef struct ASIdOrRange_st {
     733             :     int type;
     734             :     union {
     735             :         ASN1_INTEGER *id;
     736             :         ASRange *range;
     737             :     } u;
     738             : } ASIdOrRange;
     739             : 
     740             : typedef STACK_OF(ASIdOrRange) ASIdOrRanges;
     741             : DEFINE_STACK_OF(ASIdOrRange)
     742             : 
     743             : # define ASIdentifierChoice_inherit              0
     744             : # define ASIdentifierChoice_asIdsOrRanges        1
     745             : 
     746             : typedef struct ASIdentifierChoice_st {
     747             :     int type;
     748             :     union {
     749             :         ASN1_NULL *inherit;
     750             :         ASIdOrRanges *asIdsOrRanges;
     751             :     } u;
     752             : } ASIdentifierChoice;
     753             : 
     754             : typedef struct ASIdentifiers_st {
     755             :     ASIdentifierChoice *asnum, *rdi;
     756             : } ASIdentifiers;
     757             : 
     758             : DECLARE_ASN1_FUNCTIONS(ASRange)
     759             : DECLARE_ASN1_FUNCTIONS(ASIdOrRange)
     760             : DECLARE_ASN1_FUNCTIONS(ASIdentifierChoice)
     761             : DECLARE_ASN1_FUNCTIONS(ASIdentifiers)
     762             : 
     763             : typedef struct IPAddressRange_st {
     764             :     ASN1_BIT_STRING *min, *max;
     765             : } IPAddressRange;
     766             : 
     767             : # define IPAddressOrRange_addressPrefix  0
     768             : # define IPAddressOrRange_addressRange   1
     769             : 
     770             : typedef struct IPAddressOrRange_st {
     771             :     int type;
     772             :     union {
     773             :         ASN1_BIT_STRING *addressPrefix;
     774             :         IPAddressRange *addressRange;
     775             :     } u;
     776             : } IPAddressOrRange;
     777             : 
     778             : typedef STACK_OF(IPAddressOrRange) IPAddressOrRanges;
     779             : DEFINE_STACK_OF(IPAddressOrRange)
     780             : 
     781             : # define IPAddressChoice_inherit                 0
     782             : # define IPAddressChoice_addressesOrRanges       1
     783             : 
     784             : typedef struct IPAddressChoice_st {
     785             :     int type;
     786             :     union {
     787             :         ASN1_NULL *inherit;
     788             :         IPAddressOrRanges *addressesOrRanges;
     789             :     } u;
     790             : } IPAddressChoice;
     791             : 
     792             : typedef struct IPAddressFamily_st {
     793             :     ASN1_OCTET_STRING *addressFamily;
     794             :     IPAddressChoice *ipAddressChoice;
     795             : } IPAddressFamily;
     796             : 
     797             : typedef STACK_OF(IPAddressFamily) IPAddrBlocks;
     798             : DEFINE_STACK_OF(IPAddressFamily)
     799             : 
     800             : DECLARE_ASN1_FUNCTIONS(IPAddressRange)
     801             : DECLARE_ASN1_FUNCTIONS(IPAddressOrRange)
     802             : DECLARE_ASN1_FUNCTIONS(IPAddressChoice)
     803             : DECLARE_ASN1_FUNCTIONS(IPAddressFamily)
     804             : 
     805             : /*
     806             :  * API tag for elements of the ASIdentifer SEQUENCE.
     807             :  */
     808             : # define V3_ASID_ASNUM   0
     809             : # define V3_ASID_RDI     1
     810             : 
     811             : /*
     812             :  * AFI values, assigned by IANA.  It'd be nice to make the AFI
     813             :  * handling code totally generic, but there are too many little things
     814             :  * that would need to be defined for other address families for it to
     815             :  * be worth the trouble.
     816             :  */
     817             : # define IANA_AFI_IPV4   1
     818             : # define IANA_AFI_IPV6   2
     819             : 
     820             : /*
     821             :  * Utilities to construct and extract values from RFC3779 extensions,
     822             :  * since some of the encodings (particularly for IP address prefixes
     823             :  * and ranges) are a bit tedious to work with directly.
     824             :  */
     825             : int X509v3_asid_add_inherit(ASIdentifiers *asid, int which);
     826             : int X509v3_asid_add_id_or_range(ASIdentifiers *asid, int which,
     827             :                                 ASN1_INTEGER *min, ASN1_INTEGER *max);
     828             : int X509v3_addr_add_inherit(IPAddrBlocks *addr,
     829             :                             const unsigned afi, const unsigned *safi);
     830             : int X509v3_addr_add_prefix(IPAddrBlocks *addr,
     831             :                            const unsigned afi, const unsigned *safi,
     832             :                            unsigned char *a, const int prefixlen);
     833             : int X509v3_addr_add_range(IPAddrBlocks *addr,
     834             :                           const unsigned afi, const unsigned *safi,
     835             :                           unsigned char *min, unsigned char *max);
     836             : unsigned X509v3_addr_get_afi(const IPAddressFamily *f);
     837             : int X509v3_addr_get_range(IPAddressOrRange *aor, const unsigned afi,
     838             :                           unsigned char *min, unsigned char *max,
     839             :                           const int length);
     840             : 
     841             : /*
     842             :  * Canonical forms.
     843             :  */
     844             : int X509v3_asid_is_canonical(ASIdentifiers *asid);
     845             : int X509v3_addr_is_canonical(IPAddrBlocks *addr);
     846             : int X509v3_asid_canonize(ASIdentifiers *asid);
     847             : int X509v3_addr_canonize(IPAddrBlocks *addr);
     848             : 
     849             : /*
     850             :  * Tests for inheritance and containment.
     851             :  */
     852             : int X509v3_asid_inherits(ASIdentifiers *asid);
     853             : int X509v3_addr_inherits(IPAddrBlocks *addr);
     854             : int X509v3_asid_subset(ASIdentifiers *a, ASIdentifiers *b);
     855             : int X509v3_addr_subset(IPAddrBlocks *a, IPAddrBlocks *b);
     856             : 
     857             : /*
     858             :  * Check whether RFC 3779 extensions nest properly in chains.
     859             :  */
     860             : int X509v3_asid_validate_path(X509_STORE_CTX *);
     861             : int X509v3_addr_validate_path(X509_STORE_CTX *);
     862             : int X509v3_asid_validate_resource_set(STACK_OF(X509) *chain,
     863             :                                       ASIdentifiers *ext,
     864             :                                       int allow_inheritance);
     865             : int X509v3_addr_validate_resource_set(STACK_OF(X509) *chain,
     866             :                                       IPAddrBlocks *ext, int allow_inheritance);
     867             : 
     868             : #endif                         /* OPENSSL_NO_RFC3779 */
     869             : 
     870             : DEFINE_STACK_OF(ASN1_STRING)
     871             : 
     872             : /*
     873             :  * Admission Syntax
     874             :  */
     875             : typedef struct NamingAuthority_st NAMING_AUTHORITY;
     876             : typedef struct ProfessionInfo_st PROFESSION_INFO;
     877             : typedef struct Admissions_st ADMISSIONS;
     878             : typedef struct AdmissionSyntax_st ADMISSION_SYNTAX;
     879             : DECLARE_ASN1_FUNCTIONS(NAMING_AUTHORITY)
     880             : DECLARE_ASN1_FUNCTIONS(PROFESSION_INFO)
     881             : DECLARE_ASN1_FUNCTIONS(ADMISSIONS)
     882             : DECLARE_ASN1_FUNCTIONS(ADMISSION_SYNTAX)
     883             : DEFINE_STACK_OF(ADMISSIONS)
     884             : DEFINE_STACK_OF(PROFESSION_INFO)
     885             : typedef STACK_OF(PROFESSION_INFO) PROFESSION_INFOS;
     886             : 
     887             : const ASN1_OBJECT *NAMING_AUTHORITY_get0_authorityId(
     888             :     const NAMING_AUTHORITY *n);
     889             : const ASN1_IA5STRING *NAMING_AUTHORITY_get0_authorityURL(
     890             :     const NAMING_AUTHORITY *n);
     891             : const ASN1_STRING *NAMING_AUTHORITY_get0_authorityText(
     892             :     const NAMING_AUTHORITY *n);
     893             : void NAMING_AUTHORITY_set0_authorityId(NAMING_AUTHORITY *n,
     894             :     ASN1_OBJECT* namingAuthorityId);
     895             : void NAMING_AUTHORITY_set0_authorityURL(NAMING_AUTHORITY *n,
     896             :     ASN1_IA5STRING* namingAuthorityUrl);
     897             : void NAMING_AUTHORITY_set0_authorityText(NAMING_AUTHORITY *n,
     898             :     ASN1_STRING* namingAuthorityText);
     899             : 
     900             : const GENERAL_NAME *ADMISSION_SYNTAX_get0_admissionAuthority(
     901             :     const ADMISSION_SYNTAX *as);
     902             : void ADMISSION_SYNTAX_set0_admissionAuthority(
     903             :     ADMISSION_SYNTAX *as, GENERAL_NAME *aa);
     904             : const STACK_OF(ADMISSIONS) *ADMISSION_SYNTAX_get0_contentsOfAdmissions(
     905             :     const ADMISSION_SYNTAX *as);
     906             : void ADMISSION_SYNTAX_set0_contentsOfAdmissions(
     907             :     ADMISSION_SYNTAX *as, STACK_OF(ADMISSIONS) *a);
     908             : const GENERAL_NAME *ADMISSIONS_get0_admissionAuthority(const ADMISSIONS *a);
     909             : void ADMISSIONS_set0_admissionAuthority(ADMISSIONS *a, GENERAL_NAME *aa);
     910             : const NAMING_AUTHORITY *ADMISSIONS_get0_namingAuthority(const ADMISSIONS *a);
     911             : void ADMISSIONS_set0_namingAuthority(ADMISSIONS *a, NAMING_AUTHORITY *na);
     912             : const PROFESSION_INFOS *ADMISSIONS_get0_professionInfos(const ADMISSIONS *a);
     913             : void ADMISSIONS_set0_professionInfos(ADMISSIONS *a, PROFESSION_INFOS *pi);
     914             : const ASN1_OCTET_STRING *PROFESSION_INFO_get0_addProfessionInfo(
     915             :     const PROFESSION_INFO *pi);
     916             : void PROFESSION_INFO_set0_addProfessionInfo(
     917             :     PROFESSION_INFO *pi, ASN1_OCTET_STRING *aos);
     918             : const NAMING_AUTHORITY *PROFESSION_INFO_get0_namingAuthority(
     919             :     const PROFESSION_INFO *pi);
     920             : void PROFESSION_INFO_set0_namingAuthority(
     921             :     PROFESSION_INFO *pi, NAMING_AUTHORITY *na);
     922             : const STACK_OF(ASN1_STRING) *PROFESSION_INFO_get0_professionItems(
     923             :     const PROFESSION_INFO *pi);
     924             : void PROFESSION_INFO_set0_professionItems(
     925             :     PROFESSION_INFO *pi, STACK_OF(ASN1_STRING) *as);
     926             : const STACK_OF(ASN1_OBJECT) *PROFESSION_INFO_get0_professionOIDs(
     927             :     const PROFESSION_INFO *pi);
     928             : void PROFESSION_INFO_set0_professionOIDs(
     929             :     PROFESSION_INFO *pi, STACK_OF(ASN1_OBJECT) *po);
     930             : const ASN1_PRINTABLESTRING *PROFESSION_INFO_get0_registrationNumber(
     931             :     const PROFESSION_INFO *pi);
     932             : void PROFESSION_INFO_set0_registrationNumber(
     933             :     PROFESSION_INFO *pi, ASN1_PRINTABLESTRING *rn);
     934             : 
     935             : # ifdef  __cplusplus
     936             : }
     937             : # endif
     938             : #endif

Generated by: LCOV version 1.14