New ASN1 functions that just deal with
[openssl.git] / crypto / asn1 / asn1.h
index 4aa5a5687623e30d701f608c9e26c6451a7aa460..fcce0f6925622e760f10e4f194b807df367736d4 100644 (file)
@@ -86,11 +86,13 @@ extern "C" {
 
 #define V_ASN1_APP_CHOOSE              -2      /* let the recipient choose */
 
+#define V_ASN1_NEG                     0x100   /* negative flag */
+
 #define V_ASN1_UNDEF                   -1
 #define V_ASN1_EOC                     0
 #define V_ASN1_BOOLEAN                 1       /**/
 #define V_ASN1_INTEGER                 2
-#define V_ASN1_NEG_INTEGER             (2+0x100)
+#define V_ASN1_NEG_INTEGER             (2 | V_ASN1_NEG)
 #define V_ASN1_BIT_STRING              3
 #define V_ASN1_OCTET_STRING            4
 #define V_ASN1_NULL                    5
@@ -99,7 +101,7 @@ extern "C" {
 #define V_ASN1_EXTERNAL                        8
 #define V_ASN1_REAL                    9
 #define V_ASN1_ENUMERATED              10
-#define V_ASN1_NEG_ENUMERATED          (10+0x100)
+#define V_ASN1_NEG_ENUMERATED          (10 | V_ASN1_NEG)
 #define V_ASN1_UTF8STRING              12
 #define V_ASN1_SEQUENCE                        16
 #define V_ASN1_SET                     17
@@ -526,8 +528,11 @@ unsigned char * ASN1_STRING_data(ASN1_STRING *x);
 ASN1_BIT_STRING *      ASN1_BIT_STRING_new(void);
 void           ASN1_BIT_STRING_free(ASN1_BIT_STRING *a);
 int            i2d_ASN1_BIT_STRING(ASN1_BIT_STRING *a,unsigned char **pp);
+int            i2c_ASN1_BIT_STRING(ASN1_BIT_STRING *a,unsigned char **pp);
 ASN1_BIT_STRING *d2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a,unsigned char **pp,
                        long length);
+ASN1_BIT_STRING *c2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a,unsigned char **pp,
+                       long length);
 int            ASN1_BIT_STRING_set(ASN1_BIT_STRING *a, unsigned char *d,
                        int length );
 int            ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *a, int n, int value);
@@ -547,8 +552,11 @@ int                d2i_ASN1_BOOLEAN(int *a,unsigned char **pp,long length);
 ASN1_INTEGER * ASN1_INTEGER_new(void);
 void           ASN1_INTEGER_free(ASN1_INTEGER *a);
 int            i2d_ASN1_INTEGER(ASN1_INTEGER *a,unsigned char **pp);
+int            i2c_ASN1_INTEGER(ASN1_INTEGER *a,unsigned char **pp);
 ASN1_INTEGER *d2i_ASN1_INTEGER(ASN1_INTEGER **a,unsigned char **pp,
                        long length);
+ASN1_INTEGER *c2i_ASN1_INTEGER(ASN1_INTEGER **a,unsigned char **pp,
+                       long length);
 ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a,unsigned char **pp,
                        long length);
 ASN1_INTEGER * ASN1_INTEGER_dup(ASN1_INTEGER *x);
@@ -658,7 +666,7 @@ ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s,time_t t);
 int            i2d_ASN1_SET(STACK *a, unsigned char **pp,
                        int (*func)(), int ex_tag, int ex_class, int is_set);
 STACK *                d2i_ASN1_SET(STACK **a, unsigned char **pp, long length,
-                       char *(*func)(), void (*free_func)(),
+                       char *(*func)(), void (*free_func)(void *),
                        int ex_tag, int ex_class);
 
 #ifndef NO_BIO
@@ -753,7 +761,7 @@ int ASN1_TYPE_get_int_octetstring(ASN1_TYPE *a,long *num,
        unsigned char *data, int max_len);
 
 STACK *ASN1_seq_unpack(unsigned char *buf, int len, char *(*d2i)(),
-                                                void (*free_func)() ); 
+                                                void (*free_func)(void *) ); 
 unsigned char *ASN1_seq_pack(STACK *safes, int (*i2d)(), unsigned char **buf,
                             int *len );
 void *ASN1_unpack_string(ASN1_STRING *oct, char *(*d2i)());