Fix for d2i_ASN1_bytes and stop PKCS#7 routines crashing is signed message
[oweals/openssl.git] / crypto / asn1 / asn1.h
index 8dc61e1e63ba4dcae1718cb6bcc3f42541a5bc63..bb5c12131cbe2f4eaf93c456d781a95cde61ac7b 100644 (file)
@@ -74,6 +74,7 @@ extern "C" {
 #define V_ASN1_PRIVATE                 0xc0
 
 #define V_ASN1_CONSTRUCTED             0x20
+#define V_ASN1_PRIMITIVE_TAG           0x1f
 #define V_ASN1_PRIMATIVE_TAG           0x1f
 
 #define V_ASN1_APP_CHOOSE              -2      /* let the recipent choose */
@@ -378,7 +379,7 @@ typedef struct asn1_header_st
                (ASN1_PRINTABLESTRING *)d2i_ASN1_type_bytes\
                ((ASN1_STRING **)a,pp,l,B_ASN1_PRINTABLESTRING)
 
-#define ASN1_T61STRING_new()   (ASN1_T61STRING_STRING *)\
+#define ASN1_T61STRING_new()   (ASN1_T61STRING *)\
                ASN1_STRING_type_new(V_ASN1_T61STRING)
 #define ASN1_T61STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a)
 #define M_i2d_ASN1_T61STRING(a,pp) \
@@ -496,6 +497,9 @@ int         i2d_ASN1_OBJECT(ASN1_OBJECT *a,unsigned char **pp);
 ASN1_OBJECT *  d2i_ASN1_OBJECT(ASN1_OBJECT **a,unsigned char **pp,
                        long length);
 
+DECLARE_STACK_OF(ASN1_OBJECT)
+DECLARE_ASN1_SET_OF(ASN1_OBJECT)
+
 ASN1_STRING *  ASN1_STRING_new(void );
 void           ASN1_STRING_free(ASN1_STRING *a);
 ASN1_STRING *  ASN1_STRING_dup(ASN1_STRING *a);
@@ -518,6 +522,8 @@ int                 d2i_ASN1_BOOLEAN(int *a,unsigned char **pp,long length);
 int            i2d_ASN1_INTEGER(ASN1_INTEGER *a,unsigned char **pp);
 ASN1_INTEGER *d2i_ASN1_INTEGER(ASN1_INTEGER **a,unsigned char **pp,
                        long length);
+ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a,unsigned char **pp,
+                       long length);
 
 int            i2d_ASN1_ENUMERATED(ASN1_ENUMERATED *a,unsigned char **pp);
 ASN1_ENUMERATED *d2i_ASN1_ENUMERATED(ASN1_ENUMERATED **a,unsigned char **pp,
@@ -547,6 +553,10 @@ int i2d_ASN1_BMPSTRING(ASN1_BMPSTRING *a, unsigned char **pp);
 ASN1_BMPSTRING *d2i_ASN1_BMPSTRING(ASN1_BMPSTRING **a, unsigned char **pp,
        long length);
 
+
+int UTF8_getc(unsigned char *str, int len, unsigned long *val);
+int UTF8_putc(unsigned char *str, int len, unsigned long value);
+
 int i2d_ASN1_PRINTABLE(ASN1_STRING *a,unsigned char **pp);
 ASN1_STRING *d2i_ASN1_PRINTABLE(ASN1_STRING **a,
        unsigned char **pp, long l);
@@ -648,6 +658,7 @@ int ASN1_TIME_print(BIO *fp,ASN1_TIME *a);
 int ASN1_STRING_print(BIO *bp,ASN1_STRING *v);
 int ASN1_parse(BIO *bp,unsigned char *pp,long len,int indent);
 #endif
+const char *ASN1_tag2str(int tag);
 
 /* Used to load and write netscape format cert/key */
 int i2d_ASN1_HEADER(ASN1_HEADER *a,unsigned char **pp);
@@ -678,8 +689,8 @@ STACK *ASN1_seq_unpack(unsigned char *buf, int len, char *(*d2i)(),
                                                 void (*free_func)() ); 
 unsigned char *ASN1_seq_pack(STACK *safes, int (*i2d)(), unsigned char **buf,
                                                                 int *len );
-char *ASN1_unpack_string(ASN1_STRING *oct, char *(*d2i)());
-ASN1_STRING *ASN1_pack_string(char *obj, int (*i2d)(), ASN1_OCTET_STRING **oct);
+void *ASN1_unpack_string(ASN1_STRING *oct, char *(*d2i)());
+ASN1_STRING *ASN1_pack_string(void *obj, int (*i2d)(), ASN1_OCTET_STRING **oct);
 
 /* BEGIN ERROR CODES */
 /* The following lines are auto generated by the script mkerr.pl. Any changes
@@ -693,7 +704,7 @@ ASN1_STRING *ASN1_pack_string(char *obj, int (*i2d)(), ASN1_OCTET_STRING **oct);
 #define ASN1_F_A2I_ASN1_ENUMERATED                      236
 #define ASN1_F_A2I_ASN1_INTEGER                                 101
 #define ASN1_F_A2I_ASN1_STRING                          102
-#define ASN1_F_ASN1_COLLATE_PRIMATIVE                   103
+#define ASN1_F_ASN1_COLLATE_PRIMITIVE                   103
 #define ASN1_F_ASN1_D2I_BIO                             104
 #define ASN1_F_ASN1_D2I_FP                              105
 #define ASN1_F_ASN1_DUP                                         106
@@ -739,6 +750,7 @@ ASN1_STRING *ASN1_pack_string(char *obj, int (*i2d)(), ASN1_OCTET_STRING **oct);
 #define ASN1_F_D2I_ASN1_TIME                            224
 #define ASN1_F_D2I_ASN1_TYPE                            133
 #define ASN1_F_D2I_ASN1_TYPE_BYTES                      134
+#define ASN1_F_D2I_ASN1_UINTEGER                        280
 #define ASN1_F_D2I_ASN1_UTCTIME                                 135
 #define ASN1_F_D2I_ASN1_UTF8STRING                      266
 #define ASN1_F_D2I_ASN1_VISIBLESTRING                   267
@@ -832,6 +844,7 @@ ASN1_STRING *ASN1_pack_string(char *obj, int (*i2d)(), ASN1_OCTET_STRING **oct);
 #define ASN1_F_PKCS12_MAC_DATA_NEW                      259
 #define ASN1_F_PKCS12_NEW                               260
 #define ASN1_F_PKCS12_SAFEBAG_NEW                       261
+#define ASN1_F_PKCS5_PBE2_SET                           281
 #define ASN1_F_PKCS7_DIGEST_NEW                                 192
 #define ASN1_F_PKCS7_ENCRYPT_NEW                        193
 #define ASN1_F_PKCS7_ENC_CONTENT_NEW                    194
@@ -886,6 +899,7 @@ ASN1_STRING *ASN1_pack_string(char *obj, int (*i2d)(), ASN1_OCTET_STRING **oct);
 #define ASN1_R_DECODING_ERROR                           111
 #define ASN1_R_ENCODE_ERROR                             156
 #define ASN1_R_ERROR_PARSING_SET_ELEMENT                112
+#define ASN1_R_ERROR_SETTING_CIPHER_PARAMS              157
 #define ASN1_R_EXPECTING_AN_ENUMERATED                  154
 #define ASN1_R_EXPECTING_AN_INTEGER                     113
 #define ASN1_R_EXPECTING_AN_OBJECT                      114