Fix more error codes.
[openssl.git] / crypto / asn1 / asn1.h
index a4ec44219d6c2d7045ad3628afea4a8ef83d4c26..b5fb31be60587be97cace0c3e0fbcc01220d33c3 100644 (file)
@@ -321,6 +321,12 @@ typedef struct ASN1_VALUE_st ASN1_VALUE;
 #define I2D_OF(type) int (*)(type *,unsigned char **)
 #define I2D_OF_const(type) int (*)(const type *,unsigned char **)
 
+#define TYPEDEF_D2I_OF(type) typedef type *d2i_of_##type(type **,const unsigned char **,long)
+#define TYPEDEF_I2D_OF(type) typedef int i2d_of_##type(type *,unsigned char **)
+#define TYPEDEF_D2I2D_OF(type) TYPEDEF_D2I_OF(type); TYPEDEF_I2D_OF(type)
+
+TYPEDEF_D2I2D_OF(void);
+
 /* The following macros and typedefs allow an ASN1_ITEM
  * to be embedded in a structure and referenced. Since
  * the ASN1_ITEM pointers need to be globally accessible
@@ -512,8 +518,8 @@ DECLARE_ASN1_SET_OF(ASN1_TYPE)
 
 typedef struct asn1_method_st
        {
-       int (*i2d)(void *, unsigned char **);
-       void *(*d2i)(void **,const unsigned char **,long);
+       i2d_of_void *i2d;
+       d2i_of_void *d2i;
        void *(*create)(void);
        void (*destroy)(void *);
        } ASN1_METHOD;
@@ -836,11 +842,9 @@ int ASN1_TIME_check(ASN1_TIME *t);
 ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t, ASN1_GENERALIZEDTIME **out);
 
 int i2d_ASN1_SET(STACK *a, unsigned char **pp,
-                int (*func)(void *,unsigned char **), int ex_tag, int ex_class,
-                int is_set);
+                i2d_of_void *i2d, int ex_tag, int ex_class, int is_set);
 STACK *        d2i_ASN1_SET(STACK **a, const unsigned char **pp, long length,
-                    char *(*func)(void **,const unsigned char **,long),
-                    void (*free_func)(void *),
+                    d2i_of_void *d2i, void (*free_func)(void *),
                     int ex_tag, int ex_class);
 
 #ifndef OPENSSL_NO_BIO
@@ -895,8 +899,7 @@ int ASN1_put_eoc(unsigned char **pp);
 int ASN1_object_size(int constructed, int length, int tag);
 
 /* Used to implement other functions */
-void *ASN1_dup(int (*i2d)(char *,void *), 
-              char *(*d2i)(void *,unsigned char **,long), char *x);
+void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, char *x);
 #define ASN1_dup_of(type,i2d,d2i,x) \
        ((type *(*)(I2D_OF(type),D2I_OF(type),type *))ASN1_dup)(i2d,d2i,x)
 #define ASN1_dup_of_const(type,i2d,d2i,x) \
@@ -905,14 +908,11 @@ void *ASN1_dup(int (*i2d)(char *,void *),
 void *ASN1_item_dup(const ASN1_ITEM *it, void *x);
 
 #ifndef OPENSSL_NO_FP_API
-void *ASN1_d2i_fp(void *(*xnew)(void),
-                 void *(*d2i)(void **,const unsigned char **,long), FILE *in,
-                 void **x);
+void *ASN1_d2i_fp(void *(*xnew)(void), d2i_of_void *d2i, FILE *in, void **x);
 #define ASN1_d2i_fp_of(type,xnew,d2i,in,x) \
        ((type *(*)(type *(*)(void),D2I_OF(type),FILE *,type **))ASN1_d2i_fp)(xnew,d2i,in,x)
 void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x);
-int ASN1_i2d_fp(int (*i2d)(void *, unsigned char **),FILE *out,
-               void *x);
+int ASN1_i2d_fp(i2d_of_void *i2d,FILE *out,void *x);
 #define ASN1_i2d_fp_of(type,i2d,out,x) \
        ((int (*)(I2D_OF(type),FILE *,type *))ASN1_i2d_fp)(i2d,out,x)
 #define ASN1_i2d_fp_of_const(type,i2d,out,x) \
@@ -924,17 +924,11 @@ int ASN1_STRING_print_ex_fp(FILE *fp, ASN1_STRING *str, unsigned long flags);
 int ASN1_STRING_to_UTF8(unsigned char **out, ASN1_STRING *in);
 
 #ifndef OPENSSL_NO_BIO
-char *ASN1_d2i_bio(void *(*xnew)(void),
-                  void *(*d2i)(void **,const unsigned char **,long), BIO *in,
-                  void **x);
+void *ASN1_d2i_bio(void *(*xnew)(void), d2i_of_void *d2i, BIO *in, void **x);
 #define ASN1_d2i_bio_of(type,xnew,d2i,in,x) \
        ((type *(*)(type *(*)(void),D2I_OF(type),BIO *,type **))ASN1_d2i_bio)(xnew,d2i,in,x)
