asn1.h revision 68651
155714Skris/* crypto/asn1/asn1.h */ 255714Skris/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 355714Skris * All rights reserved. 455714Skris * 555714Skris * This package is an SSL implementation written 655714Skris * by Eric Young (eay@cryptsoft.com). 755714Skris * The implementation was written so as to conform with Netscapes SSL. 855714Skris * 955714Skris * This library is free for commercial and non-commercial use as long as 1055714Skris * the following conditions are aheared to. The following conditions 1155714Skris * apply to all code found in this distribution, be it the RC4, RSA, 1255714Skris * lhash, DES, etc., code; not just the SSL code. The SSL documentation 1355714Skris * included with this distribution is covered by the same copyright terms 1455714Skris * except that the holder is Tim Hudson (tjh@cryptsoft.com). 1555714Skris * 1655714Skris * Copyright remains Eric Young's, and as such any Copyright notices in 1755714Skris * the code are not to be removed. 1855714Skris * If this package is used in a product, Eric Young should be given attribution 1955714Skris * as the author of the parts of the library used. 2055714Skris * This can be in the form of a textual message at program startup or 2155714Skris * in documentation (online or textual) provided with the package. 2255714Skris * 2355714Skris * Redistribution and use in source and binary forms, with or without 2455714Skris * modification, are permitted provided that the following conditions 2555714Skris * are met: 2655714Skris * 1. Redistributions of source code must retain the copyright 2755714Skris * notice, this list of conditions and the following disclaimer. 2855714Skris * 2. Redistributions in binary form must reproduce the above copyright 2955714Skris * notice, this list of conditions and the following disclaimer in the 3055714Skris * documentation and/or other materials provided with the distribution. 3155714Skris * 3. All advertising materials mentioning features or use of this software 3255714Skris * must display the following acknowledgement: 3355714Skris * "This product includes cryptographic software written by 3455714Skris * Eric Young (eay@cryptsoft.com)" 3555714Skris * The word 'cryptographic' can be left out if the rouines from the library 3655714Skris * being used are not cryptographic related :-). 3755714Skris * 4. If you include any Windows specific code (or a derivative thereof) from 3855714Skris * the apps directory (application code) you must include an acknowledgement: 3955714Skris * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 4055714Skris * 4155714Skris * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 4255714Skris * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 4355714Skris * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 4455714Skris * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 4555714Skris * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 4655714Skris * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 4755714Skris * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 4855714Skris * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 4955714Skris * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 5055714Skris * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 5155714Skris * SUCH DAMAGE. 5255714Skris * 5355714Skris * The licence and distribution terms for any publically available version or 5455714Skris * derivative of this code cannot be changed. i.e. this code cannot simply be 5555714Skris * copied and put under another distribution licence 5655714Skris * [including the GNU Public Licence.] 5755714Skris */ 5855714Skris 5955714Skris#ifndef HEADER_ASN1_H 6055714Skris#define HEADER_ASN1_H 6155714Skris 6268651Skris#include <time.h> 6368651Skris#ifndef NO_BIO 6468651Skris#include <openssl/bio.h> 6555714Skris#endif 6655714Skris#include <openssl/bn.h> 6755714Skris#include <openssl/stack.h> 6855714Skris#include <openssl/safestack.h> 6955714Skris 7068651Skris#include <openssl/symhacks.h> 7168651Skris 7268651Skris#ifdef __cplusplus 7368651Skrisextern "C" { 7459191Skris#endif 7559191Skris 7655714Skris#define V_ASN1_UNIVERSAL 0x00 7755714Skris#define V_ASN1_APPLICATION 0x40 7855714Skris#define V_ASN1_CONTEXT_SPECIFIC 0x80 7955714Skris#define V_ASN1_PRIVATE 0xc0 8055714Skris 8155714Skris#define V_ASN1_CONSTRUCTED 0x20 8255714Skris#define V_ASN1_PRIMITIVE_TAG 0x1f 8355714Skris#define V_ASN1_PRIMATIVE_TAG 0x1f 8455714Skris 8559191Skris#define V_ASN1_APP_CHOOSE -2 /* let the recipient choose */ 8668651Skris#define V_ASN1_OTHER -3 /* used in ASN1_TYPE */ 8755714Skris 8868651Skris#define V_ASN1_NEG 0x100 /* negative flag */ 8968651Skris 9055714Skris#define V_ASN1_UNDEF -1 9155714Skris#define V_ASN1_EOC 0 9255714Skris#define V_ASN1_BOOLEAN 1 /**/ 9355714Skris#define V_ASN1_INTEGER 2 9468651Skris#define V_ASN1_NEG_INTEGER (2 | V_ASN1_NEG) 9555714Skris#define V_ASN1_BIT_STRING 3 9655714Skris#define V_ASN1_OCTET_STRING 4 9755714Skris#define V_ASN1_NULL 5 9855714Skris#define V_ASN1_OBJECT 6 9955714Skris#define V_ASN1_OBJECT_DESCRIPTOR 7 10055714Skris#define V_ASN1_EXTERNAL 8 10155714Skris#define V_ASN1_REAL 9 10255714Skris#define V_ASN1_ENUMERATED 10 10368651Skris#define V_ASN1_NEG_ENUMERATED (10 | V_ASN1_NEG) 10455714Skris#define V_ASN1_UTF8STRING 12 10555714Skris#define V_ASN1_SEQUENCE 16 10655714Skris#define V_ASN1_SET 17 10755714Skris#define V_ASN1_NUMERICSTRING 18 /**/ 10855714Skris#define V_ASN1_PRINTABLESTRING 19 10955714Skris#define V_ASN1_T61STRING 20 11055714Skris#define V_ASN1_TELETEXSTRING 20 /* alias */ 11155714Skris#define V_ASN1_VIDEOTEXSTRING 21 /**/ 11255714Skris#define V_ASN1_IA5STRING 22 11355714Skris#define V_ASN1_UTCTIME 23 11455714Skris#define V_ASN1_GENERALIZEDTIME 24 /**/ 11555714Skris#define V_ASN1_GRAPHICSTRING 25 /**/ 11655714Skris#define V_ASN1_ISO64STRING 26 /**/ 11755714Skris#define V_ASN1_VISIBLESTRING 26 /* alias */ 11855714Skris#define V_ASN1_GENERALSTRING 27 /**/ 11955714Skris#define V_ASN1_UNIVERSALSTRING 28 /**/ 12055714Skris#define V_ASN1_BMPSTRING 30 12155714Skris 12255714Skris/* For use with d2i_ASN1_type_bytes() */ 12355714Skris#define B_ASN1_NUMERICSTRING 0x0001 12455714Skris#define B_ASN1_PRINTABLESTRING 0x0002 12555714Skris#define B_ASN1_T61STRING 0x0004 12655714Skris#define B_ASN1_TELETEXSTRING 0x0008 12755714Skris#define B_ASN1_VIDEOTEXSTRING 0x0008 12855714Skris#define B_ASN1_IA5STRING 0x0010 12955714Skris#define B_ASN1_GRAPHICSTRING 0x0020 13055714Skris#define B_ASN1_ISO64STRING 0x0040 13155714Skris#define B_ASN1_VISIBLESTRING 0x0040 13255714Skris#define B_ASN1_GENERALSTRING 0x0080 13355714Skris#define B_ASN1_UNIVERSALSTRING 0x0100 13455714Skris#define B_ASN1_OCTET_STRING 0x0200 13555714Skris#define B_ASN1_BIT_STRING 0x0400 13655714Skris#define B_ASN1_BMPSTRING 0x0800 13755714Skris#define B_ASN1_UNKNOWN 0x1000 13855714Skris#define B_ASN1_UTF8STRING 0x2000 13955714Skris 14059191Skris/* For use with ASN1_mbstring_copy() */ 14159191Skris#define MBSTRING_FLAG 0x1000 14259191Skris#define MBSTRING_ASC (MBSTRING_FLAG|1) 14359191Skris#define MBSTRING_BMP (MBSTRING_FLAG|2) 14459191Skris#define MBSTRING_UNIV (MBSTRING_FLAG|3) 14559191Skris#define MBSTRING_UTF8 (MBSTRING_FLAG|4) 14659191Skris 14768651Skrisstruct X509_algor_st; 14855714Skris 14968651Skris#define DECLARE_ASN1_SET_OF(type) /* filled in by mkstack.pl */ 15068651Skris#define IMPLEMENT_ASN1_SET_OF(type) /* nothing, no longer needed */ 15155714Skris 15255714Skristypedef struct asn1_ctx_st 15355714Skris { 15455714Skris unsigned char *p;/* work char pointer */ 15555714Skris int eos; /* end of sequence read for indefinite encoding */ 15655714Skris int error; /* error code to use when returning an error */ 15755714Skris int inf; /* constructed if 0x20, indefinite is 0x21 */ 15855714Skris int tag; /* tag from last 'get object' */ 15955714Skris int xclass; /* class from last 'get object' */ 16055714Skris long slen; /* length of last 'get object' */ 16159191Skris unsigned char *max; /* largest value of p allowed */ 16255714Skris unsigned char *q;/* temporary variable */ 16355714Skris unsigned char **pp;/* variable */ 16455714Skris int line; /* used in error processing */ 16555714Skris } ASN1_CTX; 16655714Skris 16755714Skris/* These are used internally in the ASN1_OBJECT to keep track of 16855714Skris * whether the names and data need to be free()ed */ 16955714Skris#define ASN1_OBJECT_FLAG_DYNAMIC 0x01 /* internal use */ 17055714Skris#define ASN1_OBJECT_FLAG_CRITICAL 0x02 /* critical x509v3 object id */ 17155714Skris#define ASN1_OBJECT_FLAG_DYNAMIC_STRINGS 0x04 /* internal use */ 17255714Skris#define ASN1_OBJECT_FLAG_DYNAMIC_DATA 0x08 /* internal use */ 17355714Skristypedef struct asn1_object_st 17455714Skris { 17555714Skris const char *sn,*ln; 17655714Skris int nid; 17755714Skris int length; 17855714Skris unsigned char *data; 17955714Skris int flags; /* Should we free this one */ 18055714Skris } ASN1_OBJECT; 18155714Skris 18255714Skris#define ASN1_STRING_FLAG_BITS_LEFT 0x08 /* Set if 0x07 has bits left value */ 18355714Skris/* This is the base type that holds just about everything :-) */ 18455714Skristypedef struct asn1_string_st 18555714Skris { 18655714Skris int length; 18755714Skris int type; 18855714Skris unsigned char *data; 18955714Skris /* The value of the following field depends on the type being 19055714Skris * held. It is mostly being used for BIT_STRING so if the 19155714Skris * input data has a non-zero 'unused bits' value, it will be 19255714Skris * handled correctly */ 19355714Skris long flags; 19455714Skris } ASN1_STRING; 19555714Skris 19659191Skris#define STABLE_FLAGS_MALLOC 0x01 19759191Skris#define STABLE_NO_MASK 0x02 19859191Skris#define DIRSTRING_TYPE \ 19959191Skris (B_ASN1_PRINTABLESTRING|B_ASN1_T61STRING|B_ASN1_BMPSTRING|B_ASN1_UTF8STRING) 20059191Skris#define PKCS9STRING_TYPE (DIRSTRING_TYPE|B_ASN1_IA5STRING) 20159191Skris 20259191Skristypedef struct asn1_string_table_st { 20359191Skris int nid; 20459191Skris long minsize; 20559191Skris long maxsize; 20659191Skris unsigned long mask; 20759191Skris unsigned long flags; 20859191Skris} ASN1_STRING_TABLE; 20959191Skris 21059191SkrisDECLARE_STACK_OF(ASN1_STRING_TABLE) 21159191Skris 21259191Skris/* size limits: this stuff is taken straight from RFC2459 */ 21359191Skris 21459191Skris#define ub_name 32768 21559191Skris#define ub_common_name 64 21659191Skris#define ub_locality_name 128 21759191Skris#define ub_state_name 128 21859191Skris#define ub_organization_name 64 21959191Skris#define ub_organization_unit_name 64 22059191Skris#define ub_title 64 22159191Skris#define ub_email_address 128 22259191Skris 22359191Skris#ifdef NO_ASN1_TYPEDEFS 22455714Skris#define ASN1_INTEGER ASN1_STRING 22555714Skris#define ASN1_ENUMERATED ASN1_STRING 22655714Skris#define ASN1_BIT_STRING ASN1_STRING 22755714Skris#define ASN1_OCTET_STRING ASN1_STRING 22855714Skris#define ASN1_PRINTABLESTRING ASN1_STRING 22955714Skris#define ASN1_T61STRING ASN1_STRING 23055714Skris#define ASN1_IA5STRING ASN1_STRING 23155714Skris#define ASN1_UTCTIME ASN1_STRING 23255714Skris#define ASN1_GENERALIZEDTIME ASN1_STRING 23355714Skris#define ASN1_TIME ASN1_STRING 23455714Skris#define ASN1_GENERALSTRING ASN1_STRING 23555714Skris#define ASN1_UNIVERSALSTRING ASN1_STRING 23655714Skris#define ASN1_BMPSTRING ASN1_STRING 23755714Skris#define ASN1_VISIBLESTRING ASN1_STRING 23855714Skris#define ASN1_UTF8STRING ASN1_STRING 23968651Skris#define ASN1_BOOLEAN int 24055714Skris#else 24155714Skristypedef struct asn1_string_st ASN1_INTEGER; 24255714Skristypedef struct asn1_string_st ASN1_ENUMERATED; 24355714Skristypedef struct asn1_string_st ASN1_BIT_STRING; 24455714Skristypedef struct asn1_string_st ASN1_OCTET_STRING; 24555714Skristypedef struct asn1_string_st ASN1_PRINTABLESTRING; 24655714Skristypedef struct asn1_string_st ASN1_T61STRING; 24755714Skristypedef struct asn1_string_st ASN1_IA5STRING; 24855714Skristypedef struct asn1_string_st ASN1_GENERALSTRING; 24955714Skristypedef struct asn1_string_st ASN1_UNIVERSALSTRING; 25055714Skristypedef struct asn1_string_st ASN1_BMPSTRING; 25155714Skristypedef struct asn1_string_st ASN1_UTCTIME; 25255714Skristypedef struct asn1_string_st ASN1_TIME; 25355714Skristypedef struct asn1_string_st ASN1_GENERALIZEDTIME; 25455714Skristypedef struct asn1_string_st ASN1_VISIBLESTRING; 25555714Skristypedef struct asn1_string_st ASN1_UTF8STRING; 25668651Skristypedef int ASN1_BOOLEAN; 25755714Skris#endif 25855714Skris 25959191Skristypedef int ASN1_NULL; 26059191Skris 26168651Skris/* Parameters used by ASN1_STRING_print_ex() */ 26268651Skris 26368651Skris/* These determine which characters to escape: 26468651Skris * RFC2253 special characters, control characters and 26568651Skris * MSB set characters 26668651Skris */ 26768651Skris 26868651Skris#define ASN1_STRFLGS_ESC_2253 1 26968651Skris#define ASN1_STRFLGS_ESC_CTRL 2 27068651Skris#define ASN1_STRFLGS_ESC_MSB 4 27168651Skris 27268651Skris 27368651Skris/* This flag determines how we do escaping: normally 27468651Skris * RC2253 backslash only, set this to use backslash and 27568651Skris * quote. 27668651Skris */ 27768651Skris 27868651Skris#define ASN1_STRFLGS_ESC_QUOTE 8 27968651Skris 28068651Skris 28168651Skris/* These three flags are internal use only. */ 28268651Skris 28368651Skris/* Character is a valid PrintableString character */ 28468651Skris#define CHARTYPE_PRINTABLESTRING 0x10 28568651Skris/* Character needs escaping if it is the first character */ 28668651Skris#define CHARTYPE_FIRST_ESC_2253 0x20 28768651Skris/* Character needs escaping if it is the last character */ 28868651Skris#define CHARTYPE_LAST_ESC_2253 0x40 28968651Skris 29068651Skris/* NB the internal flags are safely reused below by flags 29168651Skris * handled at the top level. 29268651Skris */ 29368651Skris 29468651Skris/* If this is set we convert all character strings 29568651Skris * to UTF8 first 29668651Skris */ 29768651Skris 29868651Skris#define ASN1_STRFLGS_UTF8_CONVERT 0x10 29968651Skris 30068651Skris/* If this is set we don't attempt to interpret content: 30168651Skris * just assume all strings are 1 byte per character. This 30268651Skris * will produce some pretty odd looking output! 30368651Skris */ 30468651Skris 30568651Skris#define ASN1_STRFLGS_IGNORE_TYPE 0x20 30668651Skris 30768651Skris/* If this is set we include the string type in the output */ 30868651Skris#define ASN1_STRFLGS_SHOW_TYPE 0x40 30968651Skris 31068651Skris/* This determines which strings to display and which to 31168651Skris * 'dump' (hex dump of content octets or DER encoding). We can 31268651Skris * only dump non character strings or everything. If we 31368651Skris * don't dump 'unknown' they are interpreted as character 31468651Skris * strings with 1 octet per character and are subject to 31568651Skris * the usual escaping options. 31668651Skris */ 31768651Skris 31868651Skris#define ASN1_STRFLGS_DUMP_ALL 0x80 31968651Skris#define ASN1_STRFLGS_DUMP_UNKNOWN 0x100 32068651Skris 32168651Skris/* These determine what 'dumping' does, we can dump the 32268651Skris * content octets or the DER encoding: both use the 32368651Skris * RFC2253 #XXXXX notation. 32468651Skris */ 32568651Skris 32668651Skris#define ASN1_STRFLGS_DUMP_DER 0x200 32768651Skris 32868651Skris/* All the string flags consistent with RFC2253, 32968651Skris * escaping control characters isn't essential in 33068651Skris * RFC2253 but it is advisable anyway. 33168651Skris */ 33268651Skris 33368651Skris#define ASN1_STRFLGS_RFC2253 (ASN1_STRFLGS_ESC_2253 | \ 33468651Skris ASN1_STRFLGS_ESC_CTRL | \ 33568651Skris ASN1_STRFLGS_ESC_MSB | \ 33668651Skris ASN1_STRFLGS_UTF8_CONVERT | \ 33768651Skris ASN1_STRFLGS_DUMP_UNKNOWN | \ 33868651Skris ASN1_STRFLGS_DUMP_DER) 33968651Skris 34068651SkrisDECLARE_STACK_OF(ASN1_INTEGER) 34168651SkrisDECLARE_ASN1_SET_OF(ASN1_INTEGER) 34268651Skris 34355714Skristypedef struct asn1_type_st 34455714Skris { 34555714Skris int type; 34655714Skris union { 34755714Skris char *ptr; 34868651Skris ASN1_BOOLEAN boolean; 34955714Skris ASN1_STRING * asn1_string; 35055714Skris ASN1_OBJECT * object; 35155714Skris ASN1_INTEGER * integer; 35255714Skris ASN1_ENUMERATED * enumerated; 35355714Skris ASN1_BIT_STRING * bit_string; 35455714Skris ASN1_OCTET_STRING * octet_string; 35555714Skris ASN1_PRINTABLESTRING * printablestring; 35655714Skris ASN1_T61STRING * t61string; 35755714Skris ASN1_IA5STRING * ia5string; 35855714Skris ASN1_GENERALSTRING * generalstring; 35955714Skris ASN1_BMPSTRING * bmpstring; 36055714Skris ASN1_UNIVERSALSTRING * universalstring; 36155714Skris ASN1_UTCTIME * utctime; 36255714Skris ASN1_GENERALIZEDTIME * generalizedtime; 36355714Skris ASN1_VISIBLESTRING * visiblestring; 36455714Skris ASN1_UTF8STRING * utf8string; 36555714Skris /* set and sequence are left complete and still 36655714Skris * contain the set or sequence bytes */ 36755714Skris ASN1_STRING * set; 36855714Skris ASN1_STRING * sequence; 36955714Skris } value; 37055714Skris } ASN1_TYPE; 37155714Skris 37255714SkrisDECLARE_STACK_OF(ASN1_TYPE) 37355714SkrisDECLARE_ASN1_SET_OF(ASN1_TYPE) 37455714Skris 37555714Skristypedef struct asn1_method_st 37655714Skris { 37755714Skris int (*i2d)(); 37855714Skris char *(*d2i)(); 37955714Skris char *(*create)(); 38055714Skris void (*destroy)(); 38155714Skris } ASN1_METHOD; 38255714Skris 38355714Skris/* This is used when parsing some Netscape objects */ 38455714Skristypedef struct asn1_header_st 38555714Skris { 38655714Skris ASN1_OCTET_STRING *header; 38755714Skris char *data; 38855714Skris ASN1_METHOD *meth; 38955714Skris } ASN1_HEADER; 39055714Skris 39159191Skris/* This is used to contain a list of bit names */ 39259191Skristypedef struct BIT_STRING_BITNAME_st { 39359191Skris int bitnum; 39459191Skris const char *lname; 39559191Skris const char *sname; 39659191Skris} BIT_STRING_BITNAME; 39755714Skris 39859191Skris 39959191Skris#define M_ASN1_STRING_length(x) ((x)->length) 40059191Skris#define M_ASN1_STRING_length_set(x, n) ((x)->length = (n)) 40159191Skris#define M_ASN1_STRING_type(x) ((x)->type) 40259191Skris#define M_ASN1_STRING_data(x) ((x)->data) 40359191Skris 40455714Skris/* Macros for string operations */ 40559191Skris#define M_ASN1_BIT_STRING_new() (ASN1_BIT_STRING *)\ 40655714Skris ASN1_STRING_type_new(V_ASN1_BIT_STRING) 40759191Skris#define M_ASN1_BIT_STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) 40859191Skris#define M_ASN1_BIT_STRING_dup(a) (ASN1_BIT_STRING *)\ 40955714Skris ASN1_STRING_dup((ASN1_STRING *)a) 41059191Skris#define M_ASN1_BIT_STRING_cmp(a,b) ASN1_STRING_cmp(\ 41155714Skris (ASN1_STRING *)a,(ASN1_STRING *)b) 41259191Skris#define M_ASN1_BIT_STRING_set(a,b,c) ASN1_STRING_set((ASN1_STRING *)a,b,c) 41355714Skris 41459191Skris#define M_ASN1_INTEGER_new() (ASN1_INTEGER *)\ 41555714Skris ASN1_STRING_type_new(V_ASN1_INTEGER) 41659191Skris#define M_ASN1_INTEGER_free(a) ASN1_STRING_free((ASN1_STRING *)a) 41759191Skris#define M_ASN1_INTEGER_dup(a) (ASN1_INTEGER *)ASN1_STRING_dup((ASN1_STRING *)a) 41859191Skris#define M_ASN1_INTEGER_cmp(a,b) ASN1_STRING_cmp(\ 41955714Skris (ASN1_STRING *)a,(ASN1_STRING *)b) 42055714Skris 42159191Skris#define M_ASN1_ENUMERATED_new() (ASN1_ENUMERATED *)\ 42255714Skris ASN1_STRING_type_new(V_ASN1_ENUMERATED) 42359191Skris#define M_ASN1_ENUMERATED_free(a) ASN1_STRING_free((ASN1_STRING *)a) 42459191Skris#define M_ASN1_ENUMERATED_dup(a) (ASN1_ENUMERATED *)ASN1_STRING_dup((ASN1_STRING *)a) 42559191Skris#define M_ASN1_ENUMERATED_cmp(a,b) ASN1_STRING_cmp(\ 42655714Skris (ASN1_STRING *)a,(ASN1_STRING *)b) 42755714Skris 42859191Skris#define M_ASN1_OCTET_STRING_new() (ASN1_OCTET_STRING *)\ 42955714Skris ASN1_STRING_type_new(V_ASN1_OCTET_STRING) 43059191Skris#define M_ASN1_OCTET_STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) 43159191Skris#define M_ASN1_OCTET_STRING_dup(a) (ASN1_OCTET_STRING *)\ 43255714Skris ASN1_STRING_dup((ASN1_STRING *)a) 43359191Skris#define M_ASN1_OCTET_STRING_cmp(a,b) ASN1_STRING_cmp(\ 43455714Skris (ASN1_STRING *)a,(ASN1_STRING *)b) 43559191Skris#define M_ASN1_OCTET_STRING_set(a,b,c) ASN1_STRING_set((ASN1_STRING *)a,b,c) 43659191Skris#define M_ASN1_OCTET_STRING_print(a,b) ASN1_STRING_print(a,(ASN1_STRING *)b) 43755714Skris#define M_i2d_ASN1_OCTET_STRING(a,pp) \ 43855714Skris i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_OCTET_STRING,\ 43959191Skris V_ASN1_UNIVERSAL) 44055714Skris 44159191Skris#define M_ASN1_PRINTABLE_new() ASN1_STRING_type_new(V_ASN1_T61STRING) 44259191Skris#define M_ASN1_PRINTABLE_free(a) ASN1_STRING_free((ASN1_STRING *)a) 44355714Skris#define M_i2d_ASN1_PRINTABLE(a,pp) i2d_ASN1_bytes((ASN1_STRING *)a,\ 44455714Skris pp,a->type,V_ASN1_UNIVERSAL) 44555714Skris#define M_d2i_ASN1_PRINTABLE(a,pp,l) \ 44655714Skris d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l, \ 44755714Skris B_ASN1_PRINTABLESTRING| \ 44855714Skris B_ASN1_T61STRING| \ 44955714Skris B_ASN1_IA5STRING| \ 45055714Skris B_ASN1_BIT_STRING| \ 45155714Skris B_ASN1_UNIVERSALSTRING|\ 45255714Skris B_ASN1_BMPSTRING|\ 45359191Skris B_ASN1_UTF8STRING|\ 45455714Skris B_ASN1_UNKNOWN) 45555714Skris 45659191Skris#define M_DIRECTORYSTRING_new() ASN1_STRING_type_new(V_ASN1_PRINTABLESTRING) 45759191Skris#define M_DIRECTORYSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) 45855714Skris#define M_i2d_DIRECTORYSTRING(a,pp) i2d_ASN1_bytes((ASN1_STRING *)a,\ 45955714Skris pp,a->type,V_ASN1_UNIVERSAL) 46055714Skris#define M_d2i_DIRECTORYSTRING(a,pp,l) \ 46155714Skris d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l, \ 46255714Skris B_ASN1_PRINTABLESTRING| \ 46355714Skris B_ASN1_TELETEXSTRING|\ 46455714Skris B_ASN1_BMPSTRING|\ 46555714Skris B_ASN1_UNIVERSALSTRING|\ 46655714Skris B_ASN1_UTF8STRING) 46755714Skris 46859191Skris#define M_DISPLAYTEXT_new() ASN1_STRING_type_new(V_ASN1_VISIBLESTRING) 46959191Skris#define M_DISPLAYTEXT_free(a) ASN1_STRING_free((ASN1_STRING *)a) 47055714Skris#define M_i2d_DISPLAYTEXT(a,pp) i2d_ASN1_bytes((ASN1_STRING *)a,\ 47155714Skris pp,a->type,V_ASN1_UNIVERSAL) 47255714Skris#define M_d2i_DISPLAYTEXT(a,pp,l) \ 47355714Skris d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l, \ 47455714Skris B_ASN1_VISIBLESTRING| \ 47555714Skris B_ASN1_BMPSTRING|\ 47655714Skris B_ASN1_UTF8STRING) 47755714Skris 47859191Skris#define M_ASN1_PRINTABLESTRING_new() (ASN1_PRINTABLESTRING *)\ 47955714Skris ASN1_STRING_type_new(V_ASN1_PRINTABLESTRING) 48059191Skris#define M_ASN1_PRINTABLESTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) 48155714Skris#define M_i2d_ASN1_PRINTABLESTRING(a,pp) \ 48255714Skris i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_PRINTABLESTRING,\ 48355714Skris V_ASN1_UNIVERSAL) 48455714Skris#define M_d2i_ASN1_PRINTABLESTRING(a,pp,l) \ 48555714Skris (ASN1_PRINTABLESTRING *)d2i_ASN1_type_bytes\ 48655714Skris ((ASN1_STRING **)a,pp,l,B_ASN1_PRINTABLESTRING) 48755714Skris 48859191Skris#define M_ASN1_T61STRING_new() (ASN1_T61STRING *)\ 48955714Skris ASN1_STRING_type_new(V_ASN1_T61STRING) 49059191Skris#define M_ASN1_T61STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) 49155714Skris#define M_i2d_ASN1_T61STRING(a,pp) \ 49255714Skris i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_T61STRING,\ 49355714Skris V_ASN1_UNIVERSAL) 49455714Skris#define M_d2i_ASN1_T61STRING(a,pp,l) \ 49555714Skris (ASN1_T61STRING *)d2i_ASN1_type_bytes\ 49655714Skris ((ASN1_STRING **)a,pp,l,B_ASN1_T61STRING) 49755714Skris 49859191Skris#define M_ASN1_IA5STRING_new() (ASN1_IA5STRING *)\ 49955714Skris ASN1_STRING_type_new(V_ASN1_IA5STRING) 50059191Skris#define M_ASN1_IA5STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) 50159191Skris#define M_ASN1_IA5STRING_dup(a) \ 50255714Skris (ASN1_IA5STRING *)ASN1_STRING_dup((ASN1_STRING *)a) 50355714Skris#define M_i2d_ASN1_IA5STRING(a,pp) \ 50455714Skris i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_IA5STRING,\ 50555714Skris V_ASN1_UNIVERSAL) 50655714Skris#define M_d2i_ASN1_IA5STRING(a,pp,l) \ 50755714Skris (ASN1_IA5STRING *)d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l,\ 50855714Skris B_ASN1_IA5STRING) 50955714Skris 51059191Skris#define M_ASN1_UTCTIME_new() (ASN1_UTCTIME *)\ 51155714Skris ASN1_STRING_type_new(V_ASN1_UTCTIME) 51259191Skris#define M_ASN1_UTCTIME_free(a) ASN1_STRING_free((ASN1_STRING *)a) 51359191Skris#define M_ASN1_UTCTIME_dup(a) (ASN1_UTCTIME *)ASN1_STRING_dup((ASN1_STRING *)a) 51455714Skris 51559191Skris#define M_ASN1_GENERALIZEDTIME_new() (ASN1_GENERALIZEDTIME *)\ 51655714Skris ASN1_STRING_type_new(V_ASN1_GENERALIZEDTIME) 51759191Skris#define M_ASN1_GENERALIZEDTIME_free(a) ASN1_STRING_free((ASN1_STRING *)a) 51859191Skris#define M_ASN1_GENERALIZEDTIME_dup(a) (ASN1_GENERALIZEDTIME *)ASN1_STRING_dup(\ 51955714Skris (ASN1_STRING *)a) 52055714Skris 52159191Skris#define M_ASN1_TIME_new() (ASN1_TIME *)\ 52255714Skris ASN1_STRING_type_new(V_ASN1_UTCTIME) 52359191Skris#define M_ASN1_TIME_free(a) ASN1_STRING_free((ASN1_STRING *)a) 52459191Skris#define M_ASN1_TIME_dup(a) (ASN1_TIME *)ASN1_STRING_dup((ASN1_STRING *)a) 52555714Skris 52659191Skris#define M_ASN1_GENERALSTRING_new() (ASN1_GENERALSTRING *)\ 52755714Skris ASN1_STRING_type_new(V_ASN1_GENERALSTRING) 52859191Skris#define M_ASN1_GENERALSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) 52955714Skris#define M_i2d_ASN1_GENERALSTRING(a,pp) \ 53055714Skris i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_GENERALSTRING,\ 53155714Skris V_ASN1_UNIVERSAL) 53255714Skris#define M_d2i_ASN1_GENERALSTRING(a,pp,l) \ 53355714Skris (ASN1_GENERALSTRING *)d2i_ASN1_type_bytes\ 53455714Skris ((ASN1_STRING **)a,pp,l,B_ASN1_GENERALSTRING) 53555714Skris 53659191Skris#define M_ASN1_UNIVERSALSTRING_new() (ASN1_UNIVERSALSTRING *)\ 53755714Skris ASN1_STRING_type_new(V_ASN1_UNIVERSALSTRING) 53859191Skris#define M_ASN1_UNIVERSALSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) 53955714Skris#define M_i2d_ASN1_UNIVERSALSTRING(a,pp) \ 54055714Skris i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_UNIVERSALSTRING,\ 54155714Skris V_ASN1_UNIVERSAL) 54255714Skris#define M_d2i_ASN1_UNIVERSALSTRING(a,pp,l) \ 54355714Skris (ASN1_UNIVERSALSTRING *)d2i_ASN1_type_bytes\ 54455714Skris ((ASN1_STRING **)a,pp,l,B_ASN1_UNIVERSALSTRING) 54555714Skris 54659191Skris#define M_ASN1_BMPSTRING_new() (ASN1_BMPSTRING *)\ 54755714Skris ASN1_STRING_type_new(V_ASN1_BMPSTRING) 54859191Skris#define M_ASN1_BMPSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) 54955714Skris#define M_i2d_ASN1_BMPSTRING(a,pp) \ 55055714Skris i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_BMPSTRING,\ 55155714Skris V_ASN1_UNIVERSAL) 55255714Skris#define M_d2i_ASN1_BMPSTRING(a,pp,l) \ 55355714Skris (ASN1_BMPSTRING *)d2i_ASN1_type_bytes\ 55455714Skris ((ASN1_STRING **)a,pp,l,B_ASN1_BMPSTRING) 55555714Skris 55659191Skris#define M_ASN1_VISIBLESTRING_new() (ASN1_VISIBLESTRING *)\ 55755714Skris ASN1_STRING_type_new(V_ASN1_VISIBLESTRING) 55859191Skris#define M_ASN1_VISIBLESTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) 55955714Skris#define M_i2d_ASN1_VISIBLESTRING(a,pp) \ 56055714Skris i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_VISIBLESTRING,\ 56155714Skris V_ASN1_UNIVERSAL) 56255714Skris#define M_d2i_ASN1_VISIBLESTRING(a,pp,l) \ 56355714Skris (ASN1_VISIBLESTRING *)d2i_ASN1_type_bytes\ 56455714Skris ((ASN1_STRING **)a,pp,l,B_ASN1_VISIBLESTRING) 56555714Skris 56659191Skris#define M_ASN1_UTF8STRING_new() (ASN1_UTF8STRING *)\ 56755714Skris ASN1_STRING_type_new(V_ASN1_UTF8STRING) 56859191Skris#define M_ASN1_UTF8STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) 56955714Skris#define M_i2d_ASN1_UTF8STRING(a,pp) \ 57055714Skris i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_UTF8STRING,\ 57155714Skris V_ASN1_UNIVERSAL) 57255714Skris#define M_d2i_ASN1_UTF8STRING(a,pp,l) \ 57355714Skris (ASN1_UTF8STRING *)d2i_ASN1_type_bytes\ 57455714Skris ((ASN1_STRING **)a,pp,l,B_ASN1_UTF8STRING) 57555714Skris 57655714Skris /* for the is_set parameter to i2d_ASN1_SET */ 57755714Skris#define IS_SEQUENCE 0 57855714Skris#define IS_SET 1 57955714Skris 58055714SkrisASN1_TYPE * ASN1_TYPE_new(void ); 58155714Skrisvoid ASN1_TYPE_free(ASN1_TYPE *a); 58255714Skrisint i2d_ASN1_TYPE(ASN1_TYPE *a,unsigned char **pp); 58355714SkrisASN1_TYPE * d2i_ASN1_TYPE(ASN1_TYPE **a,unsigned char **pp,long length); 58455714Skrisint ASN1_TYPE_get(ASN1_TYPE *a); 58555714Skrisvoid ASN1_TYPE_set(ASN1_TYPE *a, int type, void *value); 58655714Skris 58755714SkrisASN1_OBJECT * ASN1_OBJECT_new(void ); 58855714Skrisvoid ASN1_OBJECT_free(ASN1_OBJECT *a); 58955714Skrisint i2d_ASN1_OBJECT(ASN1_OBJECT *a,unsigned char **pp); 59068651SkrisASN1_OBJECT * c2i_ASN1_OBJECT(ASN1_OBJECT **a,unsigned char **pp, 59168651Skris long length); 59255714SkrisASN1_OBJECT * d2i_ASN1_OBJECT(ASN1_OBJECT **a,unsigned char **pp, 59355714Skris long length); 59455714Skris 59555714SkrisDECLARE_STACK_OF(ASN1_OBJECT) 59655714SkrisDECLARE_ASN1_SET_OF(ASN1_OBJECT) 59755714Skris 59859191SkrisASN1_STRING * ASN1_STRING_new(void); 59955714Skrisvoid ASN1_STRING_free(ASN1_STRING *a); 60055714SkrisASN1_STRING * ASN1_STRING_dup(ASN1_STRING *a); 60155714SkrisASN1_STRING * ASN1_STRING_type_new(int type ); 60255714Skrisint ASN1_STRING_cmp(ASN1_STRING *a, ASN1_STRING *b); 60355714Skris /* Since this is used to store all sorts of things, via macros, for now, make 60455714Skris its data void * */ 60555714Skrisint ASN1_STRING_set(ASN1_STRING *str, const void *data, int len); 60659191Skrisint ASN1_STRING_length(ASN1_STRING *x); 60759191Skrisvoid ASN1_STRING_length_set(ASN1_STRING *x, int n); 60859191Skrisint ASN1_STRING_type(ASN1_STRING *x); 60959191Skrisunsigned char * ASN1_STRING_data(ASN1_STRING *x); 61055714Skris 61159191SkrisASN1_BIT_STRING * ASN1_BIT_STRING_new(void); 61259191Skrisvoid ASN1_BIT_STRING_free(ASN1_BIT_STRING *a); 61355714Skrisint i2d_ASN1_BIT_STRING(ASN1_BIT_STRING *a,unsigned char **pp); 61468651Skrisint i2c_ASN1_BIT_STRING(ASN1_BIT_STRING *a,unsigned char **pp); 61555714SkrisASN1_BIT_STRING *d2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a,unsigned char **pp, 61655714Skris long length); 61768651SkrisASN1_BIT_STRING *c2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a,unsigned char **pp, 61868651Skris long length); 61959191Skrisint ASN1_BIT_STRING_set(ASN1_BIT_STRING *a, unsigned char *d, 62059191Skris int length ); 62155714Skrisint ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *a, int n, int value); 62255714Skrisint ASN1_BIT_STRING_get_bit(ASN1_BIT_STRING *a, int n); 62355714Skris 62468651Skris#ifndef NO_BIO 62559191Skrisint ASN1_BIT_STRING_name_print(BIO *out, ASN1_BIT_STRING *bs, 62659191Skris BIT_STRING_BITNAME *tbl, int indent); 62759191Skris#endif 62859191Skrisint ASN1_BIT_STRING_num_asc(char *name, BIT_STRING_BITNAME *tbl); 62959191Skrisint ASN1_BIT_STRING_set_asc(ASN1_BIT_STRING *bs, char *name, int value, 63059191Skris BIT_STRING_BITNAME *tbl); 63155714Skris 63255714Skrisint i2d_ASN1_BOOLEAN(int a,unsigned char **pp); 63355714Skrisint d2i_ASN1_BOOLEAN(int *a,unsigned char **pp,long length); 63455714Skris 63559191SkrisASN1_INTEGER * ASN1_INTEGER_new(void); 63659191Skrisvoid ASN1_INTEGER_free(ASN1_INTEGER *a); 63755714Skrisint i2d_ASN1_INTEGER(ASN1_INTEGER *a,unsigned char **pp); 63868651Skrisint i2c_ASN1_INTEGER(ASN1_INTEGER *a,unsigned char **pp); 63955714SkrisASN1_INTEGER *d2i_ASN1_INTEGER(ASN1_INTEGER **a,unsigned char **pp, 64055714Skris long length); 64168651SkrisASN1_INTEGER *c2i_ASN1_INTEGER(ASN1_INTEGER **a,unsigned char **pp, 64268651Skris long length); 64355714SkrisASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a,unsigned char **pp, 64455714Skris long length); 64559191SkrisASN1_INTEGER * ASN1_INTEGER_dup(ASN1_INTEGER *x); 64659191Skrisint ASN1_INTEGER_cmp(ASN1_INTEGER *x, ASN1_INTEGER *y); 64755714Skris 64859191SkrisASN1_ENUMERATED * ASN1_ENUMERATED_new(void); 64959191Skrisvoid ASN1_ENUMERATED_free(ASN1_ENUMERATED *a); 65055714Skrisint i2d_ASN1_ENUMERATED(ASN1_ENUMERATED *a,unsigned char **pp); 65155714SkrisASN1_ENUMERATED *d2i_ASN1_ENUMERATED(ASN1_ENUMERATED **a,unsigned char **pp, 65255714Skris long length); 65355714Skris 65455714Skrisint ASN1_UTCTIME_check(ASN1_UTCTIME *a); 65555714SkrisASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s,time_t t); 65655714Skrisint ASN1_UTCTIME_set_string(ASN1_UTCTIME *s, char *str); 65768651Skrisint ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t); 65868651Skris#if 0 65968651Skristime_t ASN1_UTCTIME_get(const ASN1_UTCTIME *s); 66068651Skris#endif 66155714Skris 66255714Skrisint ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *a); 66355714SkrisASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s,time_t t); 66455714Skrisint ASN1_GENERALIZEDTIME_set_string(ASN1_GENERALIZEDTIME *s, char *str); 66555714Skris 66659191SkrisASN1_OCTET_STRING * ASN1_OCTET_STRING_new(void); 66759191Skrisvoid ASN1_OCTET_STRING_free(ASN1_OCTET_STRING *a); 66855714Skrisint i2d_ASN1_OCTET_STRING(ASN1_OCTET_STRING *a,unsigned char **pp); 66955714SkrisASN1_OCTET_STRING *d2i_ASN1_OCTET_STRING(ASN1_OCTET_STRING **a, 67055714Skris unsigned char **pp,long length); 67159191SkrisASN1_OCTET_STRING * ASN1_OCTET_STRING_dup(ASN1_OCTET_STRING *a); 67259191Skrisint ASN1_OCTET_STRING_cmp(ASN1_OCTET_STRING *a, ASN1_OCTET_STRING *b); 67359191Skrisint ASN1_OCTET_STRING_set(ASN1_OCTET_STRING *str, unsigned char *data, int len); 67455714Skris 67559191SkrisASN1_VISIBLESTRING * ASN1_VISIBLESTRING_new(void); 67659191Skrisvoid ASN1_VISIBLESTRING_free(ASN1_VISIBLESTRING *a); 67755714Skrisint i2d_ASN1_VISIBLESTRING(ASN1_VISIBLESTRING *a,unsigned char **pp); 67855714SkrisASN1_VISIBLESTRING *d2i_ASN1_VISIBLESTRING(ASN1_VISIBLESTRING **a, 67955714Skris unsigned char **pp,long length); 68055714Skris 68159191SkrisASN1_UTF8STRING * ASN1_UTF8STRING_new(void); 68259191Skrisvoid ASN1_UTF8STRING_free(ASN1_UTF8STRING *a); 68355714Skrisint i2d_ASN1_UTF8STRING(ASN1_UTF8STRING *a,unsigned char **pp); 68455714SkrisASN1_UTF8STRING *d2i_ASN1_UTF8STRING(ASN1_UTF8STRING **a, 68555714Skris unsigned char **pp,long length); 68655714Skris 68759191SkrisASN1_NULL * ASN1_NULL_new(void); 68859191Skrisvoid ASN1_NULL_free(ASN1_NULL *a); 68959191Skrisint i2d_ASN1_NULL(ASN1_NULL *a,unsigned char **pp); 69059191SkrisASN1_NULL *d2i_ASN1_NULL(ASN1_NULL **a, unsigned char **pp,long length); 69159191Skris 69259191SkrisASN1_BMPSTRING * ASN1_BMPSTRING_new(void); 69359191Skrisvoid ASN1_BMPSTRING_free(ASN1_BMPSTRING *a); 69455714Skrisint i2d_ASN1_BMPSTRING(ASN1_BMPSTRING *a, unsigned char **pp); 69555714SkrisASN1_BMPSTRING *d2i_ASN1_BMPSTRING(ASN1_BMPSTRING **a, unsigned char **pp, 69655714Skris long length); 69755714Skris 69859191Skris 69959191Skrisint UTF8_getc(const unsigned char *str, int len, unsigned long *val); 70059191Skrisint UTF8_putc(unsigned char *str, int len, unsigned long value); 70159191Skris 70255714Skrisint i2d_ASN1_PRINTABLE(ASN1_STRING *a,unsigned char **pp); 70355714SkrisASN1_STRING *d2i_ASN1_PRINTABLE(ASN1_STRING **a, 70455714Skris unsigned char **pp, long l); 70559191Skris 70659191SkrisASN1_PRINTABLESTRING * ASN1_PRINTABLESTRING_new(void); 70759191Skrisvoid ASN1_PRINTABLESTRING_free(ASN1_PRINTABLESTRING *a); 70855714SkrisASN1_PRINTABLESTRING *d2i_ASN1_PRINTABLESTRING(ASN1_PRINTABLESTRING **a, 70955714Skris unsigned char **pp, long l); 71059191Skrisint i2d_ASN1_PRINTABLESTRING(ASN1_PRINTABLESTRING *a, unsigned char **pp); 71155714Skris 71259191SkrisASN1_STRING * DIRECTORYSTRING_new(void); 71359191Skrisvoid DIRECTORYSTRING_free(ASN1_STRING *a); 71455714Skrisint i2d_DIRECTORYSTRING(ASN1_STRING *a,unsigned char **pp); 71555714SkrisASN1_STRING *d2i_DIRECTORYSTRING(ASN1_STRING **a, unsigned char **pp, 71655714Skris long length); 71755714Skris 71859191SkrisASN1_STRING * DISPLAYTEXT_new(void); 71959191Skrisvoid DISPLAYTEXT_free(ASN1_STRING *a); 72055714Skrisint i2d_DISPLAYTEXT(ASN1_STRING *a,unsigned char **pp); 72155714SkrisASN1_STRING *d2i_DISPLAYTEXT(ASN1_STRING **a, unsigned char **pp, long length); 72255714Skris 72359191SkrisASN1_T61STRING * ASN1_T61STRING_new(void); 72459191Skrisvoid ASN1_T61STRING_free(ASN1_IA5STRING *a); 72555714SkrisASN1_T61STRING *d2i_ASN1_T61STRING(ASN1_T61STRING **a, 72655714Skris unsigned char **pp, long l); 72759191Skris 72859191SkrisASN1_IA5STRING * ASN1_IA5STRING_new(void); 72959191Skrisvoid ASN1_IA5STRING_free(ASN1_IA5STRING *a); 73055714Skrisint i2d_ASN1_IA5STRING(ASN1_IA5STRING *a,unsigned char **pp); 73155714SkrisASN1_IA5STRING *d2i_ASN1_IA5STRING(ASN1_IA5STRING **a, 73255714Skris unsigned char **pp, long l); 73355714Skris 73459191SkrisASN1_UTCTIME * ASN1_UTCTIME_new(void); 73559191Skrisvoid ASN1_UTCTIME_free(ASN1_UTCTIME *a); 73655714Skrisint i2d_ASN1_UTCTIME(ASN1_UTCTIME *a,unsigned char **pp); 73755714SkrisASN1_UTCTIME * d2i_ASN1_UTCTIME(ASN1_UTCTIME **a,unsigned char **pp, 73855714Skris long length); 73955714Skris 74059191SkrisASN1_GENERALIZEDTIME * ASN1_GENERALIZEDTIME_new(void); 74159191Skrisvoid ASN1_GENERALIZEDTIME_free(ASN1_GENERALIZEDTIME *a); 74255714Skrisint i2d_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME *a,unsigned char **pp); 74355714SkrisASN1_GENERALIZEDTIME * d2i_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME **a,unsigned char **pp, 74455714Skris long length); 74555714Skris 74659191SkrisASN1_TIME * ASN1_TIME_new(void); 74759191Skrisvoid ASN1_TIME_free(ASN1_TIME *a); 74855714Skrisint i2d_ASN1_TIME(ASN1_TIME *a,unsigned char **pp); 74955714SkrisASN1_TIME * d2i_ASN1_TIME(ASN1_TIME **a,unsigned char **pp, long length); 75055714SkrisASN1_TIME *ASN1_TIME_set(ASN1_TIME *s,time_t t); 75155714Skris 75255714Skrisint i2d_ASN1_SET(STACK *a, unsigned char **pp, 75355714Skris int (*func)(), int ex_tag, int ex_class, int is_set); 75455714SkrisSTACK * d2i_ASN1_SET(STACK **a, unsigned char **pp, long length, 75568651Skris char *(*func)(), void (*free_func)(void *), 75655714Skris int ex_tag, int ex_class); 75755714Skris 75868651Skris#ifndef NO_BIO 75955714Skrisint i2a_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *a); 76055714Skrisint a2i_ASN1_INTEGER(BIO *bp,ASN1_INTEGER *bs,char *buf,int size); 76155714Skrisint i2a_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *a); 76255714Skrisint a2i_ASN1_ENUMERATED(BIO *bp,ASN1_ENUMERATED *bs,char *buf,int size); 76355714Skrisint i2a_ASN1_OBJECT(BIO *bp,ASN1_OBJECT *a); 76455714Skrisint a2i_ASN1_STRING(BIO *bp,ASN1_STRING *bs,char *buf,int size); 76555714Skrisint i2a_ASN1_STRING(BIO *bp, ASN1_STRING *a, int type); 76655714Skris#endif 76755714Skrisint i2t_ASN1_OBJECT(char *buf,int buf_len,ASN1_OBJECT *a); 76855714Skris 76955714Skrisint a2d_ASN1_OBJECT(unsigned char *out,int olen, const char *buf, int num); 77055714SkrisASN1_OBJECT *ASN1_OBJECT_create(int nid, unsigned char *data,int len, 77155714Skris char *sn, char *ln); 77255714Skris 77355714Skrisint ASN1_INTEGER_set(ASN1_INTEGER *a, long v); 77455714Skrislong ASN1_INTEGER_get(ASN1_INTEGER *a); 77555714SkrisASN1_INTEGER *BN_to_ASN1_INTEGER(BIGNUM *bn, ASN1_INTEGER *ai); 77655714SkrisBIGNUM *ASN1_INTEGER_to_BN(ASN1_INTEGER *ai,BIGNUM *bn); 77755714Skris 77855714Skrisint ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v); 77955714Skrislong ASN1_ENUMERATED_get(ASN1_ENUMERATED *a); 78055714SkrisASN1_ENUMERATED *BN_to_ASN1_ENUMERATED(BIGNUM *bn, ASN1_ENUMERATED *ai); 78155714SkrisBIGNUM *ASN1_ENUMERATED_to_BN(ASN1_ENUMERATED *ai,BIGNUM *bn); 78255714Skris 78355714Skris/* General */ 78455714Skris/* given a string, return the correct type, max is the maximum length */ 78555714Skrisint ASN1_PRINTABLE_type(unsigned char *s, int max); 78655714Skris 78755714Skrisint i2d_ASN1_bytes(ASN1_STRING *a, unsigned char **pp, int tag, int xclass); 78855714SkrisASN1_STRING *d2i_ASN1_bytes(ASN1_STRING **a, unsigned char **pp, 78955714Skris long length, int Ptag, int Pclass); 79055714Skris/* type is one or more of the B_ASN1_ values. */ 79155714SkrisASN1_STRING *d2i_ASN1_type_bytes(ASN1_STRING **a,unsigned char **pp, 79255714Skris long length,int type); 79355714Skris 79455714Skris/* PARSING */ 79555714Skrisint asn1_Finish(ASN1_CTX *c); 79655714Skris 79755714Skris/* SPECIALS */ 79855714Skrisint ASN1_get_object(unsigned char **pp, long *plength, int *ptag, 79955714Skris int *pclass, long omax); 80055714Skrisint ASN1_check_infinite_end(unsigned char **p,long len); 80155714Skrisvoid ASN1_put_object(unsigned char **pp, int constructed, int length, 80255714Skris int tag, int xclass); 80355714Skrisint ASN1_object_size(int constructed, int length, int tag); 80455714Skris 80555714Skris/* Used to implement other functions */ 80655714Skrischar *ASN1_dup(int (*i2d)(),char *(*d2i)(),char *x); 80755714Skris 80855714Skris#ifndef NO_FP_API 80955714Skrischar *ASN1_d2i_fp(char *(*xnew)(),char *(*d2i)(),FILE *fp,unsigned char **x); 81055714Skrisint ASN1_i2d_fp(int (*i2d)(),FILE *out,unsigned char *x); 81168651Skrisint ASN1_STRING_print_ex_fp(FILE *fp, ASN1_STRING *str, unsigned long flags); 81255714Skris#endif 81355714Skris 81468651Skrisint ASN1_STRING_to_UTF8(unsigned char **out, ASN1_STRING *in); 81568651Skris 81668651Skris#ifndef NO_BIO 81755714Skrischar *ASN1_d2i_bio(char *(*xnew)(),char *(*d2i)(),BIO *bp,unsigned char **x); 81855714Skrisint ASN1_i2d_bio(int (*i2d)(),BIO *out,unsigned char *x); 81955714Skrisint ASN1_UTCTIME_print(BIO *fp,ASN1_UTCTIME *a); 82055714Skrisint ASN1_GENERALIZEDTIME_print(BIO *fp,ASN1_GENERALIZEDTIME *a); 82155714Skrisint ASN1_TIME_print(BIO *fp,ASN1_TIME *a); 82255714Skrisint ASN1_STRING_print(BIO *bp,ASN1_STRING *v); 82368651Skrisint ASN1_STRING_print_ex(BIO *out, ASN1_STRING *str, unsigned long flags); 82455714Skrisint ASN1_parse(BIO *bp,unsigned char *pp,long len,int indent); 82568651Skrisint ASN1_parse_dump(BIO *bp,unsigned char *pp,long len,int indent,int dump); 82655714Skris#endif 82759191Skrisconst char *ASN1_tag2str(int tag); 82855714Skris 82955714Skris/* Used to load and write netscape format cert/key */ 83055714Skrisint i2d_ASN1_HEADER(ASN1_HEADER *a,unsigned char **pp); 83155714SkrisASN1_HEADER *d2i_ASN1_HEADER(ASN1_HEADER **a,unsigned char **pp, long length); 83255714SkrisASN1_HEADER *ASN1_HEADER_new(void ); 83355714Skrisvoid ASN1_HEADER_free(ASN1_HEADER *a); 83455714Skris 83555714Skrisint ASN1_UNIVERSALSTRING_to_string(ASN1_UNIVERSALSTRING *s); 83655714Skris 83755714Skrisvoid ERR_load_ASN1_strings(void); 83855714Skris 83955714Skris/* Not used that much at this point, except for the first two */ 84055714SkrisASN1_METHOD *X509_asn1_meth(void); 84155714SkrisASN1_METHOD *RSAPrivateKey_asn1_meth(void); 84255714SkrisASN1_METHOD *ASN1_IA5STRING_asn1_meth(void); 84355714SkrisASN1_METHOD *ASN1_BIT_STRING_asn1_meth(void); 84455714Skris 84555714Skrisint ASN1_TYPE_set_octetstring(ASN1_TYPE *a, 84655714Skris unsigned char *data, int len); 84755714Skrisint ASN1_TYPE_get_octetstring(ASN1_TYPE *a, 84855714Skris unsigned char *data, int max_len); 84955714Skrisint ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num, 85055714Skris unsigned char *data, int len); 85155714Skrisint ASN1_TYPE_get_int_octetstring(ASN1_TYPE *a,long *num, 85255714Skris unsigned char *data, int max_len); 85355714Skris 85455714SkrisSTACK *ASN1_seq_unpack(unsigned char *buf, int len, char *(*d2i)(), 85568651Skris void (*free_func)(void *) ); 85655714Skrisunsigned char *ASN1_seq_pack(STACK *safes, int (*i2d)(), unsigned char **buf, 85768651Skris int *len ); 85855714Skrisvoid *ASN1_unpack_string(ASN1_STRING *oct, char *(*d2i)()); 85955714SkrisASN1_STRING *ASN1_pack_string(void *obj, int (*i2d)(), ASN1_OCTET_STRING **oct); 86055714Skris 86159191Skrisvoid ASN1_STRING_set_default_mask(unsigned long mask); 86259191Skrisint ASN1_STRING_set_default_mask_asc(char *p); 86359191Skrisunsigned long ASN1_STRING_get_default_mask(void); 86459191Skrisint ASN1_mbstring_copy(ASN1_STRING **out, const unsigned char *in, int len, 86559191Skris int inform, unsigned long mask); 86659191Skrisint ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len, 86759191Skris int inform, unsigned long mask, 86859191Skris long minsize, long maxsize); 86959191Skris 87059191SkrisASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out, 87159191Skris const unsigned char *in, int inlen, int inform, int nid); 87259191SkrisASN1_STRING_TABLE *ASN1_STRING_TABLE_get(int nid); 87359191Skrisint ASN1_STRING_TABLE_add(int, long, long, unsigned long, unsigned long); 87459191Skrisvoid ASN1_STRING_TABLE_cleanup(void); 87559191Skris 87655714Skris/* BEGIN ERROR CODES */ 87755714Skris/* The following lines are auto generated by the script mkerr.pl. Any changes 87855714Skris * made after this point may be overwritten when the script is next run. 87955714Skris */ 88055714Skris 88155714Skris/* Error codes for the ASN1 functions. */ 88255714Skris 88355714Skris/* Function codes. */ 88455714Skris#define ASN1_F_A2D_ASN1_OBJECT 100 88555714Skris#define ASN1_F_A2I_ASN1_ENUMERATED 236 88655714Skris#define ASN1_F_A2I_ASN1_INTEGER 101 88755714Skris#define ASN1_F_A2I_ASN1_STRING 102 88859191Skris#define ASN1_F_ACCESS_DESCRIPTION_NEW 291 88955714Skris#define ASN1_F_ASN1_COLLATE_PRIMITIVE 103 89055714Skris#define ASN1_F_ASN1_D2I_BIO 104 89155714Skris#define ASN1_F_ASN1_D2I_FP 105 89255714Skris#define ASN1_F_ASN1_DUP 106 89355714Skris#define ASN1_F_ASN1_ENUMERATED_SET 232 89455714Skris#define ASN1_F_ASN1_ENUMERATED_TO_BN 233 89555714Skris#define ASN1_F_ASN1_GENERALIZEDTIME_NEW 222 89655714Skris#define ASN1_F_ASN1_GET_OBJECT 107 89755714Skris#define ASN1_F_ASN1_HEADER_NEW 108 89855714Skris#define ASN1_F_ASN1_I2D_BIO 109 89955714Skris#define ASN1_F_ASN1_I2D_FP 110 90055714Skris#define ASN1_F_ASN1_INTEGER_SET 111 90155714Skris#define ASN1_F_ASN1_INTEGER_TO_BN 112 90259191Skris#define ASN1_F_ASN1_MBSTRING_COPY 282 90355714Skris#define ASN1_F_ASN1_OBJECT_NEW 113 90455714Skris#define ASN1_F_ASN1_PACK_STRING 245 90555714Skris#define ASN1_F_ASN1_PBE_SET 253 90655714Skris#define ASN1_F_ASN1_SEQ_PACK 246 90755714Skris#define ASN1_F_ASN1_SEQ_UNPACK 247 90855714Skris#define ASN1_F_ASN1_SIGN 114 90955714Skris#define ASN1_F_ASN1_STRING_NEW 115 91059191Skris#define ASN1_F_ASN1_STRING_TABLE_ADD 283 91155714Skris#define ASN1_F_ASN1_STRING_TYPE_NEW 116 91255714Skris#define ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING 117 91355714Skris#define ASN1_F_ASN1_TYPE_GET_OCTETSTRING 118 91455714Skris#define ASN1_F_ASN1_TYPE_NEW 119 91555714Skris#define ASN1_F_ASN1_UNPACK_STRING 248 91655714Skris#define ASN1_F_ASN1_UTCTIME_NEW 120 91755714Skris#define ASN1_F_ASN1_VERIFY 121 91855714Skris#define ASN1_F_AUTHORITY_KEYID_NEW 237 91955714Skris#define ASN1_F_BASIC_CONSTRAINTS_NEW 226 92055714Skris#define ASN1_F_BN_TO_ASN1_ENUMERATED 234 92155714Skris#define ASN1_F_BN_TO_ASN1_INTEGER 122 92259191Skris#define ASN1_F_D2I_ACCESS_DESCRIPTION 284 92355714Skris#define ASN1_F_D2I_ASN1_BIT_STRING 123 92455714Skris#define ASN1_F_D2I_ASN1_BMPSTRING 124 92555714Skris#define ASN1_F_D2I_ASN1_BOOLEAN 125 92655714Skris#define ASN1_F_D2I_ASN1_BYTES 126 92755714Skris#define ASN1_F_D2I_ASN1_ENUMERATED 235 92855714Skris#define ASN1_F_D2I_ASN1_GENERALIZEDTIME 223 92955714Skris#define ASN1_F_D2I_ASN1_HEADER 127 93055714Skris#define ASN1_F_D2I_ASN1_INTEGER 128 93159191Skris#define ASN1_F_D2I_ASN1_NULL 292 93255714Skris#define ASN1_F_D2I_ASN1_OBJECT 129 93355714Skris#define ASN1_F_D2I_ASN1_OCTET_STRING 130 93455714Skris#define ASN1_F_D2I_ASN1_PRINT_TYPE 131 93555714Skris#define ASN1_F_D2I_ASN1_SET 132 93655714Skris#define ASN1_F_D2I_ASN1_TIME 224 93755714Skris#define ASN1_F_D2I_ASN1_TYPE 133 93855714Skris#define ASN1_F_D2I_ASN1_TYPE_BYTES 134 93955714Skris#define ASN1_F_D2I_ASN1_UINTEGER 280 94055714Skris#define ASN1_F_D2I_ASN1_UTCTIME 135 94155714Skris#define ASN1_F_D2I_ASN1_UTF8STRING 266 94255714Skris#define ASN1_F_D2I_ASN1_VISIBLESTRING 267 94355714Skris#define ASN1_F_D2I_AUTHORITY_KEYID 238 94455714Skris#define ASN1_F_D2I_BASIC_CONSTRAINTS 227 94555714Skris#define ASN1_F_D2I_DHPARAMS 136 94655714Skris#define ASN1_F_D2I_DIST_POINT 276 94755714Skris#define ASN1_F_D2I_DIST_POINT_NAME 277 94855714Skris#define ASN1_F_D2I_DSAPARAMS 137 94955714Skris#define ASN1_F_D2I_DSAPRIVATEKEY 138 95055714Skris#define ASN1_F_D2I_DSAPUBLICKEY 139 95155714Skris#define ASN1_F_D2I_GENERAL_NAME 230 95255714Skris#define ASN1_F_D2I_NETSCAPE_CERT_SEQUENCE 228 95355714Skris#define ASN1_F_D2I_NETSCAPE_PKEY 140 95455714Skris#define ASN1_F_D2I_NETSCAPE_RSA 141 95555714Skris#define ASN1_F_D2I_NETSCAPE_RSA_2 142 95655714Skris#define ASN1_F_D2I_NETSCAPE_SPKAC 143 95755714Skris#define ASN1_F_D2I_NETSCAPE_SPKI 144 95855714Skris#define ASN1_F_D2I_NOTICEREF 268 95959191Skris#define ASN1_F_D2I_OTHERNAME 287 96055714Skris#define ASN1_F_D2I_PBE2PARAM 262 96155714Skris#define ASN1_F_D2I_PBEPARAM 249 96255714Skris#define ASN1_F_D2I_PBKDF2PARAM 263 96355714Skris#define ASN1_F_D2I_PKCS12 254 96455714Skris#define ASN1_F_D2I_PKCS12_BAGS 255 96555714Skris#define ASN1_F_D2I_PKCS12_MAC_DATA 256 96655714Skris#define ASN1_F_D2I_PKCS12_SAFEBAG 257 96755714Skris#define ASN1_F_D2I_PKCS7 145 96855714Skris#define ASN1_F_D2I_PKCS7_DIGEST 146 96955714Skris#define ASN1_F_D2I_PKCS7_ENCRYPT 147 97055714Skris#define ASN1_F_D2I_PKCS7_ENC_CONTENT 148 97155714Skris#define ASN1_F_D2I_PKCS7_ENVELOPE 149 97255714Skris#define ASN1_F_D2I_PKCS7_ISSUER_AND_SERIAL 150 97355714Skris#define ASN1_F_D2I_PKCS7_RECIP_INFO 151 97455714Skris#define ASN1_F_D2I_PKCS7_SIGNED 152 97555714Skris#define ASN1_F_D2I_PKCS7_SIGNER_INFO 153 97655714Skris#define ASN1_F_D2I_PKCS7_SIGN_ENVELOPE 154 97755714Skris#define ASN1_F_D2I_PKCS8_PRIV_KEY_INFO 250 97855714Skris#define ASN1_F_D2I_PKEY_USAGE_PERIOD 239 97955714Skris#define ASN1_F_D2I_POLICYINFO 269 98055714Skris#define ASN1_F_D2I_POLICYQUALINFO 270 98155714Skris#define ASN1_F_D2I_PRIVATEKEY 155 98255714Skris#define ASN1_F_D2I_PUBLICKEY 156 98355714Skris#define ASN1_F_D2I_RSAPRIVATEKEY 157 98455714Skris#define ASN1_F_D2I_RSAPUBLICKEY 158 98555714Skris#define ASN1_F_D2I_SXNET 241 98655714Skris#define ASN1_F_D2I_SXNETID 243 98755714Skris#define ASN1_F_D2I_USERNOTICE 271 98855714Skris#define ASN1_F_D2I_X509 159 98955714Skris#define ASN1_F_D2I_X509_ALGOR 160 99055714Skris#define ASN1_F_D2I_X509_ATTRIBUTE 161 99159191Skris#define ASN1_F_D2I_X509_CERT_AUX 285 99255714Skris#define ASN1_F_D2I_X509_CINF 162 99355714Skris#define ASN1_F_D2I_X509_CRL 163 99455714Skris#define ASN1_F_D2I_X509_CRL_INFO 164 99555714Skris#define ASN1_F_D2I_X509_EXTENSION 165 99655714Skris#define ASN1_F_D2I_X509_KEY 166 99755714Skris#define ASN1_F_D2I_X509_NAME 167 99855714Skris#define ASN1_F_D2I_X509_NAME_ENTRY 168 99955714Skris#define ASN1_F_D2I_X509_PKEY 169 100055714Skris#define ASN1_F_D2I_X509_PUBKEY 170 100155714Skris#define ASN1_F_D2I_X509_REQ 171 100255714Skris#define ASN1_F_D2I_X509_REQ_INFO 172 100355714Skris#define ASN1_F_D2I_X509_REVOKED 173 100455714Skris#define ASN1_F_D2I_X509_SIG 174 100555714Skris#define ASN1_F_D2I_X509_VAL 175 100655714Skris#define ASN1_F_DIST_POINT_NAME_NEW 278 100755714Skris#define ASN1_F_DIST_POINT_NEW 279 100855714Skris#define ASN1_F_GENERAL_NAME_NEW 231 100955714Skris#define ASN1_F_I2D_ASN1_HEADER 176 101055714Skris#define ASN1_F_I2D_ASN1_TIME 225 101155714Skris#define ASN1_F_I2D_DHPARAMS 177 101255714Skris#define ASN1_F_I2D_DSAPARAMS 178 101355714Skris#define ASN1_F_I2D_DSAPRIVATEKEY 179 101455714Skris#define ASN1_F_I2D_DSAPUBLICKEY 180 101559191Skris#define ASN1_F_I2D_DSA_PUBKEY 290 101655714Skris#define ASN1_F_I2D_NETSCAPE_RSA 181 101755714Skris#define ASN1_F_I2D_PKCS7 182 101855714Skris#define ASN1_F_I2D_PRIVATEKEY 183 101955714Skris#define ASN1_F_I2D_PUBLICKEY 184 102055714Skris#define ASN1_F_I2D_RSAPRIVATEKEY 185 102155714Skris#define ASN1_F_I2D_RSAPUBLICKEY 186 102259191Skris#define ASN1_F_I2D_RSA_PUBKEY 289 102355714Skris#define ASN1_F_I2D_X509_ATTRIBUTE 187 102455714Skris#define ASN1_F_I2T_ASN1_OBJECT 188 102555714Skris#define ASN1_F_NETSCAPE_CERT_SEQUENCE_NEW 229 102655714Skris#define ASN1_F_NETSCAPE_PKEY_NEW 189 102755714Skris#define ASN1_F_NETSCAPE_SPKAC_NEW 190 102855714Skris#define ASN1_F_NETSCAPE_SPKI_NEW 191 102955714Skris#define ASN1_F_NOTICEREF_NEW 272 103059191Skris#define ASN1_F_OTHERNAME_NEW 288 103155714Skris#define ASN1_F_PBE2PARAM_NEW 264 103255714Skris#define ASN1_F_PBEPARAM_NEW 251 103355714Skris#define ASN1_F_PBKDF2PARAM_NEW 265 103455714Skris#define ASN1_F_PKCS12_BAGS_NEW 258 103555714Skris#define ASN1_F_PKCS12_MAC_DATA_NEW 259 103655714Skris#define ASN1_F_PKCS12_NEW 260 103755714Skris#define ASN1_F_PKCS12_SAFEBAG_NEW 261 103855714Skris#define ASN1_F_PKCS5_PBE2_SET 281 103955714Skris#define ASN1_F_PKCS7_DIGEST_NEW 192 104055714Skris#define ASN1_F_PKCS7_ENCRYPT_NEW 193 104155714Skris#define ASN1_F_PKCS7_ENC_CONTENT_NEW 194 104255714Skris#define ASN1_F_PKCS7_ENVELOPE_NEW 195 104355714Skris#define ASN1_F_PKCS7_ISSUER_AND_SERIAL_NEW 196 104455714Skris#define ASN1_F_PKCS7_NEW 197 104555714Skris#define ASN1_F_PKCS7_RECIP_INFO_NEW 198 104655714Skris#define ASN1_F_PKCS7_SIGNED_NEW 199 104755714Skris#define ASN1_F_PKCS7_SIGNER_INFO_NEW 200 104855714Skris#define ASN1_F_PKCS7_SIGN_ENVELOPE_NEW 201 104955714Skris#define ASN1_F_PKCS8_PRIV_KEY_INFO_NEW 252 105055714Skris#define ASN1_F_PKEY_USAGE_PERIOD_NEW 240 105155714Skris#define ASN1_F_POLICYINFO_NEW 273 105255714Skris#define ASN1_F_POLICYQUALINFO_NEW 274 105355714Skris#define ASN1_F_SXNETID_NEW 244 105455714Skris#define ASN1_F_SXNET_NEW 242 105555714Skris#define ASN1_F_USERNOTICE_NEW 275 105655714Skris#define ASN1_F_X509_ALGOR_NEW 202 105755714Skris#define ASN1_F_X509_ATTRIBUTE_NEW 203 105859191Skris#define ASN1_F_X509_CERT_AUX_NEW 286 105955714Skris#define ASN1_F_X509_CINF_NEW 204 106055714Skris#define ASN1_F_X509_CRL_INFO_NEW 205 106155714Skris#define ASN1_F_X509_CRL_NEW 206 106255714Skris#define ASN1_F_X509_DHPARAMS_NEW 207 106355714Skris#define ASN1_F_X509_EXTENSION_NEW 208 106455714Skris#define ASN1_F_X509_INFO_NEW 209 106555714Skris#define ASN1_F_X509_KEY_NEW 210 106655714Skris#define ASN1_F_X509_NAME_ENTRY_NEW 211 106755714Skris#define ASN1_F_X509_NAME_NEW 212 106855714Skris#define ASN1_F_X509_NEW 213 106955714Skris#define ASN1_F_X509_PKEY_NEW 214 107055714Skris#define ASN1_F_X509_PUBKEY_NEW 215 107155714Skris#define ASN1_F_X509_REQ_INFO_NEW 216 107255714Skris#define ASN1_F_X509_REQ_NEW 217 107355714Skris#define ASN1_F_X509_REVOKED_NEW 218 107455714Skris#define ASN1_F_X509_SIG_NEW 219 107555714Skris#define ASN1_F_X509_VAL_FREE 220 107655714Skris#define ASN1_F_X509_VAL_NEW 221 107755714Skris 107855714Skris/* Reason codes. */ 107955714Skris#define ASN1_R_BAD_CLASS 100 108055714Skris#define ASN1_R_BAD_OBJECT_HEADER 101 108155714Skris#define ASN1_R_BAD_PASSWORD_READ 102 108255714Skris#define ASN1_R_BAD_PKCS7_CONTENT 103 108355714Skris#define ASN1_R_BAD_PKCS7_TYPE 104 108455714Skris#define ASN1_R_BAD_TAG 105 108555714Skris#define ASN1_R_BAD_TYPE 106 108655714Skris#define ASN1_R_BN_LIB 107 108755714Skris#define ASN1_R_BOOLEAN_IS_WRONG_LENGTH 108 108855714Skris#define ASN1_R_BUFFER_TOO_SMALL 109 108959191Skris#define ASN1_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 166 109055714Skris#define ASN1_R_DATA_IS_WRONG 110 109155714Skris#define ASN1_R_DECODE_ERROR 155 109255714Skris#define ASN1_R_DECODING_ERROR 111 109355714Skris#define ASN1_R_ENCODE_ERROR 156 109455714Skris#define ASN1_R_ERROR_PARSING_SET_ELEMENT 112 109555714Skris#define ASN1_R_ERROR_SETTING_CIPHER_PARAMS 157 109655714Skris#define ASN1_R_EXPECTING_AN_ENUMERATED 154 109755714Skris#define ASN1_R_EXPECTING_AN_INTEGER 113 109855714Skris#define ASN1_R_EXPECTING_AN_OBJECT 114 109955714Skris#define ASN1_R_EXPECTING_AN_OCTET_STRING 115 110055714Skris#define ASN1_R_EXPECTING_A_BIT_STRING 116 110155714Skris#define ASN1_R_EXPECTING_A_BOOLEAN 117 110255714Skris#define ASN1_R_EXPECTING_A_GENERALIZEDTIME 151 110359191Skris#define ASN1_R_EXPECTING_A_NULL 164 110455714Skris#define ASN1_R_EXPECTING_A_TIME 152 110555714Skris#define ASN1_R_EXPECTING_A_UTCTIME 118 110655714Skris#define ASN1_R_FIRST_NUM_TOO_LARGE 119 110755714Skris#define ASN1_R_GENERALIZEDTIME_TOO_LONG 153 110855714Skris#define ASN1_R_HEADER_TOO_LONG 120 110959191Skris#define ASN1_R_ILLEGAL_CHARACTERS 158 111059191Skris#define ASN1_R_INVALID_BMPSTRING_LENGTH 159 111155714Skris#define ASN1_R_INVALID_DIGIT 121 111255714Skris#define ASN1_R_INVALID_SEPARATOR 122 111355714Skris#define ASN1_R_INVALID_TIME_FORMAT 123 111459191Skris#define ASN1_R_INVALID_UNIVERSALSTRING_LENGTH 160 111559191Skris#define ASN1_R_INVALID_UTF8STRING 161 111655714Skris#define ASN1_R_IV_TOO_LARGE 124 111755714Skris#define ASN1_R_LENGTH_ERROR 125 111855714Skris#define ASN1_R_MISSING_SECOND_NUMBER 126 111955714Skris#define ASN1_R_NON_HEX_CHARACTERS 127 112055714Skris#define ASN1_R_NOT_ENOUGH_DATA 128 112159191Skris#define ASN1_R_NULL_IS_WRONG_LENGTH 165 112255714Skris#define ASN1_R_ODD_NUMBER_OF_CHARS 129 112355714Skris#define ASN1_R_PARSING 130 112455714Skris#define ASN1_R_PRIVATE_KEY_HEADER_MISSING 131 112555714Skris#define ASN1_R_SECOND_NUMBER_TOO_LARGE 132 112655714Skris#define ASN1_R_SHORT_LINE 133 112759191Skris#define ASN1_R_STRING_TOO_LONG 163 112855714Skris#define ASN1_R_STRING_TOO_SHORT 134 112955714Skris#define ASN1_R_TAG_VALUE_TOO_HIGH 135 113055714Skris#define ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 136 113155714Skris#define ASN1_R_TOO_LONG 137 113255714Skris#define ASN1_R_UNABLE_TO_DECODE_RSA_KEY 138 113355714Skris#define ASN1_R_UNABLE_TO_DECODE_RSA_PRIVATE_KEY 139 113455714Skris#define ASN1_R_UNKNOWN_ATTRIBUTE_TYPE 140 113559191Skris#define ASN1_R_UNKNOWN_FORMAT 162 113655714Skris#define ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM 141 113755714Skris#define ASN1_R_UNKNOWN_OBJECT_TYPE 142 113855714Skris#define ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE 143 113955714Skris#define ASN1_R_UNSUPPORTED_CIPHER 144 114055714Skris#define ASN1_R_UNSUPPORTED_ENCRYPTION_ALGORITHM 145 114155714Skris#define ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE 146 114255714Skris#define ASN1_R_UTCTIME_TOO_LONG 147 114355714Skris#define ASN1_R_WRONG_PRINTABLE_TYPE 148 114455714Skris#define ASN1_R_WRONG_TAG 149 114555714Skris#define ASN1_R_WRONG_TYPE 150 114655714Skris 114755714Skris#ifdef __cplusplus 114855714Skris} 114955714Skris#endif 115055714Skris#endif 115155714Skris 1152