#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
#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
struct X509_algor_st;
-#define DECLARE_ASN1_SET_OF(type) \
-int i2d_ASN1_SET_OF_##type(STACK_OF(type) *a,unsigned char **pp, \
- int (*func)(type *,unsigned char **), int ex_tag, \
- int ex_class, int is_set); \
-STACK_OF(type) *d2i_ASN1_SET_OF_##type(STACK_OF(type) **a,unsigned char **pp, \
- long length, \
- type *(*func)(type **, \
- unsigned char **,long), \
- void (*free_func)(type *), \
- int ex_tag,int ex_class); \
-unsigned char *ASN1_seq_pack_##type(STACK_OF(type) *st, \
- int (*i2d)(type *,unsigned char **), \
- unsigned char **buf,int *len); \
-STACK_OF(type) *ASN1_seq_unpack_##type(unsigned char *buf,int len, \
- type *(*d2i)(type **,unsigned char **, \
- long), \
- void (*free_func)(type *));
-
-#define IMPLEMENT_ASN1_SET_OF(type) \
-int i2d_ASN1_SET_OF_##type(STACK_OF(type) *a,unsigned char **pp, \
- int (*func)(type *,unsigned char **), int ex_tag, \
- int ex_class, int is_set) \
- { return i2d_ASN1_SET((STACK *)a,pp,func,ex_tag,ex_class,is_set); } \
-STACK_OF(type) *d2i_ASN1_SET_OF_##type(STACK_OF(type) **a,unsigned char **pp, \
- long length, \
- type *(*func)(type **, \
- unsigned char **,long), \
- void (*free_func)(type *), \
- int ex_tag,int ex_class) \
- { return (STACK_OF(type) *)d2i_ASN1_SET((STACK **)a,pp,length, \
- (char *(*)())func, \
- (void (*)())free_func, \
- ex_tag,ex_class); } \
-unsigned char *ASN1_seq_pack_##type(STACK_OF(type) *st, \
- int (*i2d)(type *,unsigned char **), \
- unsigned char **buf,int *len) \
- { return ASN1_seq_pack((STACK *)st,i2d,buf,len); } \
-STACK_OF(type) *ASN1_seq_unpack_##type(unsigned char *buf,int len, \
- type *(*d2i)(type **,unsigned char **, \
- long), \
- void (*free_func)(type *)) \
- { return (STACK_OF(type) *)ASN1_seq_unpack(buf,len,(char *(*)())d2i, \
- (void(*)(void *))free_func); }
+#define DECLARE_ASN1_SET_OF(type) /* filled in by mkstack.pl */
+#define IMPLEMENT_ASN1_SET_OF(type) /* nothing, no longer needed */
typedef struct asn1_ctx_st
{
} ASN1_STRING_TABLE;
DECLARE_STACK_OF(ASN1_STRING_TABLE)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
- #define sk_ASN1_STRING_TABLE_new(a) sk_new((int (*) \
- (const char * const *, const char * const *))(a))
- #define sk_ASN1_STRING_TABLE_new_null() sk_new_null()
- #define sk_ASN1_STRING_TABLE_free(a) sk_free(a)
- #define sk_ASN1_STRING_TABLE_num(a) sk_num(a)
- #define sk_ASN1_STRING_TABLE_value(a,b) ((ASN1_STRING_TABLE *) \
- sk_value((a),(b)))
- #define sk_ASN1_STRING_TABLE_set(a,b,c) ((ASN1_STRING_TABLE *) \
- sk_set((a),(b),(char *)(c)))
- #define sk_ASN1_STRING_TABLE_zero(a) sk_zero(a)
- #define sk_ASN1_STRING_TABLE_push(a,b) sk_push((a),(char *)(b))
- #define sk_ASN1_STRING_TABLE_unshift(a,b) sk_unshift((a),(b))
- #define sk_ASN1_STRING_TABLE_find(a,b) sk_find((a), (char *)(b))
- #define sk_ASN1_STRING_TABLE_delete(a,b) ((ASN1_STRING_TABLE *) \
- sk_delete((a),(b)))
- #define sk_ASN1_STRING_TABLE_delete_ptr(a,b) ((ASN1_STRING_TABLE *) \
- sk_delete_ptr((a),(char *)(b)))
- #define sk_ASN1_STRING_TABLE_insert(a,b,c) sk_insert((a),(char *)(b),(c))
- #define sk_ASN1_STRING_TABLE_set_cmp_func(a,b) ((int (*) \
- (const ASN1_STRING_TABLE * const *,const ASN1_STRING_TABLE * const *)) \
- sk_set_cmp_func((a),(int (*) \
- (const char * const *, const char * const *))(b)))
- #define sk_ASN1_STRING_TABLE_dup(a) sk_dup(a)
- #define sk_ASN1_STRING_TABLE_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
- #define sk_ASN1_STRING_TABLE_shift(a) ((ASN1_STRING_TABLE *)sk_shift(a))
- #define sk_ASN1_STRING_TABLE_pop(a) ((ASN1_STRING_TABLE *)sk_pop(a))
- #define sk_ASN1_STRING_TABLE_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
/* size limits: this stuff is taken straight from RFC2459 */
#define ASN1_BMPSTRING ASN1_STRING
#define ASN1_VISIBLESTRING ASN1_STRING
#define ASN1_UTF8STRING ASN1_STRING
+#define ASN1_BOOLEAN int
#else
typedef struct asn1_string_st ASN1_INTEGER;
typedef struct asn1_string_st ASN1_ENUMERATED;
typedef struct asn1_string_st ASN1_GENERALIZEDTIME;
typedef struct asn1_string_st ASN1_VISIBLESTRING;
typedef struct asn1_string_st ASN1_UTF8STRING;
+typedef int ASN1_BOOLEAN;
#endif
typedef int ASN1_NULL;
DECLARE_STACK_OF(ASN1_INTEGER)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
- #define sk_ASN1_INTEGER_new(a) sk_new((int (*) \
- (const char * const *, const char * const *))(a))
- #define sk_ASN1_INTEGER_new_null() sk_new_null()
- #define sk_ASN1_INTEGER_free(a) sk_free(a)
- #define sk_ASN1_INTEGER_num(a) sk_num(a)
- #define sk_ASN1_INTEGER_value(a,b) ((ASN1_INTEGER *) \
- sk_value((a),(b)))
- #define sk_ASN1_INTEGER_set(a,b,c) ((ASN1_INTEGER *) \
- sk_set((a),(b),(char *)(c)))
- #define sk_ASN1_INTEGER_zero(a) sk_zero(a)
- #define sk_ASN1_INTEGER_push(a,b) sk_push((a),(char *)(b))
- #define sk_ASN1_INTEGER_unshift(a,b) sk_unshift((a),(b))
- #define sk_ASN1_INTEGER_find(a,b) sk_find((a), (char *)(b))
- #define sk_ASN1_INTEGER_delete(a,b) ((ASN1_INTEGER *) \
- sk_delete((a),(b)))
- #define sk_ASN1_INTEGER_delete_ptr(a,b) ((ASN1_INTEGER *) \
- sk_delete_ptr((a),(char *)(b)))
- #define sk_ASN1_INTEGER_insert(a,b,c) sk_insert((a),(char *)(b),(c))
- #define sk_ASN1_INTEGER_set_cmp_func(a,b) ((int (*) \
- (const ASN1_INTEGER * const *,const ASN1_INTEGER * const *)) \
- sk_set_cmp_func((a),(int (*) \
- (const char * const *, const char * const *))(b)))
- #define sk_ASN1_INTEGER_dup(a) sk_dup(a)
- #define sk_ASN1_INTEGER_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
- #define sk_ASN1_INTEGER_shift(a) ((ASN1_INTEGER *)sk_shift(a))
- #define sk_ASN1_INTEGER_pop(a) ((ASN1_INTEGER *)sk_pop(a))
- #define sk_ASN1_INTEGER_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
DECLARE_ASN1_SET_OF(ASN1_INTEGER)
typedef struct asn1_type_st
int type;
union {
char *ptr;
+ ASN1_BOOLEAN boolean;
ASN1_STRING * asn1_string;
ASN1_OBJECT * object;
ASN1_INTEGER * integer;
} ASN1_TYPE;
DECLARE_STACK_OF(ASN1_TYPE)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
- #define sk_ASN1_TYPE_new(a) sk_new((int (*) \
- (const char * const *, const char * const *))(a))
- #define sk_ASN1_TYPE_new_null() sk_new_null()
- #define sk_ASN1_TYPE_free(a) sk_free(a)
- #define sk_ASN1_TYPE_num(a) sk_num(a)
- #define sk_ASN1_TYPE_value(a,b) ((ASN1_TYPE *) \
- sk_value((a),(b)))
- #define sk_ASN1_TYPE_set(a,b,c) ((ASN1_TYPE *) \
- sk_set((a),(b),(char *)(c)))
- #define sk_ASN1_TYPE_zero(a) sk_zero(a)
- #define sk_ASN1_TYPE_push(a,b) sk_push((a),(char *)(b))
- #define sk_ASN1_TYPE_unshift(a,b) sk_unshift((a),(b))
- #define sk_ASN1_TYPE_find(a,b) sk_find((a), (char *)(b))
- #define sk_ASN1_TYPE_delete(a,b) ((ASN1_TYPE *) \
- sk_delete((a),(b)))
- #define sk_ASN1_TYPE_delete_ptr(a,b) ((ASN1_TYPE *) \
- sk_delete_ptr((a),(char *)(b)))
- #define sk_ASN1_TYPE_insert(a,b,c) sk_insert((a),(char *)(b),(c))
- #define sk_ASN1_TYPE_set_cmp_func(a,b) ((int (*) \
- (const ASN1_TYPE * const *,const ASN1_TYPE * const *)) \
- sk_set_cmp_func((a),(int (*) \
- (const char * const *, const char * const *))(b)))
- #define sk_ASN1_TYPE_dup(a) sk_dup(a)
- #define sk_ASN1_TYPE_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
- #define sk_ASN1_TYPE_shift(a) ((ASN1_TYPE *)sk_shift(a))
- #define sk_ASN1_TYPE_pop(a) ((ASN1_TYPE *)sk_pop(a))
- #define sk_ASN1_TYPE_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
DECLARE_ASN1_SET_OF(ASN1_TYPE)
typedef struct asn1_method_st
ASN1_OBJECT * ASN1_OBJECT_new(void );
void ASN1_OBJECT_free(ASN1_OBJECT *a);
int i2d_ASN1_OBJECT(ASN1_OBJECT *a,unsigned char **pp);
+ASN1_OBJECT * c2i_ASN1_OBJECT(ASN1_OBJECT **a,unsigned char **pp,
+ long length);
ASN1_OBJECT * d2i_ASN1_OBJECT(ASN1_OBJECT **a,unsigned char **pp,
long length);
DECLARE_STACK_OF(ASN1_OBJECT)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
- #define sk_ASN1_OBJECT_new(a) sk_new((int (*) \
- (const char * const *, const char * const *))(a))
- #define sk_ASN1_OBJECT_new_null() sk_new_null()
- #define sk_ASN1_OBJECT_free(a) sk_free(a)
- #define sk_ASN1_OBJECT_num(a) sk_num(a)
- #define sk_ASN1_OBJECT_value(a,b) ((ASN1_OBJECT *) \
- sk_value((a),(b)))
- #define sk_ASN1_OBJECT_set(a,b,c) ((ASN1_OBJECT *) \
- sk_set((a),(b),(char *)(c)))
- #define sk_ASN1_OBJECT_zero(a) sk_zero(a)
- #define sk_ASN1_OBJECT_push(a,b) sk_push((a),(char *)(b))
- #define sk_ASN1_OBJECT_unshift(a,b) sk_unshift((a),(b))
- #define sk_ASN1_OBJECT_find(a,b) sk_find((a), (char *)(b))
- #define sk_ASN1_OBJECT_delete(a,b) ((ASN1_OBJECT *) \
- sk_delete((a),(b)))
- #define sk_ASN1_OBJECT_delete_ptr(a,b) ((ASN1_OBJECT *) \
- sk_delete_ptr((a),(char *)(b)))
- #define sk_ASN1_OBJECT_insert(a,b,c) sk_insert((a),(char *)(b),(c))
- #define sk_ASN1_OBJECT_set_cmp_func(a,b) ((int (*) \
- (const ASN1_OBJECT * const *,const ASN1_OBJECT * const *)) \
- sk_set_cmp_func((a),(int (*) \
- (const char * const *, const char * const *))(b)))
- #define sk_ASN1_OBJECT_dup(a) sk_dup(a)
- #define sk_ASN1_OBJECT_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
- #define sk_ASN1_OBJECT_shift(a) ((ASN1_OBJECT *)sk_shift(a))
- #define sk_ASN1_OBJECT_pop(a) ((ASN1_OBJECT *)sk_pop(a))
- #define sk_ASN1_OBJECT_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
DECLARE_ASN1_SET_OF(ASN1_OBJECT)
ASN1_STRING * ASN1_STRING_new(void);
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);
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);
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
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)());