-char *ASN1_d2i_bio(void *(*xnew)(void),
-                  void *(*d2i)(void **,const unsigned char **,long), BIO *in,
-                  void **x);
 void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *x);
-int ASN1_i2d_bio(int (*i2d)(void *, unsigned char **),BIO *out,
-                unsigned char *x);
+int ASN1_i2d_bio(i2d_of_void *i2d,BIO *out, unsigned char *x);
 #define ASN1_i2d_bio_of(type,i2d,out,x) \
        ((int (*)(I2D_OF(type),BIO *,type *))ASN1_i2d_bio)(i2d,out,x)
 #define ASN1_i2d_bio_of_const(type,i2d,out,x) \
@@ -974,15 +968,12 @@ int ASN1_TYPE_get_int_octetstring(ASN1_TYPE *a,long *num,
        unsigned char *data, int max_len);
 
 STACK *ASN1_seq_unpack(const unsigned char *buf, int len,
-                      char *(*d2i)(void **,const unsigned char **,long),
-                      void (*free_func)(void *));
-unsigned char *ASN1_seq_pack(STACK *safes,
-                            int (*i2d)(void *, unsigned char **),
+                      d2i_of_void *d2i, void (*free_func)(void *));
+unsigned char *ASN1_seq_pack(STACK *safes, i2d_of_void *i2d,
                             unsigned char **buf, int *len );
-void *ASN1_unpack_string(ASN1_STRING *oct,
-                        void *(*d2i)(void *,const unsigned char **,long));
+void *ASN1_unpack_string(ASN1_STRING *oct, d2i_of_void *d2i);
 void *ASN1_item_unpack(ASN1_STRING *oct, const ASN1_ITEM *it);
-ASN1_STRING *ASN1_pack_string(void *obj, int (*i2d)(void *, unsigned char **),
+ASN1_STRING *ASN1_pack_string(void *obj, i2d_of_void *i2d,
                              ASN1_OCTET_STRING **oct);
 #define ASN1_pack_string_of(type,obj,i2d,oct) \
        ((ASN1_STRING *(*)(type *,I2D_OF(type),ASN1_OCTET_STRING **))ASN1_pack_string)(obj,i2d,oct)
@@ -1030,20 +1021,22 @@ void ERR_load_ASN1_strings(void);
 #define ASN1_F_A2I_ASN1_ENUMERATED                      101
 #define ASN1_F_A2I_ASN1_INTEGER                                 102
 #define ASN1_F_A2I_ASN1_STRING                          103
-#define ASN1_F_APPEND_TAG                               176
+#define ASN1_F_APPEND_EXP                               176
 #define ASN1_F_ASN1_BIT_STRING_SET_BIT                  183
 #define ASN1_F_ASN1_CB                                  177
 #define ASN1_F_ASN1_CHECK_TLEN                          104
 #define ASN1_F_ASN1_COLLATE_PRIMITIVE                   105
 #define ASN1_F_ASN1_COLLECT                             106
-#define ASN1_F_ASN1_D2I_BIO                             107
 #define ASN1_F_ASN1_D2I_EX_PRIMITIVE                    108
 #define ASN1_F_ASN1_D2I_FP                              109
+#define ASN1_F_ASN1_D2I_READ_BIO                        107
 #define ASN1_F_ASN1_DIGEST                              184
 #define ASN1_F_ASN1_DO_ADB                              110
 #define ASN1_F_ASN1_DUP                                         111
 #define ASN1_F_ASN1_ENUMERATED_SET                      112
 #define ASN1_F_ASN1_ENUMERATED_TO_BN                    113
+#define ASN1_F_ASN1_EX_C2I                              204
+#define ASN1_F_ASN1_FIND_END                            190
 #define ASN1_F_ASN1_GENERALIZEDTIME_SET                         185
 #define ASN1_F_ASN1_GENERATE_V3                                 178
 #define ASN1_F_ASN1_GET_OBJECT                          114
@@ -1052,12 +1045,20 @@ void ERR_load_ASN1_strings(void);
 #define ASN1_F_ASN1_I2D_FP                              117
 #define ASN1_F_ASN1_INTEGER_SET                                 118
 #define ASN1_F_ASN1_INTEGER_TO_BN                       119
+#define ASN1_F_ASN1_ITEM_D2I_FP                                 190
+#define ASN1_F_ASN1_ITEM_DUP                            191
+#define ASN1_F_ASN1_ITEM_EX_COMBINE_NEW                         121
 #define ASN1_F_ASN1_ITEM_EX_D2I                                 120
-#define ASN1_F_ASN1_ITEM_NEW                            121
-#define ASN1_F_ASN1_MBSTRING_COPY                       122
+#define ASN1_F_ASN1_ITEM_I2D_BIO                        192
+#define ASN1_F_ASN1_ITEM_I2D_FP                                 193
+#define ASN1_F_ASN1_ITEM_PACK                           198
+#define ASN1_F_ASN1_ITEM_SIGN                           195
+#define ASN1_F_ASN1_ITEM_UNPACK                                 199
+#define ASN1_F_ASN1_ITEM_VERIFY                                 197
+#define ASN1_F_ASN1_MBSTRING_NCOPY                      122
 #define ASN1_F_ASN1_OBJECT_NEW                          123
 #define ASN1_F_ASN1_PACK_STRING                                 124
-#define ASN1_F_ASN1_PBE_SET                             125
+#define ASN1_F_ASN1_PKCS5_PBE_SET                       125
 #define ASN1_F_ASN1_SEQ_PACK                            126
 #define ASN1_F_ASN1_SEQ_UNPACK                          127
 #define ASN1_F_ASN1_SIGN                                128
@@ -1065,9 +1066,9 @@ void ERR_load_ASN1_strings(void);
 #define ASN1_F_ASN1_STRING_SET                          186
 #define ASN1_F_ASN1_STRING_TABLE_ADD                    129
 #define ASN1_F_ASN1_STRING_TYPE_NEW                     130
-#define ASN1_F_ASN1_TEMPLATE_D2I                        131
 #define ASN1_F_ASN1_TEMPLATE_EX_D2I                     132
 #define ASN1_F_ASN1_TEMPLATE_NEW                        133
+#define ASN1_F_ASN1_TEMPLATE_NOEXP_D2I                  131
 #define ASN1_F_ASN1_TIME_SET                            175
 #define ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING            134
 #define ASN1_F_ASN1_TYPE_GET_OCTETSTRING                135
@@ -1077,6 +1078,9 @@ void ERR_load_ASN1_strings(void);
 #define ASN1_F_BITSTR_CB                                180
 #define ASN1_F_BN_TO_ASN1_ENUMERATED                    138
 #define ASN1_F_BN_TO_ASN1_INTEGER                       139
+#define ASN1_F_C2I_ASN1_BIT_STRING                      189
+#define ASN1_F_C2I_ASN1_INTEGER                                 194
+#define ASN1_F_C2I_ASN1_OBJECT                          196
 #define ASN1_F_COLLECT_DATA                             140
 #define ASN1_F_D2I_ASN1_BIT_STRING                      141
 #define ASN1_F_D2I_ASN1_BOOLEAN                                 142
@@ -1093,26 +1097,30 @@ void ERR_load_ASN1_strings(void);
 #define ASN1_F_D2I_NETSCAPE_RSA_2                       153
 #define ASN1_F_D2I_PRIVATEKEY                           154
 #define ASN1_F_D2I_PUBLICKEY                            155
+#define ASN1_F_D2I_RSA_NET                              200
+#define ASN1_F_D2I_RSA_NET_2                            201
 #define ASN1_F_D2I_X509                                         156
 #define ASN1_F_D2I_X509_CINF                            157
-#define ASN1_F_D2I_X509_NAME                            158
 #define ASN1_F_D2I_X509_PKEY                            159
 #define ASN1_F_I2D_ASN1_SET                             188
 #define ASN1_F_I2D_ASN1_TIME                            160
 #define ASN1_F_I2D_DSA_PUBKEY                           161
 #define ASN1_F_I2D_EC_PUBKEY                            181
-#define ASN1_F_I2D_NETSCAPE_RSA                                 162
 #define ASN1_F_I2D_PRIVATEKEY                           163
 #define ASN1_F_I2D_PUBLICKEY                            164
+#define ASN1_F_I2D_RSA_NET                              162
 #define ASN1_F_I2D_RSA_PUBKEY                           165
 #define ASN1_F_LONG_C2I                                         166
 #define ASN1_F_OID_MODULE_INIT                          174
 #define ASN1_F_PARSE_TAGGING                            182
 #define ASN1_F_PKCS5_PBE2_SET                           167
+#define ASN1_F_PKCS5_PBE_SET                            202
 #define ASN1_F_X509_CINF_NEW                            168
 #define ASN1_F_X509_CRL_ADD0_REVOKED                    169
 #define ASN1_F_X509_INFO_NEW                            170
-#define ASN1_F_X509_NAME_NEW                            171
+#define ASN1_F_X509_NAME_ENCODE                                 203
+#define ASN1_F_X509_NAME_EX_D2I                                 158
+#define ASN1_F_X509_NAME_EX_NEW                                 171
 #define ASN1_F_X509_NEW                                         172
 #define ASN1_F_X509_PKEY_NEW                            173
 
@@ -1178,6 +1186,7 @@ void ERR_load_ASN1_strings(void);
 #define ASN1_R_MISSING_VALUE                            189
 #define ASN1_R_MSTRING_NOT_UNIVERSAL                    139
 #define ASN1_R_MSTRING_WRONG_TAG                        140
+#define ASN1_R_NESTED_ASN1_STRING                       197
 #define ASN1_R_NON_HEX_CHARACTERS                       141
 #define ASN1_R_NOT_ASCII_FORMAT                                 190
 #define ASN1_R_NOT_ENOUGH_DATA                          142