Safe stack reorganisation in terms of function casts.
authorDr. Stephen Henson <steve@openssl.org>
Fri, 16 Jun 2000 23:29:26 +0000 (23:29 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Fri, 16 Jun 2000 23:29:26 +0000 (23:29 +0000)
After some messing around this seems to work but needs
a few more tests. Working out the syntax for sk_set_cmp_func()
(cast it to a function that itself returns a function pointer)
was painful :-(

Needs some testing to see what other compilers think of this
syntax.

Also needs similar stuff for ASN1_SET_OF etc etc.

17 files changed:
CHANGES
crypto/asn1/asn1.h
crypto/bio/bio.h
crypto/conf/conf.h
crypto/crypto.h
crypto/objects/o_names.c
crypto/pkcs12/pkcs12.h
crypto/pkcs7/pk7_mime.c
crypto/pkcs7/pkcs7.h
crypto/stack/safestack.h
crypto/stack/stack.c
crypto/stack/stack.h
crypto/x509/x509.h
crypto/x509/x509_vfy.h
crypto/x509v3/x509v3.h
ssl/ssl.h
util/mkstack.pl

diff --git a/CHANGES b/CHANGES
index b106cca..e1c9601 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -4,6 +4,19 @@
 
  Changes between 0.9.5a and 0.9.6  [xx XXX 2000]
 
+  *) Reorganisation of the stack code. The macros are now all 
+     collected in safestack.h . Each macro is defined in terms of
+     a "stack macro" of the form SKM_<name>(type, a, b). The 
+     DEBUG_SAFESTACK is now handled in terms of function casts,
+     this has the advantage of retaining type safety without the
+     use of additional functions. If DEBUG_SAFESTACK is not defined
+     then the non typesafe macros are used instead. Also modified the
+     mkstack.pl script to handle the new form. Needs testing to see
+     if which (if any) compilers it chokes and maybe make DEBUG_SAFESTACK
+     the default if no major problems. Also need analagous stuff for
+     ASN1_SET_OF etc.
+     [Steve Henson]
+
   *) When some versions of IIS use the 'NET' form of private key the
      key derivation algorithm is different. Normally MD5(password) is
      used as a 128 bit RC4 key. In the modified case
index 791636c..b604712 100644 (file)
@@ -248,37 +248,6 @@ typedef struct asn1_string_table_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 */
 
@@ -328,37 +297,6 @@ typedef struct asn1_string_st ASN1_UTF8STRING;
 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
@@ -390,37 +328,6 @@ typedef struct asn1_type_st
        } 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
@@ -642,37 +549,6 @@ 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);
index fa4e0e2..68107d9 100644 (file)
@@ -264,37 +264,6 @@ struct bio_st
        };
 
 DECLARE_STACK_OF(BIO)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
-       #define sk_BIO_new(a) sk_new((int (*) \
-               (const char * const *, const char * const *))(a))
-       #define sk_BIO_new_null() sk_new_null()
-       #define sk_BIO_free(a) sk_free(a)
-       #define sk_BIO_num(a) sk_num(a)
-       #define sk_BIO_value(a,b) ((BIO *) \
-               sk_value((a),(b)))
-       #define sk_BIO_set(a,b,c) ((BIO *) \
-               sk_set((a),(b),(char *)(c)))
-       #define sk_BIO_zero(a) sk_zero(a)
-       #define sk_BIO_push(a,b) sk_push((a),(char *)(b))
-       #define sk_BIO_unshift(a,b) sk_unshift((a),(b))
-       #define sk_BIO_find(a,b) sk_find((a), (char *)(b))
-       #define sk_BIO_delete(a,b) ((BIO *) \
-               sk_delete((a),(b)))
-       #define sk_BIO_delete_ptr(a,b) ((BIO *) \
-               sk_delete_ptr((a),(char *)(b)))
-       #define sk_BIO_insert(a,b,c) sk_insert((a),(char *)(b),(c))
-       #define sk_BIO_set_cmp_func(a,b) ((int (*) \
-               (const BIO * const *,const BIO * const *)) \
-               sk_set_cmp_func((a),(int (*) \
-               (const char * const *, const char * const *))(b)))
-       #define sk_BIO_dup(a) sk_dup(a)
-       #define sk_BIO_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
-       #define sk_BIO_shift(a) ((BIO *)sk_shift(a))
-       #define sk_BIO_pop(a) ((BIO *)sk_pop(a))
-       #define sk_BIO_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
 
 typedef struct bio_f_buffer_ctx_struct
        {
index 0adda45..2f70634 100644 (file)
@@ -77,37 +77,6 @@ typedef struct
        } CONF_VALUE;
 
 DECLARE_STACK_OF(CONF_VALUE)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
-       #define sk_CONF_VALUE_new(a) sk_new((int (*) \
-               (const char * const *, const char * const *))(a))
-       #define sk_CONF_VALUE_new_null() sk_new_null()
-       #define sk_CONF_VALUE_free(a) sk_free(a)
-       #define sk_CONF_VALUE_num(a) sk_num(a)
-       #define sk_CONF_VALUE_value(a,b) ((CONF_VALUE *) \
-               sk_value((a),(b)))
-       #define sk_CONF_VALUE_set(a,b,c) ((CONF_VALUE *) \
-               sk_set((a),(b),(char *)(c)))
-       #define sk_CONF_VALUE_zero(a) sk_zero(a)
-       #define sk_CONF_VALUE_push(a,b) sk_push((a),(char *)(b))
-       #define sk_CONF_VALUE_unshift(a,b) sk_unshift((a),(b))
-       #define sk_CONF_VALUE_find(a,b) sk_find((a), (char *)(b))
-       #define sk_CONF_VALUE_delete(a,b) ((CONF_VALUE *) \
-               sk_delete((a),(b)))
-       #define sk_CONF_VALUE_delete_ptr(a,b) ((CONF_VALUE *) \
-               sk_delete_ptr((a),(char *)(b)))
-       #define sk_CONF_VALUE_insert(a,b,c) sk_insert((a),(char *)(b),(c))
-       #define sk_CONF_VALUE_set_cmp_func(a,b) ((int (*) \
-               (const CONF_VALUE * const *,const CONF_VALUE * const *)) \
-               sk_set_cmp_func((a),(int (*) \
-               (const char * const *, const char * const *))(b)))
-       #define sk_CONF_VALUE_dup(a) sk_dup(a)
-       #define sk_CONF_VALUE_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
-       #define sk_CONF_VALUE_shift(a) ((CONF_VALUE *)sk_shift(a))
-       #define sk_CONF_VALUE_pop(a) ((CONF_VALUE *)sk_pop(a))
-       #define sk_CONF_VALUE_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
 
 struct conf_st;
 typedef struct conf_st CONF;
index 20181a9..9a3a6f8 100644 (file)
@@ -201,37 +201,6 @@ typedef struct crypto_ex_data_func_st
        } CRYPTO_EX_DATA_FUNCS;
 
 DECLARE_STACK_OF(CRYPTO_EX_DATA_FUNCS)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
-       #define sk_CRYPTO_EX_DATA_FUNCS_new(a) sk_new((int (*) \
-               (const char * const *, const char * const *))(a))
-       #define sk_CRYPTO_EX_DATA_FUNCS_new_null() sk_new_null()
-       #define sk_CRYPTO_EX_DATA_FUNCS_free(a) sk_free(a)
-       #define sk_CRYPTO_EX_DATA_FUNCS_num(a) sk_num(a)
-       #define sk_CRYPTO_EX_DATA_FUNCS_value(a,b) ((CRYPTO_EX_DATA_FUNCS *) \
-               sk_value((a),(b)))
-       #define sk_CRYPTO_EX_DATA_FUNCS_set(a,b,c) ((CRYPTO_EX_DATA_FUNCS *) \
-               sk_set((a),(b),(char *)(c)))
-       #define sk_CRYPTO_EX_DATA_FUNCS_zero(a) sk_zero(a)
-       #define sk_CRYPTO_EX_DATA_FUNCS_push(a,b) sk_push((a),(char *)(b))
-       #define sk_CRYPTO_EX_DATA_FUNCS_unshift(a,b) sk_unshift((a),(b))
-       #define sk_CRYPTO_EX_DATA_FUNCS_find(a,b) sk_find((a), (char *)(b))
-       #define sk_CRYPTO_EX_DATA_FUNCS_delete(a,b) ((CRYPTO_EX_DATA_FUNCS *) \
-               sk_delete((a),(b)))
-       #define sk_CRYPTO_EX_DATA_FUNCS_delete_ptr(a,b) ((CRYPTO_EX_DATA_FUNCS *) \
-               sk_delete_ptr((a),(char *)(b)))
-       #define sk_CRYPTO_EX_DATA_FUNCS_insert(a,b,c) sk_insert((a),(char *)(b),(c))
-       #define sk_CRYPTO_EX_DATA_FUNCS_set_cmp_func(a,b) ((int (*) \
-               (const CRYPTO_EX_DATA_FUNCS * const *,const CRYPTO_EX_DATA_FUNCS * const *)) \
-               sk_set_cmp_func((a),(int (*) \
-               (const char * const *, const char * const *))(b)))
-       #define sk_CRYPTO_EX_DATA_FUNCS_dup(a) sk_dup(a)
-       #define sk_CRYPTO_EX_DATA_FUNCS_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
-       #define sk_CRYPTO_EX_DATA_FUNCS_shift(a) ((CRYPTO_EX_DATA_FUNCS *)sk_shift(a))
-       #define sk_CRYPTO_EX_DATA_FUNCS_pop(a) ((CRYPTO_EX_DATA_FUNCS *)sk_pop(a))
-       #define sk_CRYPTO_EX_DATA_FUNCS_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
 
 /* Per class, we have a STACK of CRYPTO_EX_DATA_FUNCS for each CRYPTO_EX_DATA
  * entry.
index aa82a8a..f6bb643 100644 (file)
@@ -20,37 +20,6 @@ typedef struct name_funcs_st
        } NAME_FUNCS;
 
 DECLARE_STACK_OF(NAME_FUNCS)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
-       #define sk_NAME_FUNCS_new(a) sk_new((int (*) \
-               (const char * const *, const char * const *))(a))
-       #define sk_NAME_FUNCS_new_null() sk_new_null()
-       #define sk_NAME_FUNCS_free(a) sk_free(a)
-       #define sk_NAME_FUNCS_num(a) sk_num(a)
-       #define sk_NAME_FUNCS_value(a,b) ((NAME_FUNCS *) \
-               sk_value((a),(b)))
-       #define sk_NAME_FUNCS_set(a,b,c) ((NAME_FUNCS *) \
-               sk_set((a),(b),(char *)(c)))
-       #define sk_NAME_FUNCS_zero(a) sk_zero(a)
-       #define sk_NAME_FUNCS_push(a,b) sk_push((a),(char *)(b))
-       #define sk_NAME_FUNCS_unshift(a,b) sk_unshift((a),(b))
-       #define sk_NAME_FUNCS_find(a,b) sk_find((a), (char *)(b))
-       #define sk_NAME_FUNCS_delete(a,b) ((NAME_FUNCS *) \
-               sk_delete((a),(b)))
-       #define sk_NAME_FUNCS_delete_ptr(a,b) ((NAME_FUNCS *) \
-               sk_delete_ptr((a),(char *)(b)))
-       #define sk_NAME_FUNCS_insert(a,b,c) sk_insert((a),(char *)(b),(c))
-       #define sk_NAME_FUNCS_set_cmp_func(a,b) ((int (*) \
-               (const NAME_FUNCS * const *,const NAME_FUNCS * const *)) \
-               sk_set_cmp_func((a),(int (*) \
-               (const char * const *, const char * const *))(b)))
-       #define sk_NAME_FUNCS_dup(a) sk_dup(a)
-       #define sk_NAME_FUNCS_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
-       #define sk_NAME_FUNCS_shift(a) ((NAME_FUNCS *)sk_shift(a))
-       #define sk_NAME_FUNCS_pop(a) ((NAME_FUNCS *)sk_pop(a))
-       #define sk_NAME_FUNCS_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
 IMPLEMENT_STACK_OF(NAME_FUNCS)
 
 static STACK_OF(NAME_FUNCS) *name_funcs_stack;
index 1e0dc3e..4cf92b6 100644 (file)
@@ -124,37 +124,6 @@ ASN1_TYPE *rest;
 } PKCS12_SAFEBAG;
 
 DECLARE_STACK_OF(PKCS12_SAFEBAG)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
-       #define sk_PKCS12_SAFEBAG_new(a) sk_new((int (*) \
-               (const char * const *, const char * const *))(a))
-       #define sk_PKCS12_SAFEBAG_new_null() sk_new_null()
-       #define sk_PKCS12_SAFEBAG_free(a) sk_free(a)
-       #define sk_PKCS12_SAFEBAG_num(a) sk_num(a)
-       #define sk_PKCS12_SAFEBAG_value(a,b) ((PKCS12_SAFEBAG *) \
-               sk_value((a),(b)))
-       #define sk_PKCS12_SAFEBAG_set(a,b,c) ((PKCS12_SAFEBAG *) \
-               sk_set((a),(b),(char *)(c)))
-       #define sk_PKCS12_SAFEBAG_zero(a) sk_zero(a)
-       #define sk_PKCS12_SAFEBAG_push(a,b) sk_push((a),(char *)(b))
-       #define sk_PKCS12_SAFEBAG_unshift(a,b) sk_unshift((a),(b))
-       #define sk_PKCS12_SAFEBAG_find(a,b) sk_find((a), (char *)(b))
-       #define sk_PKCS12_SAFEBAG_delete(a,b) ((PKCS12_SAFEBAG *) \
-               sk_delete((a),(b)))
-       #define sk_PKCS12_SAFEBAG_delete_ptr(a,b) ((PKCS12_SAFEBAG *) \
-               sk_delete_ptr((a),(char *)(b)))
-       #define sk_PKCS12_SAFEBAG_insert(a,b,c) sk_insert((a),(char *)(b),(c))
-       #define sk_PKCS12_SAFEBAG_set_cmp_func(a,b) ((int (*) \
-               (const PKCS12_SAFEBAG * const *,const PKCS12_SAFEBAG * const *)) \
-               sk_set_cmp_func((a),(int (*) \
-               (const char * const *, const char * const *))(b)))
-       #define sk_PKCS12_SAFEBAG_dup(a) sk_dup(a)
-       #define sk_PKCS12_SAFEBAG_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
-       #define sk_PKCS12_SAFEBAG_shift(a) ((PKCS12_SAFEBAG *)sk_shift(a))
-       #define sk_PKCS12_SAFEBAG_pop(a) ((PKCS12_SAFEBAG *)sk_pop(a))
-       #define sk_PKCS12_SAFEBAG_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
 DECLARE_ASN1_SET_OF(PKCS12_SAFEBAG)
 DECLARE_PKCS12_STACK_OF(PKCS12_SAFEBAG)
 
index 7c6649c..9741aa5 100644 (file)
@@ -75,37 +75,6 @@ char *param_value;                   /* Param value e.g. "sha1" */
 } MIME_PARAM;
 
 DECLARE_STACK_OF(MIME_PARAM)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
-       #define sk_MIME_PARAM_new(a) sk_new((int (*) \
-               (const char * const *, const char * const *))(a))
-       #define sk_MIME_PARAM_new_null() sk_new_null()
-       #define sk_MIME_PARAM_free(a) sk_free(a)
-       #define sk_MIME_PARAM_num(a) sk_num(a)
-       #define sk_MIME_PARAM_value(a,b) ((MIME_PARAM *) \
-               sk_value((a),(b)))
-       #define sk_MIME_PARAM_set(a,b,c) ((MIME_PARAM *) \
-               sk_set((a),(b),(char *)(c)))
-       #define sk_MIME_PARAM_zero(a) sk_zero(a)
-       #define sk_MIME_PARAM_push(a,b) sk_push((a),(char *)(b))
-       #define sk_MIME_PARAM_unshift(a,b) sk_unshift((a),(b))
-       #define sk_MIME_PARAM_find(a,b) sk_find((a), (char *)(b))
-       #define sk_MIME_PARAM_delete(a,b) ((MIME_PARAM *) \
-               sk_delete((a),(b)))
-       #define sk_MIME_PARAM_delete_ptr(a,b) ((MIME_PARAM *) \
-               sk_delete_ptr((a),(char *)(b)))
-       #define sk_MIME_PARAM_insert(a,b,c) sk_insert((a),(char *)(b),(c))
-       #define sk_MIME_PARAM_set_cmp_func(a,b) ((int (*) \
-               (const MIME_PARAM * const *,const MIME_PARAM * const *)) \
-               sk_set_cmp_func((a),(int (*) \
-               (const char * const *, const char * const *))(b)))
-       #define sk_MIME_PARAM_dup(a) sk_dup(a)
-       #define sk_MIME_PARAM_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
-       #define sk_MIME_PARAM_shift(a) ((MIME_PARAM *)sk_shift(a))
-       #define sk_MIME_PARAM_pop(a) ((MIME_PARAM *)sk_pop(a))
-       #define sk_MIME_PARAM_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
 IMPLEMENT_STACK_OF(MIME_PARAM)
 
 typedef struct {
@@ -115,37 +84,6 @@ STACK_OF(MIME_PARAM) *params;               /* Zero or more parameters */
 } MIME_HEADER;
 
 DECLARE_STACK_OF(MIME_HEADER)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
-       #define sk_MIME_HEADER_new(a) sk_new((int (*) \
-               (const char * const *, const char * const *))(a))
-       #define sk_MIME_HEADER_new_null() sk_new_null()
-       #define sk_MIME_HEADER_free(a) sk_free(a)
-       #define sk_MIME_HEADER_num(a) sk_num(a)
-       #define sk_MIME_HEADER_value(a,b) ((MIME_HEADER *) \
-               sk_value((a),(b)))
-       #define sk_MIME_HEADER_set(a,b,c) ((MIME_HEADER *) \
-               sk_set((a),(b),(char *)(c)))
-       #define sk_MIME_HEADER_zero(a) sk_zero(a)
-       #define sk_MIME_HEADER_push(a,b) sk_push((a),(char *)(b))
-       #define sk_MIME_HEADER_unshift(a,b) sk_unshift((a),(b))
-       #define sk_MIME_HEADER_find(a,b) sk_find((a), (char *)(b))
-       #define sk_MIME_HEADER_delete(a,b) ((MIME_HEADER *) \
-               sk_delete((a),(b)))
-       #define sk_MIME_HEADER_delete_ptr(a,b) ((MIME_HEADER *) \
-               sk_delete_ptr((a),(char *)(b)))
-       #define sk_MIME_HEADER_insert(a,b,c) sk_insert((a),(char *)(b),(c))
-       #define sk_MIME_HEADER_set_cmp_func(a,b) ((int (*) \
-               (const MIME_HEADER * const *,const MIME_HEADER * const *)) \
-               sk_set_cmp_func((a),(int (*) \
-               (const char * const *, const char * const *))(b)))
-       #define sk_MIME_HEADER_dup(a) sk_dup(a)
-       #define sk_MIME_HEADER_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
-       #define sk_MIME_HEADER_shift(a) ((MIME_HEADER *)sk_shift(a))
-       #define sk_MIME_HEADER_pop(a) ((MIME_HEADER *)sk_pop(a))
-       #define sk_MIME_HEADER_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
 IMPLEMENT_STACK_OF(MIME_HEADER)
 
 static int B64_write_PKCS7(BIO *bio, PKCS7 *p7);
index 9916a3b..f3f85f5 100644 (file)
@@ -104,37 +104,6 @@ typedef struct pkcs7_signer_info_st
        } PKCS7_SIGNER_INFO;
 
 DECLARE_STACK_OF(PKCS7_SIGNER_INFO)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
-       #define sk_PKCS7_SIGNER_INFO_new(a) sk_new((int (*) \
-               (const char * const *, const char * const *))(a))
-       #define sk_PKCS7_SIGNER_INFO_new_null() sk_new_null()
-       #define sk_PKCS7_SIGNER_INFO_free(a) sk_free(a)
-       #define sk_PKCS7_SIGNER_INFO_num(a) sk_num(a)
-       #define sk_PKCS7_SIGNER_INFO_value(a,b) ((PKCS7_SIGNER_INFO *) \
-               sk_value((a),(b)))
-       #define sk_PKCS7_SIGNER_INFO_set(a,b,c) ((PKCS7_SIGNER_INFO *) \
-               sk_set((a),(b),(char *)(c)))
-       #define sk_PKCS7_SIGNER_INFO_zero(a) sk_zero(a)
-       #define sk_PKCS7_SIGNER_INFO_push(a,b) sk_push((a),(char *)(b))
-       #define sk_PKCS7_SIGNER_INFO_unshift(a,b) sk_unshift((a),(b))
-       #define sk_PKCS7_SIGNER_INFO_find(a,b) sk_find((a), (char *)(b))
-       #define sk_PKCS7_SIGNER_INFO_delete(a,b) ((PKCS7_SIGNER_INFO *) \
-               sk_delete((a),(b)))
-       #define sk_PKCS7_SIGNER_INFO_delete_ptr(a,b) ((PKCS7_SIGNER_INFO *) \
-               sk_delete_ptr((a),(char *)(b)))
-       #define sk_PKCS7_SIGNER_INFO_insert(a,b,c) sk_insert((a),(char *)(b),(c))
-       #define sk_PKCS7_SIGNER_INFO_set_cmp_func(a,b) ((int (*) \
-               (const PKCS7_SIGNER_INFO * const *,const PKCS7_SIGNER_INFO * const *)) \
-               sk_set_cmp_func((a),(int (*) \
-               (const char * const *, const char * const *))(b)))
-       #define sk_PKCS7_SIGNER_INFO_dup(a) sk_dup(a)
-       #define sk_PKCS7_SIGNER_INFO_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
-       #define sk_PKCS7_SIGNER_INFO_shift(a) ((PKCS7_SIGNER_INFO *)sk_shift(a))
-       #define sk_PKCS7_SIGNER_INFO_pop(a) ((PKCS7_SIGNER_INFO *)sk_pop(a))
-       #define sk_PKCS7_SIGNER_INFO_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
 DECLARE_ASN1_SET_OF(PKCS7_SIGNER_INFO)
 
 typedef struct pkcs7_recip_info_st
@@ -147,37 +116,6 @@ typedef struct pkcs7_recip_info_st
        } PKCS7_RECIP_INFO;
 
 DECLARE_STACK_OF(PKCS7_RECIP_INFO)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
-       #define sk_PKCS7_RECIP_INFO_new(a) sk_new((int (*) \
-               (const char * const *, const char * const *))(a))
-       #define sk_PKCS7_RECIP_INFO_new_null() sk_new_null()
-       #define sk_PKCS7_RECIP_INFO_free(a) sk_free(a)
-       #define sk_PKCS7_RECIP_INFO_num(a) sk_num(a)
-       #define sk_PKCS7_RECIP_INFO_value(a,b) ((PKCS7_RECIP_INFO *) \
-               sk_value((a),(b)))
-       #define sk_PKCS7_RECIP_INFO_set(a,b,c) ((PKCS7_RECIP_INFO *) \
-               sk_set((a),(b),(char *)(c)))
-       #define sk_PKCS7_RECIP_INFO_zero(a) sk_zero(a)
-       #define sk_PKCS7_RECIP_INFO_push(a,b) sk_push((a),(char *)(b))
-       #define sk_PKCS7_RECIP_INFO_unshift(a,b) sk_unshift((a),(b))
-       #define sk_PKCS7_RECIP_INFO_find(a,b) sk_find((a), (char *)(b))
-       #define sk_PKCS7_RECIP_INFO_delete(a,b) ((PKCS7_RECIP_INFO *) \
-               sk_delete((a),(b)))
-       #define sk_PKCS7_RECIP_INFO_delete_ptr(a,b) ((PKCS7_RECIP_INFO *) \
-               sk_delete_ptr((a),(char *)(b)))
-       #define sk_PKCS7_RECIP_INFO_insert(a,b,c) sk_insert((a),(char *)(b),(c))
-       #define sk_PKCS7_RECIP_INFO_set_cmp_func(a,b) ((int (*) \
-               (const PKCS7_RECIP_INFO * const *,const PKCS7_RECIP_INFO * const *)) \
-               sk_set_cmp_func((a),(int (*) \
-               (const char * const *, const char * const *))(b)))
-       #define sk_PKCS7_RECIP_INFO_dup(a) sk_dup(a)
-       #define sk_PKCS7_RECIP_INFO_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
-       #define sk_PKCS7_RECIP_INFO_shift(a) ((PKCS7_RECIP_INFO *)sk_shift(a))
-       #define sk_PKCS7_RECIP_INFO_pop(a) ((PKCS7_RECIP_INFO *)sk_pop(a))
-       #define sk_PKCS7_RECIP_INFO_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
 DECLARE_ASN1_SET_OF(PKCS7_RECIP_INFO)
 
 typedef struct pkcs7_signed_st
@@ -276,37 +214,6 @@ typedef struct pkcs7_st
        } PKCS7;
 
 DECLARE_STACK_OF(PKCS7)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
-       #define sk_PKCS7_new(a) sk_new((int (*) \
-               (const char * const *, const char * const *))(a))
-       #define sk_PKCS7_new_null() sk_new_null()
-       #define sk_PKCS7_free(a) sk_free(a)
-       #define sk_PKCS7_num(a) sk_num(a)
-       #define sk_PKCS7_value(a,b) ((PKCS7 *) \
-               sk_value((a),(b)))
-       #define sk_PKCS7_set(a,b,c) ((PKCS7 *) \
-               sk_set((a),(b),(char *)(c)))
-       #define sk_PKCS7_zero(a) sk_zero(a)
-       #define sk_PKCS7_push(a,b) sk_push((a),(char *)(b))
-       #define sk_PKCS7_unshift(a,b) sk_unshift((a),(b))
-       #define sk_PKCS7_find(a,b) sk_find((a), (char *)(b))
-       #define sk_PKCS7_delete(a,b) ((PKCS7 *) \
-               sk_delete((a),(b)))
-       #define sk_PKCS7_delete_ptr(a,b) ((PKCS7 *) \
-               sk_delete_ptr((a),(char *)(b)))
-       #define sk_PKCS7_insert(a,b,c) sk_insert((a),(char *)(b),(c))
-       #define sk_PKCS7_set_cmp_func(a,b) ((int (*) \
-               (const PKCS7 * const *,const PKCS7 * const *)) \
-               sk_set_cmp_func((a),(int (*) \
-               (const char * const *, const char * const *))(b)))
-       #define sk_PKCS7_dup(a) sk_dup(a)
-       #define sk_PKCS7_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
-       #define sk_PKCS7_shift(a) ((PKCS7 *)sk_shift(a))
-       #define sk_PKCS7_pop(a) ((PKCS7 *)sk_pop(a))
-       #define sk_PKCS7_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
 DECLARE_ASN1_SET_OF(PKCS7)
 DECLARE_PKCS12_STACK_OF(PKCS7)
 
index 228b4f8..3338d16 100644 (file)
 STACK_OF(type) \
     { \
     STACK stack; \
-    }; \
-STACK_OF(type) *sk_##type##_new(int (*cmp)(const type * const *, \
-                               const type * const *)); \
-STACK_OF(type) *sk_##type##_new_null(void); \
-void sk_##type##_free(STACK_OF(type) *sk); \
-int sk_##type##_num(const STACK_OF(type) *sk); \
-type *sk_##type##_value(const STACK_OF(type) *sk,int n); \
-type *sk_##type##_set(STACK_OF(type) *sk,int n,type *v); \
-void sk_##type##_zero(STACK_OF(type) *sk); \
-int sk_##type##_push(STACK_OF(type) *sk,type *v); \
-int sk_##type##_unshift(STACK_OF(type) *sk,type *v); \
-int sk_##type##_find(STACK_OF(type) *sk,type *v); \
-type *sk_##type##_delete(STACK_OF(type) *sk,int n); \
-type *sk_##type##_delete_ptr(STACK_OF(type) *sk,type *v); \
-int sk_##type##_insert(STACK_OF(type) *sk,type *v,int n); \
-int (*sk_##type##_set_cmp_func(STACK_OF(type) *sk, \
-       int (*cmp)(const type * const *,const type * const *))) \
-       (const type * const *,const type * const *); \
-STACK_OF(type) *sk_##type##_dup(STACK_OF(type) *sk); \
-void sk_##type##_pop_free(STACK_OF(type) *sk,void (*func)(type *)); \
-type *sk_##type##_shift(STACK_OF(type) *sk); \
-type *sk_##type##_pop(STACK_OF(type) *sk); \
-void sk_##type##_sort(STACK_OF(type) *sk);
-
-#define IMPLEMENT_STACK_OF(type) \
-STACK_OF(type) *sk_##type##_new(int (*cmp)(const type * const *, \
-                               const type * const *)) \
-    { return (STACK_OF(type) *)sk_new( \
-        (int (*)(const char * const *,const char * const *))cmp); } \
-STACK_OF(type) *sk_##type##_new_null() \
-    { return (STACK_OF(type) *)sk_new_null(); } \
-void sk_##type##_free(STACK_OF(type) *sk) \
-    { sk_free((STACK *)sk); } \
-int sk_##type##_num(const STACK_OF(type) *sk) \
-    { return M_sk_num((const STACK *)sk); } \
-type *sk_##type##_value(const STACK_OF(type) *sk,int n) \
-    { return (type *)sk_value((STACK *)sk,n); } \
-type *sk_##type##_set(STACK_OF(type) *sk,int n,type *v) \
-    { return (type *)(sk_set((STACK *)sk,n,(char *)v)); } \
-void sk_##type##_zero(STACK_OF(type) *sk) \
-    { sk_zero((STACK *)sk); } \
-int sk_##type##_push(STACK_OF(type) *sk,type *v) \
-    { return sk_push((STACK *)sk,(char *)v); } \
-int sk_##type##_unshift(STACK_OF(type) *sk,type *v) \
-    { return sk_unshift((STACK *)sk,(char *)v); } \
-int sk_##type##_find(STACK_OF(type) *sk,type *v) \
-    { return sk_find((STACK *)sk,(char *)v); } \
-type *sk_##type##_delete(STACK_OF(type) *sk,int n) \
-    { return (type *)sk_delete((STACK *)sk,n); } \
-type *sk_##type##_delete_ptr(STACK_OF(type) *sk,type *v) \
-    { return (type *)sk_delete_ptr((STACK *)sk,(char *)v); } \
-int sk_##type##_insert(STACK_OF(type) *sk,type *v,int n) \
-    { return sk_insert((STACK *)sk,(char *)v,n); } \
-int (*sk_##type##_set_cmp_func(STACK_OF(type) *sk, \
-       int (*cmp)(const type * const *,const type * const *))) \
-       (const type * const *,const type * const *) \
-    { return (int (*)(const type * const *,const type * const *))sk_set_cmp_func( \
-       (STACK *)sk, (int(*)(const char * const *, const char * const *))cmp); } \
-STACK_OF(type) *sk_##type##_dup(STACK_OF(type) *sk) \
-    { return (STACK_OF(type) *)sk_dup((STACK *)sk); } \
-void sk_##type##_pop_free(STACK_OF(type) *sk,void (*func)(type *)) \
-    { sk_pop_free((STACK *)sk,(void (*)(void *))func); } \
-type *sk_##type##_shift(STACK_OF(type) *sk) \
-    { return (type *)sk_shift((STACK *)sk); } \
-type *sk_##type##_pop(STACK_OF(type) *sk) \
-    { return (type *)sk_pop((STACK *)sk); } \
-void sk_##type##_sort(STACK_OF(type) *sk) \
-    { sk_sort((STACK *)sk); }
+    };
+
+#define IMPLEMENT_STACK_OF(type) /* nada */
+
+#define SKM_sk_new(type, a) \
+       ((STACK_OF(type) * (*)(int (*)(const type * const *, const type * const *)))sk_new)(a)
+#define SKM_sk_new_null(type) \
+       ((STACK_OF(type) * (*)(void))sk_new_null)()
+#define SKM_sk_free(type, a) \
+       ((void (*)(STACK_OF(type) *))sk_free)(a)
+#define SKM_sk_num(type, a) \
+       ((int (*)(const STACK_OF(type) *))sk_num)(a)
+#define SKM_sk_value(type, a, b) \
+       ((type * (*)(const STACK_OF(type) *, int))sk_value)(a, b)
+#define SKM_sk_set(type, a, b, c) \
+       ((type * (*)(STACK_OF(type) *, int, type *))sk_set)(a,b,c)
+#define SKM_sk_zero(type, a) \
+       ((void (*)(STACK_OF(type) *))sk_zero)(a)
+#define SKM_sk_push(type, a, b) \
+       ((int (*)(STACK_OF(type) *, type *))sk_push)(a, b)
+#define SKM_sk_unshift(type, a,b) \
+       ((int (*)(STACK_OF(type) *, type *))sk_unshift)(a, b)
+#define SKM_sk_find(type, a, b) \
+       ((int (*)(STACK_OF(type) *, type *))sk_find)(a, b)
+#define SKM_sk_delete(type, a,b) \
+       ((type * (*)(STACK_OF(type) *, int))sk_delete)(a, b)
+#define SKM_sk_delete_ptr(type, a,b) \
+       ((type * (*)(STACK_OF(type) *, type *))sk_delete_ptr)(a, b)
+#define SKM_sk_insert(type, a,b,c) \
+       ((int (*)(STACK_OF(type) *, type *, int))sk_insert)(a,b,c)
+#define SKM_sk_set_cmp_func(type, a,b) \
+       ((int (*(*)(STACK_OF(type) *, int (*)(const type * const *, const type * const *))) \
+                               (const type * const *, const type * const *))sk_set_cmp_func)(a, b)
+#define SKM_sk_dup(type, a) \
+       ((STACK_OF(type) *(*)(STACK_OF(type) *))sk_dup)(a)
+#define SKM_sk_pop_free(type, a,b) \
+       ((void (*)(STACK_OF(type) *, void (*)(type *)))sk_pop_free)(a, b)
+#define SKM_sk_shift(type, a) \
+       ((type * (*)(STACK_OF(type) *))sk_shift)(a)
+#define SKM_sk_pop(type, a) \
+       ((type * (*)(STACK_OF(type) *))sk_pop)(a)
+#define SKM_sk_sort(type, a) \
+       ((void (*)(STACK_OF(type) *))sk_sort)(a)
 
 #else
 
@@ -142,6 +117,737 @@ void sk_##type##_sort(STACK_OF(type) *sk) \
 #define DECLARE_STACK_OF(type)    /* nada */
 #define IMPLEMENT_STACK_OF(type)  /* nada */
 
+#define SKM_sk_new(stype, a) sk_new((int (*) \
+       (const char * const *, const char * const *))(a))
+#define SKM_sk_new_null(stype) sk_new_null()
+#define SKM_sk_free(stype, a) sk_free(a)
+#define SKM_sk_num(stype, a) sk_num(a)
+#define SKM_sk_value(stype, a,b) ((stype *) \
+       sk_value((a),(b)))
+#define SKM_sk_set(stype, a,b,c) ((stype *) \
+       sk_set((a),(b),(char *)(c)))
+#define SKM_sk_zero(stype, a) sk_zero(a)
+#define SKM_sk_push(stype, a,b) sk_push((a),(char *)(b))
+#define SKM_sk_unshift(stype, a,b) sk_unshift((a),(b))
+#define SKM_sk_find(stype, a,b) sk_find((a), (char *)(b))
+#define SKM_sk_delete(stype, a,b) ((stype *) \
+       sk_delete((a),(b)))
+#define SKM_sk_delete_ptr(stype, a,b) ((stype *) \
+       sk_delete_ptr((a),(char *)(b)))
+#define SKM_sk_insert(stype, a,b,c) sk_insert((a),(char *)(b),(c))
+#define SKM_sk_set_cmp_func(stype, a,b) ((int (*) \
+               (const stype * const *,const stype * const *)) \
+               sk_set_cmp_func((a),(int (*) \
+               (const char * const *, const char * const *))(b)))
+#define SKM_sk_dup(stype, a) sk_dup(a)
+#define SKM_sk_pop_free(stype, a,b) sk_pop_free((a),(void (*)(void *))(b))
+#define SKM_sk_shift(stype, a) ((stype *)sk_shift(a))
+#define SKM_sk_pop(stype, a) ((stype *)sk_pop(a))
+#define SKM_sk_sort(stype, a) sk_sort(a)
+
 #endif
 
+/* This block of defines is updated by a perl script, please do not touch! */
+       #define sk_CRYPTO_EX_DATA_FUNCS_new(a) SKM_sk_new(CRYPTO_EX_DATA_FUNCS, (a))
+       #define sk_CRYPTO_EX_DATA_FUNCS_new_null() SKM_sk_new_null(CRYPTO_EX_DATA_FUNCS)
+       #define sk_CRYPTO_EX_DATA_FUNCS_free(a) SKM_sk_free(CRYPTO_EX_DATA_FUNCS, (a))
+       #define sk_CRYPTO_EX_DATA_FUNCS_num(a) SKM_sk_num(CRYPTO_EX_DATA_FUNCS, (a))
+       #define sk_CRYPTO_EX_DATA_FUNCS_value(a,b) SKM_sk_value(CRYPTO_EX_DATA_FUNCS, (a), (b))
+       #define sk_CRYPTO_EX_DATA_FUNCS_set(a,b,c) SKM_sk_set(CRYPTO_EX_DATA_FUNCS, (a), (b), (c))
+       #define sk_CRYPTO_EX_DATA_FUNCS_zero(a) SKM_sk_zero(CRYPTO_EX_DATA_FUNCS, (a))
+       #define sk_CRYPTO_EX_DATA_FUNCS_push(a,b) SKM_sk_push(CRYPTO_EX_DATA_FUNCS, (a),(b))
+       #define sk_CRYPTO_EX_DATA_FUNCS_unshift(a,b) SKM_sk_unshift(CRYPTO_EX_DATA_FUNCS, (a),(b))
+       #define sk_CRYPTO_EX_DATA_FUNCS_find(a,b) SKM_sk_find(CRYPTO_EX_DATA_FUNCS, (a), (b))
+       #define sk_CRYPTO_EX_DATA_FUNCS_delete(a,b) SKM_sk_delete(CRYPTO_EX_DATA_FUNCS, (a),(b))
+       #define sk_CRYPTO_EX_DATA_FUNCS_delete_ptr(a,b) SKM_sk_delete_ptr(CRYPTO_EX_DATA_FUNCS, (a),(b))
+       #define sk_CRYPTO_EX_DATA_FUNCS_insert(a,b,c) SKM_sk_insert(CRYPTO_EX_DATA_FUNCS, (a),(b),(c))
+       #define sk_CRYPTO_EX_DATA_FUNCS_set_cmp_func(a,b) SKM_sk_set_cmp_func(CRYPTO_EX_DATA_FUNCS, (a),(b))
+       #define sk_CRYPTO_EX_DATA_FUNCS_dup(a) SKM_sk_dup(CRYPTO_EX_DATA_FUNCS, a)
+       #define sk_CRYPTO_EX_DATA_FUNCS_pop_free(a,b) SKM_sk_pop_free(CRYPTO_EX_DATA_FUNCS, (a),(b))
+       #define sk_CRYPTO_EX_DATA_FUNCS_shift(a) SKM_sk_shift(CRYPTO_EX_DATA_FUNCS, (a))
+       #define sk_CRYPTO_EX_DATA_FUNCS_pop(a) SKM_sk_pop(CRYPTO_EX_DATA_FUNCS, (a))
+       #define sk_CRYPTO_EX_DATA_FUNCS_sort(a) SKM_sk_sort(CRYPTO_EX_DATA_FUNCS, (a))
+
+       #define sk_ASN1_STRING_TABLE_new(a) SKM_sk_new(ASN1_STRING_TABLE, (a))
+       #define sk_ASN1_STRING_TABLE_new_null() SKM_sk_new_null(ASN1_STRING_TABLE)
+       #define sk_ASN1_STRING_TABLE_free(a) SKM_sk_free(ASN1_STRING_TABLE, (a))
+       #define sk_ASN1_STRING_TABLE_num(a) SKM_sk_num(ASN1_STRING_TABLE, (a))
+       #define sk_ASN1_STRING_TABLE_value(a,b) SKM_sk_value(ASN1_STRING_TABLE, (a), (b))
+       #define sk_ASN1_STRING_TABLE_set(a,b,c) SKM_sk_set(ASN1_STRING_TABLE, (a), (b), (c))
+       #define sk_ASN1_STRING_TABLE_zero(a) SKM_sk_zero(ASN1_STRING_TABLE, (a))
+       #define sk_ASN1_STRING_TABLE_push(a,b) SKM_sk_push(ASN1_STRING_TABLE, (a),(b))
+       #define sk_ASN1_STRING_TABLE_unshift(a,b) SKM_sk_unshift(ASN1_STRING_TABLE, (a),(b))
+       #define sk_ASN1_STRING_TABLE_find(a,b) SKM_sk_find(ASN1_STRING_TABLE, (a), (b))
+       #define sk_ASN1_STRING_TABLE_delete(a,b) SKM_sk_delete(ASN1_STRING_TABLE, (a),(b))
+       #define sk_ASN1_STRING_TABLE_delete_ptr(a,b) SKM_sk_delete_ptr(ASN1_STRING_TABLE, (a),(b))
+       #define sk_ASN1_STRING_TABLE_insert(a,b,c) SKM_sk_insert(ASN1_STRING_TABLE, (a),(b),(c))
+       #define sk_ASN1_STRING_TABLE_set_cmp_func(a,b) SKM_sk_set_cmp_func(ASN1_STRING_TABLE, (a),(b))
+       #define sk_ASN1_STRING_TABLE_dup(a) SKM_sk_dup(ASN1_STRING_TABLE, a)
+       #define sk_ASN1_STRING_TABLE_pop_free(a,b) SKM_sk_pop_free(ASN1_STRING_TABLE, (a),(b))
+       #define sk_ASN1_STRING_TABLE_shift(a) SKM_sk_shift(ASN1_STRING_TABLE, (a))
+       #define sk_ASN1_STRING_TABLE_pop(a) SKM_sk_pop(ASN1_STRING_TABLE, (a))
+       #define sk_ASN1_STRING_TABLE_sort(a) SKM_sk_sort(ASN1_STRING_TABLE, (a))
+
+       #define sk_ASN1_INTEGER_new(a) SKM_sk_new(ASN1_INTEGER, (a))
+       #define sk_ASN1_INTEGER_new_null() SKM_sk_new_null(ASN1_INTEGER)
+       #define sk_ASN1_INTEGER_free(a) SKM_sk_free(ASN1_INTEGER, (a))
+       #define sk_ASN1_INTEGER_num(a) SKM_sk_num(ASN1_INTEGER, (a))
+       #define sk_ASN1_INTEGER_value(a,b) SKM_sk_value(ASN1_INTEGER, (a), (b))
+       #define sk_ASN1_INTEGER_set(a,b,c) SKM_sk_set(ASN1_INTEGER, (a), (b), (c))
+       #define sk_ASN1_INTEGER_zero(a) SKM_sk_zero(ASN1_INTEGER, (a))
+       #define sk_ASN1_INTEGER_push(a,b) SKM_sk_push(ASN1_INTEGER, (a),(b))
+       #define sk_ASN1_INTEGER_unshift(a,b) SKM_sk_unshift(ASN1_INTEGER, (a),(b))
+       #define sk_ASN1_INTEGER_find(a,b) SKM_sk_find(ASN1_INTEGER, (a), (b))
+       #define sk_ASN1_INTEGER_delete(a,b) SKM_sk_delete(ASN1_INTEGER, (a),(b))
+       #define sk_ASN1_INTEGER_delete_ptr(a,b) SKM_sk_delete_ptr(ASN1_INTEGER, (a),(b))
+       #define sk_ASN1_INTEGER_insert(a,b,c) SKM_sk_insert(ASN1_INTEGER, (a),(b),(c))
+       #define sk_ASN1_INTEGER_set_cmp_func(a,b) SKM_sk_set_cmp_func(ASN1_INTEGER, (a),(b))
+       #define sk_ASN1_INTEGER_dup(a) SKM_sk_dup(ASN1_INTEGER, a)
+       #define sk_ASN1_INTEGER_pop_free(a,b) SKM_sk_pop_free(ASN1_INTEGER, (a),(b))
+       #define sk_ASN1_INTEGER_shift(a) SKM_sk_shift(ASN1_INTEGER, (a))
+       #define sk_ASN1_INTEGER_pop(a) SKM_sk_pop(ASN1_INTEGER, (a))
+       #define sk_ASN1_INTEGER_sort(a) SKM_sk_sort(ASN1_INTEGER, (a))
+
+       #define sk_ASN1_TYPE_new(a) SKM_sk_new(ASN1_TYPE, (a))
+       #define sk_ASN1_TYPE_new_null() SKM_sk_new_null(ASN1_TYPE)
+       #define sk_ASN1_TYPE_free(a) SKM_sk_free(ASN1_TYPE, (a))
+       #define sk_ASN1_TYPE_num(a) SKM_sk_num(ASN1_TYPE, (a))
+       #define sk_ASN1_TYPE_value(a,b) SKM_sk_value(ASN1_TYPE, (a), (b))
+       #define sk_ASN1_TYPE_set(a,b,c) SKM_sk_set(ASN1_TYPE, (a), (b), (c))
+       #define sk_ASN1_TYPE_zero(a) SKM_sk_zero(ASN1_TYPE, (a))
+       #define sk_ASN1_TYPE_push(a,b) SKM_sk_push(ASN1_TYPE, (a),(b))
+       #define sk_ASN1_TYPE_unshift(a,b) SKM_sk_unshift(ASN1_TYPE, (a),(b))
+       #define sk_ASN1_TYPE_find(a,b) SKM_sk_find(ASN1_TYPE, (a), (b))
+       #define sk_ASN1_TYPE_delete(a,b) SKM_sk_delete(ASN1_TYPE, (a),(b))
+       #define sk_ASN1_TYPE_delete_ptr(a,b) SKM_sk_delete_ptr(ASN1_TYPE, (a),(b))
+       #define sk_ASN1_TYPE_insert(a,b,c) SKM_sk_insert(ASN1_TYPE, (a),(b),(c))
+       #define sk_ASN1_TYPE_set_cmp_func(a,b) SKM_sk_set_cmp_func(ASN1_TYPE, (a),(b))
+       #define sk_ASN1_TYPE_dup(a) SKM_sk_dup(ASN1_TYPE, a)
+       #define sk_ASN1_TYPE_pop_free(a,b) SKM_sk_pop_free(ASN1_TYPE, (a),(b))
+       #define sk_ASN1_TYPE_shift(a) SKM_sk_shift(ASN1_TYPE, (a))
+       #define sk_ASN1_TYPE_pop(a) SKM_sk_pop(ASN1_TYPE, (a))
+       #define sk_ASN1_TYPE_sort(a) SKM_sk_sort(ASN1_TYPE, (a))
+
+       #define sk_ASN1_OBJECT_new(a) SKM_sk_new(ASN1_OBJECT, (a))
+       #define sk_ASN1_OBJECT_new_null() SKM_sk_new_null(ASN1_OBJECT)
+       #define sk_ASN1_OBJECT_free(a) SKM_sk_free(ASN1_OBJECT, (a))
+       #define sk_ASN1_OBJECT_num(a) SKM_sk_num(ASN1_OBJECT, (a))
+       #define sk_ASN1_OBJECT_value(a,b) SKM_sk_value(ASN1_OBJECT, (a), (b))
+       #define sk_ASN1_OBJECT_set(a,b,c) SKM_sk_set(ASN1_OBJECT, (a), (b), (c))
+       #define sk_ASN1_OBJECT_zero(a) SKM_sk_zero(ASN1_OBJECT, (a))
+       #define sk_ASN1_OBJECT_push(a,b) SKM_sk_push(ASN1_OBJECT, (a),(b))
+       #define sk_ASN1_OBJECT_unshift(a,b) SKM_sk_unshift(ASN1_OBJECT, (a),(b))
+       #define sk_ASN1_OBJECT_find(a,b) SKM_sk_find(ASN1_OBJECT, (a), (b))
+       #define sk_ASN1_OBJECT_delete(a,b) SKM_sk_delete(ASN1_OBJECT, (a),(b))
+       #define sk_ASN1_OBJECT_delete_ptr(a,b) SKM_sk_delete_ptr(ASN1_OBJECT, (a),(b))
+       #define sk_ASN1_OBJECT_insert(a,b,c) SKM_sk_insert(ASN1_OBJECT, (a),(b),(c))
+       #define sk_ASN1_OBJECT_set_cmp_func(a,b) SKM_sk_set_cmp_func(ASN1_OBJECT, (a),(b))
+       #define sk_ASN1_OBJECT_dup(a) SKM_sk_dup(ASN1_OBJECT, a)
+       #define sk_ASN1_OBJECT_pop_free(a,b) SKM_sk_pop_free(ASN1_OBJECT, (a),(b))
+       #define sk_ASN1_OBJECT_shift(a) SKM_sk_shift(ASN1_OBJECT, (a))
+       #define sk_ASN1_OBJECT_pop(a) SKM_sk_pop(ASN1_OBJECT, (a))
+       #define sk_ASN1_OBJECT_sort(a) SKM_sk_sort(ASN1_OBJECT, (a))
+
+       #define sk_BIO_new(a) SKM_sk_new(BIO, (a))
+       #define sk_BIO_new_null() SKM_sk_new_null(BIO)
+       #define sk_BIO_free(a) SKM_sk_free(BIO, (a))
+       #define sk_BIO_num(a) SKM_sk_num(BIO, (a))
+       #define sk_BIO_value(a,b) SKM_sk_value(BIO, (a), (b))
+       #define sk_BIO_set(a,b,c) SKM_sk_set(BIO, (a), (b), (c))
+       #define sk_BIO_zero(a) SKM_sk_zero(BIO, (a))
+       #define sk_BIO_push(a,b) SKM_sk_push(BIO, (a),(b))
+       #define sk_BIO_unshift(a,b) SKM_sk_unshift(BIO, (a),(b))
+       #define sk_BIO_find(a,b) SKM_sk_find(BIO, (a), (b))
+       #define sk_BIO_delete(a,b) SKM_sk_delete(BIO, (a),(b))
+       #define sk_BIO_delete_ptr(a,b) SKM_sk_delete_ptr(BIO, (a),(b))
+       #define sk_BIO_insert(a,b,c) SKM_sk_insert(BIO, (a),(b),(c))
+       #define sk_BIO_set_cmp_func(a,b) SKM_sk_set_cmp_func(BIO, (a),(b))
+       #define sk_BIO_dup(a) SKM_sk_dup(BIO, a)
+       #define sk_BIO_pop_free(a,b) SKM_sk_pop_free(BIO, (a),(b))
+       #define sk_BIO_shift(a) SKM_sk_shift(BIO, (a))
+       #define sk_BIO_pop(a) SKM_sk_pop(BIO, (a))
+       #define sk_BIO_sort(a) SKM_sk_sort(BIO, (a))
+
+       #define sk_CONF_VALUE_new(a) SKM_sk_new(CONF_VALUE, (a))
+       #define sk_CONF_VALUE_new_null() SKM_sk_new_null(CONF_VALUE)
+       #define sk_CONF_VALUE_free(a) SKM_sk_free(CONF_VALUE, (a))
+       #define sk_CONF_VALUE_num(a) SKM_sk_num(CONF_VALUE, (a))
+       #define sk_CONF_VALUE_value(a,b) SKM_sk_value(CONF_VALUE, (a), (b))
+       #define sk_CONF_VALUE_set(a,b,c) SKM_sk_set(CONF_VALUE, (a), (b), (c))
+       #define sk_CONF_VALUE_zero(a) SKM_sk_zero(CONF_VALUE, (a))
+       #define sk_CONF_VALUE_push(a,b) SKM_sk_push(CONF_VALUE, (a),(b))
+       #define sk_CONF_VALUE_unshift(a,b) SKM_sk_unshift(CONF_VALUE, (a),(b))
+       #define sk_CONF_VALUE_find(a,b) SKM_sk_find(CONF_VALUE, (a), (b))
+       #define sk_CONF_VALUE_delete(a,b) SKM_sk_delete(CONF_VALUE, (a),(b))
+       #define sk_CONF_VALUE_delete_ptr(a,b) SKM_sk_delete_ptr(CONF_VALUE, (a),(b))
+       #define sk_CONF_VALUE_insert(a,b,c) SKM_sk_insert(CONF_VALUE, (a),(b),(c))
+       #define sk_CONF_VALUE_set_cmp_func(a,b) SKM_sk_set_cmp_func(CONF_VALUE, (a),(b))
+       #define sk_CONF_VALUE_dup(a) SKM_sk_dup(CONF_VALUE, a)
+       #define sk_CONF_VALUE_pop_free(a,b) SKM_sk_pop_free(CONF_VALUE, (a),(b))
+       #define sk_CONF_VALUE_shift(a) SKM_sk_shift(CONF_VALUE, (a))
+       #define sk_CONF_VALUE_pop(a) SKM_sk_pop(CONF_VALUE, (a))
+       #define sk_CONF_VALUE_sort(a) SKM_sk_sort(CONF_VALUE, (a))
+
+       #define sk_NAME_FUNCS_new(a) SKM_sk_new(NAME_FUNCS, (a))
+       #define sk_NAME_FUNCS_new_null() SKM_sk_new_null(NAME_FUNCS)
+       #define sk_NAME_FUNCS_free(a) SKM_sk_free(NAME_FUNCS, (a))
+       #define sk_NAME_FUNCS_num(a) SKM_sk_num(NAME_FUNCS, (a))
+       #define sk_NAME_FUNCS_value(a,b) SKM_sk_value(NAME_FUNCS, (a), (b))
+       #define sk_NAME_FUNCS_set(a,b,c) SKM_sk_set(NAME_FUNCS, (a), (b), (c))
+       #define sk_NAME_FUNCS_zero(a) SKM_sk_zero(NAME_FUNCS, (a))
+       #define sk_NAME_FUNCS_push(a,b) SKM_sk_push(NAME_FUNCS, (a),(b))
+       #define sk_NAME_FUNCS_unshift(a,b) SKM_sk_unshift(NAME_FUNCS, (a),(b))
+       #define sk_NAME_FUNCS_find(a,b) SKM_sk_find(NAME_FUNCS, (a), (b))
+       #define sk_NAME_FUNCS_delete(a,b) SKM_sk_delete(NAME_FUNCS, (a),(b))
+       #define sk_NAME_FUNCS_delete_ptr(a,b) SKM_sk_delete_ptr(NAME_FUNCS, (a),(b))
+       #define sk_NAME_FUNCS_insert(a,b,c) SKM_sk_insert(NAME_FUNCS, (a),(b),(c))
+       #define sk_NAME_FUNCS_set_cmp_func(a,b) SKM_sk_set_cmp_func(NAME_FUNCS, (a),(b))
+       #define sk_NAME_FUNCS_dup(a) SKM_sk_dup(NAME_FUNCS, a)
+       #define sk_NAME_FUNCS_pop_free(a,b) SKM_sk_pop_free(NAME_FUNCS, (a),(b))
+       #define sk_NAME_FUNCS_shift(a) SKM_sk_shift(NAME_FUNCS, (a))
+       #define sk_NAME_FUNCS_pop(a) SKM_sk_pop(NAME_FUNCS, (a))
+       #define sk_NAME_FUNCS_sort(a) SKM_sk_sort(NAME_FUNCS, (a))
+
+       #define sk_PKCS12_SAFEBAG_new(a) SKM_sk_new(PKCS12_SAFEBAG, (a))
+       #define sk_PKCS12_SAFEBAG_new_null() SKM_sk_new_null(PKCS12_SAFEBAG)
+       #define sk_PKCS12_SAFEBAG_free(a) SKM_sk_free(PKCS12_SAFEBAG, (a))
+       #define sk_PKCS12_SAFEBAG_num(a) SKM_sk_num(PKCS12_SAFEBAG, (a))
+       #define sk_PKCS12_SAFEBAG_value(a,b) SKM_sk_value(PKCS12_SAFEBAG, (a), (b))
+       #define sk_PKCS12_SAFEBAG_set(a,b,c) SKM_sk_set(PKCS12_SAFEBAG, (a), (b), (c))
+       #define sk_PKCS12_SAFEBAG_zero(a) SKM_sk_zero(PKCS12_SAFEBAG, (a))
+       #define sk_PKCS12_SAFEBAG_push(a,b) SKM_sk_push(PKCS12_SAFEBAG, (a),(b))
+       #define sk_PKCS12_SAFEBAG_unshift(a,b) SKM_sk_unshift(PKCS12_SAFEBAG, (a),(b))
+       #define sk_PKCS12_SAFEBAG_find(a,b) SKM_sk_find(PKCS12_SAFEBAG, (a), (b))
+       #define sk_PKCS12_SAFEBAG_delete(a,b) SKM_sk_delete(PKCS12_SAFEBAG, (a),(b))
+       #define sk_PKCS12_SAFEBAG_delete_ptr(a,b) SKM_sk_delete_ptr(PKCS12_SAFEBAG, (a),(b))
+       #define sk_PKCS12_SAFEBAG_insert(a,b,c) SKM_sk_insert(PKCS12_SAFEBAG, (a),(b),(c))
+       #define sk_PKCS12_SAFEBAG_set_cmp_func(a,b) SKM_sk_set_cmp_func(PKCS12_SAFEBAG, (a),(b))
+       #define sk_PKCS12_SAFEBAG_dup(a) SKM_sk_dup(PKCS12_SAFEBAG, a)
+       #define sk_PKCS12_SAFEBAG_pop_free(a,b) SKM_sk_pop_free(PKCS12_SAFEBAG, (a),(b))
+       #define sk_PKCS12_SAFEBAG_shift(a) SKM_sk_shift(PKCS12_SAFEBAG, (a))
+       #define sk_PKCS12_SAFEBAG_pop(a) SKM_sk_pop(PKCS12_SAFEBAG, (a))
+       #define sk_PKCS12_SAFEBAG_sort(a) SKM_sk_sort(PKCS12_SAFEBAG, (a))
+
+       #define sk_MIME_PARAM_new(a) SKM_sk_new(MIME_PARAM, (a))
+       #define sk_MIME_PARAM_new_null() SKM_sk_new_null(MIME_PARAM)
+       #define sk_MIME_PARAM_free(a) SKM_sk_free(MIME_PARAM, (a))
+       #define sk_MIME_PARAM_num(a) SKM_sk_num(MIME_PARAM, (a))
+       #define sk_MIME_PARAM_value(a,b) SKM_sk_value(MIME_PARAM, (a), (b))
+       #define sk_MIME_PARAM_set(a,b,c) SKM_sk_set(MIME_PARAM, (a), (b), (c))
+       #define sk_MIME_PARAM_zero(a) SKM_sk_zero(MIME_PARAM, (a))
+       #define sk_MIME_PARAM_push(a,b) SKM_sk_push(MIME_PARAM, (a),(b))
+       #define sk_MIME_PARAM_unshift(a,b) SKM_sk_unshift(MIME_PARAM, (a),(b))
+       #define sk_MIME_PARAM_find(a,b) SKM_sk_find(MIME_PARAM, (a), (b))
+       #define sk_MIME_PARAM_delete(a,b) SKM_sk_delete(MIME_PARAM, (a),(b))
+       #define sk_MIME_PARAM_delete_ptr(a,b) SKM_sk_delete_ptr(MIME_PARAM, (a),(b))
+       #define sk_MIME_PARAM_insert(a,b,c) SKM_sk_insert(MIME_PARAM, (a),(b),(c))
+       #define sk_MIME_PARAM_set_cmp_func(a,b) SKM_sk_set_cmp_func(MIME_PARAM, (a),(b))
+       #define sk_MIME_PARAM_dup(a) SKM_sk_dup(MIME_PARAM, a)
+       #define sk_MIME_PARAM_pop_free(a,b) SKM_sk_pop_free(MIME_PARAM, (a),(b))
+       #define sk_MIME_PARAM_shift(a) SKM_sk_shift(MIME_PARAM, (a))
+       #define sk_MIME_PARAM_pop(a) SKM_sk_pop(MIME_PARAM, (a))
+       #define sk_MIME_PARAM_sort(a) SKM_sk_sort(MIME_PARAM, (a))
+
+       #define sk_MIME_HEADER_new(a) SKM_sk_new(MIME_HEADER, (a))
+       #define sk_MIME_HEADER_new_null() SKM_sk_new_null(MIME_HEADER)
+       #define sk_MIME_HEADER_free(a) SKM_sk_free(MIME_HEADER, (a))
+       #define sk_MIME_HEADER_num(a) SKM_sk_num(MIME_HEADER, (a))
+       #define sk_MIME_HEADER_value(a,b) SKM_sk_value(MIME_HEADER, (a), (b))
+       #define sk_MIME_HEADER_set(a,b,c) SKM_sk_set(MIME_HEADER, (a), (b), (c))
+       #define sk_MIME_HEADER_zero(a) SKM_sk_zero(MIME_HEADER, (a))
+       #define sk_MIME_HEADER_push(a,b) SKM_sk_push(MIME_HEADER, (a),(b))
+       #define sk_MIME_HEADER_unshift(a,b) SKM_sk_unshift(MIME_HEADER, (a),(b))
+       #define sk_MIME_HEADER_find(a,b) SKM_sk_find(MIME_HEADER, (a), (b))
+       #define sk_MIME_HEADER_delete(a,b) SKM_sk_delete(MIME_HEADER, (a),(b))
+       #define sk_MIME_HEADER_delete_ptr(a,b) SKM_sk_delete_ptr(MIME_HEADER, (a),(b))
+       #define sk_MIME_HEADER_insert(a,b,c) SKM_sk_insert(MIME_HEADER, (a),(b),(c))
+       #define sk_MIME_HEADER_set_cmp_func(a,b) SKM_sk_set_cmp_func(MIME_HEADER, (a),(b))
+       #define sk_MIME_HEADER_dup(a) SKM_sk_dup(MIME_HEADER, a)
+       #define sk_MIME_HEADER_pop_free(a,b) SKM_sk_pop_free(MIME_HEADER, (a),(b))
+       #define sk_MIME_HEADER_shift(a) SKM_sk_shift(MIME_HEADER, (a))
+       #define sk_MIME_HEADER_pop(a) SKM_sk_pop(MIME_HEADER, (a))
+       #define sk_MIME_HEADER_sort(a) SKM_sk_sort(MIME_HEADER, (a))
+
+       #define sk_PKCS7_SIGNER_INFO_new(a) SKM_sk_new(PKCS7_SIGNER_INFO, (a))
+       #define sk_PKCS7_SIGNER_INFO_new_null() SKM_sk_new_null(PKCS7_SIGNER_INFO)
+       #define sk_PKCS7_SIGNER_INFO_free(a) SKM_sk_free(PKCS7_SIGNER_INFO, (a))
+       #define sk_PKCS7_SIGNER_INFO_num(a) SKM_sk_num(PKCS7_SIGNER_INFO, (a))
+       #define sk_PKCS7_SIGNER_INFO_value(a,b) SKM_sk_value(PKCS7_SIGNER_INFO, (a), (b))
+       #define sk_PKCS7_SIGNER_INFO_set(a,b,c) SKM_sk_set(PKCS7_SIGNER_INFO, (a), (b), (c))
+       #define sk_PKCS7_SIGNER_INFO_zero(a) SKM_sk_zero(PKCS7_SIGNER_INFO, (a))
+       #define sk_PKCS7_SIGNER_INFO_push(a,b) SKM_sk_push(PKCS7_SIGNER_INFO, (a),(b))
+       #define sk_PKCS7_SIGNER_INFO_unshift(a,b) SKM_sk_unshift(PKCS7_SIGNER_INFO, (a),(b))
+       #define sk_PKCS7_SIGNER_INFO_find(a,b) SKM_sk_find(PKCS7_SIGNER_INFO, (a), (b))
+       #define sk_PKCS7_SIGNER_INFO_delete(a,b) SKM_sk_delete(PKCS7_SIGNER_INFO, (a),(b))
+       #define sk_PKCS7_SIGNER_INFO_delete_ptr(a,b) SKM_sk_delete_ptr(PKCS7_SIGNER_INFO, (a),(b))
+       #define sk_PKCS7_SIGNER_INFO_insert(a,b,c) SKM_sk_insert(PKCS7_SIGNER_INFO, (a),(b),(c))
+       #define sk_PKCS7_SIGNER_INFO_set_cmp_func(a,b) SKM_sk_set_cmp_func(PKCS7_SIGNER_INFO, (a),(b))
+       #define sk_PKCS7_SIGNER_INFO_dup(a) SKM_sk_dup(PKCS7_SIGNER_INFO, a)
+       #define sk_PKCS7_SIGNER_INFO_pop_free(a,b) SKM_sk_pop_free(PKCS7_SIGNER_INFO, (a),(b))
+       #define sk_PKCS7_SIGNER_INFO_shift(a) SKM_sk_shift(PKCS7_SIGNER_INFO, (a))
+       #define sk_PKCS7_SIGNER_INFO_pop(a) SKM_sk_pop(PKCS7_SIGNER_INFO, (a))
+       #define sk_PKCS7_SIGNER_INFO_sort(a) SKM_sk_sort(PKCS7_SIGNER_INFO, (a))
+
+       #define sk_PKCS7_RECIP_INFO_new(a) SKM_sk_new(PKCS7_RECIP_INFO, (a))
+       #define sk_PKCS7_RECIP_INFO_new_null() SKM_sk_new_null(PKCS7_RECIP_INFO)
+       #define sk_PKCS7_RECIP_INFO_free(a) SKM_sk_free(PKCS7_RECIP_INFO, (a))
+       #define sk_PKCS7_RECIP_INFO_num(a) SKM_sk_num(PKCS7_RECIP_INFO, (a))
+       #define sk_PKCS7_RECIP_INFO_value(a,b) SKM_sk_value(PKCS7_RECIP_INFO, (a), (b))
+       #define sk_PKCS7_RECIP_INFO_set(a,b,c) SKM_sk_set(PKCS7_RECIP_INFO, (a), (b), (c))
+       #define sk_PKCS7_RECIP_INFO_zero(a) SKM_sk_zero(PKCS7_RECIP_INFO, (a))
+       #define sk_PKCS7_RECIP_INFO_push(a,b) SKM_sk_push(PKCS7_RECIP_INFO, (a),(b))
+       #define sk_PKCS7_RECIP_INFO_unshift(a,b) SKM_sk_unshift(PKCS7_RECIP_INFO, (a),(b))
+       #define sk_PKCS7_RECIP_INFO_find(a,b) SKM_sk_find(PKCS7_RECIP_INFO, (a), (b))
+       #define sk_PKCS7_RECIP_INFO_delete(a,b) SKM_sk_delete(PKCS7_RECIP_INFO, (a),(b))
+       #define sk_PKCS7_RECIP_INFO_delete_ptr(a,b) SKM_sk_delete_ptr(PKCS7_RECIP_INFO, (a),(b))
+       #define sk_PKCS7_RECIP_INFO_insert(a,b,c) SKM_sk_insert(PKCS7_RECIP_INFO, (a),(b),(c))
+       #define sk_PKCS7_RECIP_INFO_set_cmp_func(a,b) SKM_sk_set_cmp_func(PKCS7_RECIP_INFO, (a),(b))
+       #define sk_PKCS7_RECIP_INFO_dup(a) SKM_sk_dup(PKCS7_RECIP_INFO, a)
+       #define sk_PKCS7_RECIP_INFO_pop_free(a,b) SKM_sk_pop_free(PKCS7_RECIP_INFO, (a),(b))
+       #define sk_PKCS7_RECIP_INFO_shift(a) SKM_sk_shift(PKCS7_RECIP_INFO, (a))
+       #define sk_PKCS7_RECIP_INFO_pop(a) SKM_sk_pop(PKCS7_RECIP_INFO, (a))
+       #define sk_PKCS7_RECIP_INFO_sort(a) SKM_sk_sort(PKCS7_RECIP_INFO, (a))
+
+       #define sk_PKCS7_new(a) SKM_sk_new(PKCS7, (a))
+       #define sk_PKCS7_new_null() SKM_sk_new_null(PKCS7)
+       #define sk_PKCS7_free(a) SKM_sk_free(PKCS7, (a))
+       #define sk_PKCS7_num(a) SKM_sk_num(PKCS7, (a))
+       #define sk_PKCS7_value(a,b) SKM_sk_value(PKCS7, (a), (b))
+       #define sk_PKCS7_set(a,b,c) SKM_sk_set(PKCS7, (a), (b), (c))
+       #define sk_PKCS7_zero(a) SKM_sk_zero(PKCS7, (a))
+       #define sk_PKCS7_push(a,b) SKM_sk_push(PKCS7, (a),(b))
+       #define sk_PKCS7_unshift(a,b) SKM_sk_unshift(PKCS7, (a),(b))
+       #define sk_PKCS7_find(a,b) SKM_sk_find(PKCS7, (a), (b))
+       #define sk_PKCS7_delete(a,b) SKM_sk_delete(PKCS7, (a),(b))
+       #define sk_PKCS7_delete_ptr(a,b) SKM_sk_delete_ptr(PKCS7, (a),(b))
+       #define sk_PKCS7_insert(a,b,c) SKM_sk_insert(PKCS7, (a),(b),(c))
+       #define sk_PKCS7_set_cmp_func(a,b) SKM_sk_set_cmp_func(PKCS7, (a),(b))
+       #define sk_PKCS7_dup(a) SKM_sk_dup(PKCS7, a)
+       #define sk_PKCS7_pop_free(a,b) SKM_sk_pop_free(PKCS7, (a),(b))
+       #define sk_PKCS7_shift(a) SKM_sk_shift(PKCS7, (a))
+       #define sk_PKCS7_pop(a) SKM_sk_pop(PKCS7, (a))
+       #define sk_PKCS7_sort(a) SKM_sk_sort(PKCS7, (a))
+
+       #define sk_X509_ALGOR_new(a) SKM_sk_new(X509_ALGOR, (a))
+       #define sk_X509_ALGOR_new_null() SKM_sk_new_null(X509_ALGOR)
+       #define sk_X509_ALGOR_free(a) SKM_sk_free(X509_ALGOR, (a))
+       #define sk_X509_ALGOR_num(a) SKM_sk_num(X509_ALGOR, (a))
+       #define sk_X509_ALGOR_value(a,b) SKM_sk_value(X509_ALGOR, (a), (b))
+       #define sk_X509_ALGOR_set(a,b,c) SKM_sk_set(X509_ALGOR, (a), (b), (c))
+       #define sk_X509_ALGOR_zero(a) SKM_sk_zero(X509_ALGOR, (a))
+       #define sk_X509_ALGOR_push(a,b) SKM_sk_push(X509_ALGOR, (a),(b))
+       #define sk_X509_ALGOR_unshift(a,b) SKM_sk_unshift(X509_ALGOR, (a),(b))
+       #define sk_X509_ALGOR_find(a,b) SKM_sk_find(X509_ALGOR, (a), (b))
+       #define sk_X509_ALGOR_delete(a,b) SKM_sk_delete(X509_ALGOR, (a),(b))
+       #define sk_X509_ALGOR_delete_ptr(a,b) SKM_sk_delete_ptr(X509_ALGOR, (a),(b))
+       #define sk_X509_ALGOR_insert(a,b,c) SKM_sk_insert(X509_ALGOR, (a),(b),(c))
+       #define sk_X509_ALGOR_set_cmp_func(a,b) SKM_sk_set_cmp_func(X509_ALGOR, (a),(b))
+       #define sk_X509_ALGOR_dup(a) SKM_sk_dup(X509_ALGOR, a)
+       #define sk_X509_ALGOR_pop_free(a,b) SKM_sk_pop_free(X509_ALGOR, (a),(b))
+       #define sk_X509_ALGOR_shift(a) SKM_sk_shift(X509_ALGOR, (a))
+       #define sk_X509_ALGOR_pop(a) SKM_sk_pop(X509_ALGOR, (a))
+       #define sk_X509_ALGOR_sort(a) SKM_sk_sort(X509_ALGOR, (a))
+
+       #define sk_X509_NAME_ENTRY_new(a) SKM_sk_new(X509_NAME_ENTRY, (a))
+       #define sk_X509_NAME_ENTRY_new_null() SKM_sk_new_null(X509_NAME_ENTRY)
+       #define sk_X509_NAME_ENTRY_free(a) SKM_sk_free(X509_NAME_ENTRY, (a))
+       #define sk_X509_NAME_ENTRY_num(a) SKM_sk_num(X509_NAME_ENTRY, (a))
+       #define sk_X509_NAME_ENTRY_value(a,b) SKM_sk_value(X509_NAME_ENTRY, (a), (b))
+       #define sk_X509_NAME_ENTRY_set(a,b,c) SKM_sk_set(X509_NAME_ENTRY, (a), (b), (c))
+       #define sk_X509_NAME_ENTRY_zero(a) SKM_sk_zero(X509_NAME_ENTRY, (a))
+       #define sk_X509_NAME_ENTRY_push(a,b) SKM_sk_push(X509_NAME_ENTRY, (a),(b))
+       #define sk_X509_NAME_ENTRY_unshift(a,b) SKM_sk_unshift(X509_NAME_ENTRY, (a),(b))
+       #define sk_X509_NAME_ENTRY_find(a,b) SKM_sk_find(X509_NAME_ENTRY, (a), (b))
+       #define sk_X509_NAME_ENTRY_delete(a,b) SKM_sk_delete(X509_NAME_ENTRY, (a),(b))
+       #define sk_X509_NAME_ENTRY_delete_ptr(a,b) SKM_sk_delete_ptr(X509_NAME_ENTRY, (a),(b))
+       #define sk_X509_NAME_ENTRY_insert(a,b,c) SKM_sk_insert(X509_NAME_ENTRY, (a),(b),(c))
+       #define sk_X509_NAME_ENTRY_set_cmp_func(a,b) SKM_sk_set_cmp_func(X509_NAME_ENTRY, (a),(b))
+       #define sk_X509_NAME_ENTRY_dup(a) SKM_sk_dup(X509_NAME_ENTRY, a)
+       #define sk_X509_NAME_ENTRY_pop_free(a,b) SKM_sk_pop_free(X509_NAME_ENTRY, (a),(b))
+       #define sk_X509_NAME_ENTRY_shift(a) SKM_sk_shift(X509_NAME_ENTRY, (a))
+       #define sk_X509_NAME_ENTRY_pop(a) SKM_sk_pop(X509_NAME_ENTRY, (a))
+       #define sk_X509_NAME_ENTRY_sort(a) SKM_sk_sort(X509_NAME_ENTRY, (a))
+
+       #define sk_X509_NAME_new(a) SKM_sk_new(X509_NAME, (a))
+       #define sk_X509_NAME_new_null() SKM_sk_new_null(X509_NAME)
+       #define sk_X509_NAME_free(a) SKM_sk_free(X509_NAME, (a))
+       #define sk_X509_NAME_num(a) SKM_sk_num(X509_NAME, (a))
+       #define sk_X509_NAME_value(a,b) SKM_sk_value(X509_NAME, (a), (b))
+       #define sk_X509_NAME_set(a,b,c) SKM_sk_set(X509_NAME, (a), (b), (c))
+       #define sk_X509_NAME_zero(a) SKM_sk_zero(X509_NAME, (a))
+       #define sk_X509_NAME_push(a,b) SKM_sk_push(X509_NAME, (a),(b))
+       #define sk_X509_NAME_unshift(a,b) SKM_sk_unshift(X509_NAME, (a),(b))
+       #define sk_X509_NAME_find(a,b) SKM_sk_find(X509_NAME, (a), (b))
+       #define sk_X509_NAME_delete(a,b) SKM_sk_delete(X509_NAME, (a),(b))
+       #define sk_X509_NAME_delete_ptr(a,b) SKM_sk_delete_ptr(X509_NAME, (a),(b))
+       #define sk_X509_NAME_insert(a,b,c) SKM_sk_insert(X509_NAME, (a),(b),(c))
+       #define sk_X509_NAME_set_cmp_func(a,b) SKM_sk_set_cmp_func(X509_NAME, (a),(b))
+       #define sk_X509_NAME_dup(a) SKM_sk_dup(X509_NAME, a)
+       #define sk_X509_NAME_pop_free(a,b) SKM_sk_pop_free(X509_NAME, (a),(b))
+       #define sk_X509_NAME_shift(a) SKM_sk_shift(X509_NAME, (a))
+       #define sk_X509_NAME_pop(a) SKM_sk_pop(X509_NAME, (a))
+       #define sk_X509_NAME_sort(a) SKM_sk_sort(X509_NAME, (a))
+
+       #define sk_X509_EXTENSION_new(a) SKM_sk_new(X509_EXTENSION, (a))
+       #define sk_X509_EXTENSION_new_null() SKM_sk_new_null(X509_EXTENSION)
+       #define sk_X509_EXTENSION_free(a) SKM_sk_free(X509_EXTENSION, (a))
+       #define sk_X509_EXTENSION_num(a) SKM_sk_num(X509_EXTENSION, (a))
+       #define sk_X509_EXTENSION_value(a,b) SKM_sk_value(X509_EXTENSION, (a), (b))
+       #define sk_X509_EXTENSION_set(a,b,c) SKM_sk_set(X509_EXTENSION, (a), (b), (c))
+       #define sk_X509_EXTENSION_zero(a) SKM_sk_zero(X509_EXTENSION, (a))
+       #define sk_X509_EXTENSION_push(a,b) SKM_sk_push(X509_EXTENSION, (a),(b))
+       #define sk_X509_EXTENSION_unshift(a,b) SKM_sk_unshift(X509_EXTENSION, (a),(b))
+       #define sk_X509_EXTENSION_find(a,b) SKM_sk_find(X509_EXTENSION, (a), (b))
+       #define sk_X509_EXTENSION_delete(a,b) SKM_sk_delete(X509_EXTENSION, (a),(b))
+       #define sk_X509_EXTENSION_delete_ptr(a,b) SKM_sk_delete_ptr(X509_EXTENSION, (a),(b))
+       #define sk_X509_EXTENSION_insert(a,b,c) SKM_sk_insert(X509_EXTENSION, (a),(b),(c))
+       #define sk_X509_EXTENSION_set_cmp_func(a,b) SKM_sk_set_cmp_func(X509_EXTENSION, (a),(b))
+       #define sk_X509_EXTENSION_dup(a) SKM_sk_dup(X509_EXTENSION, a)
+       #define sk_X509_EXTENSION_pop_free(a,b) SKM_sk_pop_free(X509_EXTENSION, (a),(b))
+       #define sk_X509_EXTENSION_shift(a) SKM_sk_shift(X509_EXTENSION, (a))
+       #define sk_X509_EXTENSION_pop(a) SKM_sk_pop(X509_EXTENSION, (a))
+       #define sk_X509_EXTENSION_sort(a) SKM_sk_sort(X509_EXTENSION, (a))
+
+       #define sk_X509_ATTRIBUTE_new(a) SKM_sk_new(X509_ATTRIBUTE, (a))
+       #define sk_X509_ATTRIBUTE_new_null() SKM_sk_new_null(X509_ATTRIBUTE)
+       #define sk_X509_ATTRIBUTE_free(a) SKM_sk_free(X509_ATTRIBUTE, (a))
+       #define sk_X509_ATTRIBUTE_num(a) SKM_sk_num(X509_ATTRIBUTE, (a))
+       #define sk_X509_ATTRIBUTE_value(a,b) SKM_sk_value(X509_ATTRIBUTE, (a), (b))
+       #define sk_X509_ATTRIBUTE_set(a,b,c) SKM_sk_set(X509_ATTRIBUTE, (a), (b), (c))
+       #define sk_X509_ATTRIBUTE_zero(a) SKM_sk_zero(X509_ATTRIBUTE, (a))
+       #define sk_X509_ATTRIBUTE_push(a,b) SKM_sk_push(X509_ATTRIBUTE, (a),(b))
+       #define sk_X509_ATTRIBUTE_unshift(a,b) SKM_sk_unshift(X509_ATTRIBUTE, (a),(b))
+       #define sk_X509_ATTRIBUTE_find(a,b) SKM_sk_find(X509_ATTRIBUTE, (a), (b))
+       #define sk_X509_ATTRIBUTE_delete(a,b) SKM_sk_delete(X509_ATTRIBUTE, (a),(b))
+       #define sk_X509_ATTRIBUTE_delete_ptr(a,b) SKM_sk_delete_ptr(X509_ATTRIBUTE, (a),(b))
+       #define sk_X509_ATTRIBUTE_insert(a,b,c) SKM_sk_insert(X509_ATTRIBUTE, (a),(b),(c))
+       #define sk_X509_ATTRIBUTE_set_cmp_func(a,b) SKM_sk_set_cmp_func(X509_ATTRIBUTE, (a),(b))
+       #define sk_X509_ATTRIBUTE_dup(a) SKM_sk_dup(X509_ATTRIBUTE, a)
+       #define sk_X509_ATTRIBUTE_pop_free(a,b) SKM_sk_pop_free(X509_ATTRIBUTE, (a),(b))
+       #define sk_X509_ATTRIBUTE_shift(a) SKM_sk_shift(X509_ATTRIBUTE, (a))
+       #define sk_X509_ATTRIBUTE_pop(a) SKM_sk_pop(X509_ATTRIBUTE, (a))
+       #define sk_X509_ATTRIBUTE_sort(a) SKM_sk_sort(X509_ATTRIBUTE, (a))
+
+       #define sk_X509_new(a) SKM_sk_new(X509, (a))
+       #define sk_X509_new_null() SKM_sk_new_null(X509)
+       #define sk_X509_free(a) SKM_sk_free(X509, (a))
+       #define sk_X509_num(a) SKM_sk_num(X509, (a))
+       #define sk_X509_value(a,b) SKM_sk_value(X509, (a), (b))
+       #define sk_X509_set(a,b,c) SKM_sk_set(X509, (a), (b), (c))
+       #define sk_X509_zero(a) SKM_sk_zero(X509, (a))
+       #define sk_X509_push(a,b) SKM_sk_push(X509, (a),(b))
+       #define sk_X509_unshift(a,b) SKM_sk_unshift(X509, (a),(b))
+       #define sk_X509_find(a,b) SKM_sk_find(X509, (a), (b))
+       #define sk_X509_delete(a,b) SKM_sk_delete(X509, (a),(b))
+       #define sk_X509_delete_ptr(a,b) SKM_sk_delete_ptr(X509, (a),(b))
+       #define sk_X509_insert(a,b,c) SKM_sk_insert(X509, (a),(b),(c))
+       #define sk_X509_set_cmp_func(a,b) SKM_sk_set_cmp_func(X509, (a),(b))
+       #define sk_X509_dup(a) SKM_sk_dup(X509, a)
+       #define sk_X509_pop_free(a,b) SKM_sk_pop_free(X509, (a),(b))
+       #define sk_X509_shift(a) SKM_sk_shift(X509, (a))
+       #define sk_X509_pop(a) SKM_sk_pop(X509, (a))
+       #define sk_X509_sort(a) SKM_sk_sort(X509, (a))
+
+       #define sk_X509_TRUST_new(a) SKM_sk_new(X509_TRUST, (a))
+       #define sk_X509_TRUST_new_null() SKM_sk_new_null(X509_TRUST)
+       #define sk_X509_TRUST_free(a) SKM_sk_free(X509_TRUST, (a))
+       #define sk_X509_TRUST_num(a) SKM_sk_num(X509_TRUST, (a))
+       #define sk_X509_TRUST_value(a,b) SKM_sk_value(X509_TRUST, (a), (b))
+       #define sk_X509_TRUST_set(a,b,c) SKM_sk_set(X509_TRUST, (a), (b), (c))
+       #define sk_X509_TRUST_zero(a) SKM_sk_zero(X509_TRUST, (a))
+       #define sk_X509_TRUST_push(a,b) SKM_sk_push(X509_TRUST, (a),(b))
+       #define sk_X509_TRUST_unshift(a,b) SKM_sk_unshift(X509_TRUST, (a),(b))
+       #define sk_X509_TRUST_find(a,b) SKM_sk_find(X509_TRUST, (a), (b))
+       #define sk_X509_TRUST_delete(a,b) SKM_sk_delete(X509_TRUST, (a),(b))
+       #define sk_X509_TRUST_delete_ptr(a,b) SKM_sk_delete_ptr(X509_TRUST, (a),(b))
+       #define sk_X509_TRUST_insert(a,b,c) SKM_sk_insert(X509_TRUST, (a),(b),(c))
+       #define sk_X509_TRUST_set_cmp_func(a,b) SKM_sk_set_cmp_func(X509_TRUST, (a),(b))
+       #define sk_X509_TRUST_dup(a) SKM_sk_dup(X509_TRUST, a)
+       #define sk_X509_TRUST_pop_free(a,b) SKM_sk_pop_free(X509_TRUST, (a),(b))
+       #define sk_X509_TRUST_shift(a) SKM_sk_shift(X509_TRUST, (a))
+       #define sk_X509_TRUST_pop(a) SKM_sk_pop(X509_TRUST, (a))
+       #define sk_X509_TRUST_sort(a) SKM_sk_sort(X509_TRUST, (a))
+
+       #define sk_X509_REVOKED_new(a) SKM_sk_new(X509_REVOKED, (a))
+       #define sk_X509_REVOKED_new_null() SKM_sk_new_null(X509_REVOKED)
+       #define sk_X509_REVOKED_free(a) SKM_sk_free(X509_REVOKED, (a))
+       #define sk_X509_REVOKED_num(a) SKM_sk_num(X509_REVOKED, (a))
+       #define sk_X509_REVOKED_value(a,b) SKM_sk_value(X509_REVOKED, (a), (b))
+       #define sk_X509_REVOKED_set(a,b,c) SKM_sk_set(X509_REVOKED, (a), (b), (c))
+       #define sk_X509_REVOKED_zero(a) SKM_sk_zero(X509_REVOKED, (a))
+       #define sk_X509_REVOKED_push(a,b) SKM_sk_push(X509_REVOKED, (a),(b))
+       #define sk_X509_REVOKED_unshift(a,b) SKM_sk_unshift(X509_REVOKED, (a),(b))
+       #define sk_X509_REVOKED_find(a,b) SKM_sk_find(X509_REVOKED, (a), (b))
+       #define sk_X509_REVOKED_delete(a,b) SKM_sk_delete(X509_REVOKED, (a),(b))
+       #define sk_X509_REVOKED_delete_ptr(a,b) SKM_sk_delete_ptr(X509_REVOKED, (a),(b))
+       #define sk_X509_REVOKED_insert(a,b,c) SKM_sk_insert(X509_REVOKED, (a),(b),(c))
+       #define sk_X509_REVOKED_set_cmp_func(a,b) SKM_sk_set_cmp_func(X509_REVOKED, (a),(b))
+       #define sk_X509_REVOKED_dup(a) SKM_sk_dup(X509_REVOKED, a)
+       #define sk_X509_REVOKED_pop_free(a,b) SKM_sk_pop_free(X509_REVOKED, (a),(b))
+       #define sk_X509_REVOKED_shift(a) SKM_sk_shift(X509_REVOKED, (a))
+       #define sk_X509_REVOKED_pop(a) SKM_sk_pop(X509_REVOKED, (a))
+       #define sk_X509_REVOKED_sort(a) SKM_sk_sort(X509_REVOKED, (a))
+
+       #define sk_X509_CRL_new(a) SKM_sk_new(X509_CRL, (a))
+       #define sk_X509_CRL_new_null() SKM_sk_new_null(X509_CRL)
+       #define sk_X509_CRL_free(a) SKM_sk_free(X509_CRL, (a))
+       #define sk_X509_CRL_num(a) SKM_sk_num(X509_CRL, (a))
+       #define sk_X509_CRL_value(a,b) SKM_sk_value(X509_CRL, (a), (b))
+       #define sk_X509_CRL_set(a,b,c) SKM_sk_set(X509_CRL, (a), (b), (c))
+       #define sk_X509_CRL_zero(a) SKM_sk_zero(X509_CRL, (a))
+       #define sk_X509_CRL_push(a,b) SKM_sk_push(X509_CRL, (a),(b))
+       #define sk_X509_CRL_unshift(a,b) SKM_sk_unshift(X509_CRL, (a),(b))
+       #define sk_X509_CRL_find(a,b) SKM_sk_find(X509_CRL, (a), (b))
+       #define sk_X509_CRL_delete(a,b) SKM_sk_delete(X509_CRL, (a),(b))
+       #define sk_X509_CRL_delete_ptr(a,b) SKM_sk_delete_ptr(X509_CRL, (a),(b))
+       #define sk_X509_CRL_insert(a,b,c) SKM_sk_insert(X509_CRL, (a),(b),(c))
+       #define sk_X509_CRL_set_cmp_func(a,b) SKM_sk_set_cmp_func(X509_CRL, (a),(b))
+       #define sk_X509_CRL_dup(a) SKM_sk_dup(X509_CRL, a)
+       #define sk_X509_CRL_pop_free(a,b) SKM_sk_pop_free(X509_CRL, (a),(b))
+       #define sk_X509_CRL_shift(a) SKM_sk_shift(X509_CRL, (a))
+       #define sk_X509_CRL_pop(a) SKM_sk_pop(X509_CRL, (a))
+       #define sk_X509_CRL_sort(a) SKM_sk_sort(X509_CRL, (a))
+
+       #define sk_X509_INFO_new(a) SKM_sk_new(X509_INFO, (a))
+       #define sk_X509_INFO_new_null() SKM_sk_new_null(X509_INFO)
+       #define sk_X509_INFO_free(a) SKM_sk_free(X509_INFO, (a))
+       #define sk_X509_INFO_num(a) SKM_sk_num(X509_INFO, (a))
+       #define sk_X509_INFO_value(a,b) SKM_sk_value(X509_INFO, (a), (b))
+       #define sk_X509_INFO_set(a,b,c) SKM_sk_set(X509_INFO, (a), (b), (c))
+       #define sk_X509_INFO_zero(a) SKM_sk_zero(X509_INFO, (a))
+       #define sk_X509_INFO_push(a,b) SKM_sk_push(X509_INFO, (a),(b))
+       #define sk_X509_INFO_unshift(a,b) SKM_sk_unshift(X509_INFO, (a),(b))
+       #define sk_X509_INFO_find(a,b) SKM_sk_find(X509_INFO, (a), (b))
+       #define sk_X509_INFO_delete(a,b) SKM_sk_delete(X509_INFO, (a),(b))
+       #define sk_X509_INFO_delete_ptr(a,b) SKM_sk_delete_ptr(X509_INFO, (a),(b))
+       #define sk_X509_INFO_insert(a,b,c) SKM_sk_insert(X509_INFO, (a),(b),(c))
+       #define sk_X509_INFO_set_cmp_func(a,b) SKM_sk_set_cmp_func(X509_INFO, (a),(b))
+       #define sk_X509_INFO_dup(a) SKM_sk_dup(X509_INFO, a)
+       #define sk_X509_INFO_pop_free(a,b) SKM_sk_pop_free(X509_INFO, (a),(b))
+       #define sk_X509_INFO_shift(a) SKM_sk_shift(X509_INFO, (a))
+       #define sk_X509_INFO_pop(a) SKM_sk_pop(X509_INFO, (a))
+       #define sk_X509_INFO_sort(a) SKM_sk_sort(X509_INFO, (a))
+
+       #define sk_X509_LOOKUP_new(a) SKM_sk_new(X509_LOOKUP, (a))
+       #define sk_X509_LOOKUP_new_null() SKM_sk_new_null(X509_LOOKUP)
+       #define sk_X509_LOOKUP_free(a) SKM_sk_free(X509_LOOKUP, (a))
+       #define sk_X509_LOOKUP_num(a) SKM_sk_num(X509_LOOKUP, (a))
+       #define sk_X509_LOOKUP_value(a,b) SKM_sk_value(X509_LOOKUP, (a), (b))
+       #define sk_X509_LOOKUP_set(a,b,c) SKM_sk_set(X509_LOOKUP, (a), (b), (c))
+       #define sk_X509_LOOKUP_zero(a) SKM_sk_zero(X509_LOOKUP, (a))
+       #define sk_X509_LOOKUP_push(a,b) SKM_sk_push(X509_LOOKUP, (a),(b))
+       #define sk_X509_LOOKUP_unshift(a,b) SKM_sk_unshift(X509_LOOKUP, (a),(b))
+       #define sk_X509_LOOKUP_find(a,b) SKM_sk_find(X509_LOOKUP, (a), (b))
+       #define sk_X509_LOOKUP_delete(a,b) SKM_sk_delete(X509_LOOKUP, (a),(b))
+       #define sk_X509_LOOKUP_delete_ptr(a,b) SKM_sk_delete_ptr(X509_LOOKUP, (a),(b))
+       #define sk_X509_LOOKUP_insert(a,b,c) SKM_sk_insert(X509_LOOKUP, (a),(b),(c))
+       #define sk_X509_LOOKUP_set_cmp_func(a,b) SKM_sk_set_cmp_func(X509_LOOKUP, (a),(b))
+       #define sk_X509_LOOKUP_dup(a) SKM_sk_dup(X509_LOOKUP, a)
+       #define sk_X509_LOOKUP_pop_free(a,b) SKM_sk_pop_free(X509_LOOKUP, (a),(b))
+       #define sk_X509_LOOKUP_shift(a) SKM_sk_shift(X509_LOOKUP, (a))
+       #define sk_X509_LOOKUP_pop(a) SKM_sk_pop(X509_LOOKUP, (a))
+       #define sk_X509_LOOKUP_sort(a) SKM_sk_sort(X509_LOOKUP, (a))
+
+       #define sk_X509V3_EXT_METHOD_new(a) SKM_sk_new(X509V3_EXT_METHOD, (a))
+       #define sk_X509V3_EXT_METHOD_new_null() SKM_sk_new_null(X509V3_EXT_METHOD)
+       #define sk_X509V3_EXT_METHOD_free(a) SKM_sk_free(X509V3_EXT_METHOD, (a))
+       #define sk_X509V3_EXT_METHOD_num(a) SKM_sk_num(X509V3_EXT_METHOD, (a))
+       #define sk_X509V3_EXT_METHOD_value(a,b) SKM_sk_value(X509V3_EXT_METHOD, (a), (b))
+       #define sk_X509V3_EXT_METHOD_set(a,b,c) SKM_sk_set(X509V3_EXT_METHOD, (a), (b), (c))
+       #define sk_X509V3_EXT_METHOD_zero(a) SKM_sk_zero(X509V3_EXT_METHOD, (a))
+       #define sk_X509V3_EXT_METHOD_push(a,b) SKM_sk_push(X509V3_EXT_METHOD, (a),(b))
+       #define sk_X509V3_EXT_METHOD_unshift(a,b) SKM_sk_unshift(X509V3_EXT_METHOD, (a),(b))
+       #define sk_X509V3_EXT_METHOD_find(a,b) SKM_sk_find(X509V3_EXT_METHOD, (a), (b))
+       #define sk_X509V3_EXT_METHOD_delete(a,b) SKM_sk_delete(X509V3_EXT_METHOD, (a),(b))
+       #define sk_X509V3_EXT_METHOD_delete_ptr(a,b) SKM_sk_delete_ptr(X509V3_EXT_METHOD, (a),(b))
+       #define sk_X509V3_EXT_METHOD_insert(a,b,c) SKM_sk_insert(X509V3_EXT_METHOD, (a),(b),(c))
+       #define sk_X509V3_EXT_METHOD_set_cmp_func(a,b) SKM_sk_set_cmp_func(X509V3_EXT_METHOD, (a),(b))
+       #define sk_X509V3_EXT_METHOD_dup(a) SKM_sk_dup(X509V3_EXT_METHOD, a)
+       #define sk_X509V3_EXT_METHOD_pop_free(a,b) SKM_sk_pop_free(X509V3_EXT_METHOD, (a),(b))
+       #define sk_X509V3_EXT_METHOD_shift(a) SKM_sk_shift(X509V3_EXT_METHOD, (a))
+       #define sk_X509V3_EXT_METHOD_pop(a) SKM_sk_pop(X509V3_EXT_METHOD, (a))
+       #define sk_X509V3_EXT_METHOD_sort(a) SKM_sk_sort(X509V3_EXT_METHOD, (a))
+
+       #define sk_GENERAL_NAME_new(a) SKM_sk_new(GENERAL_NAME, (a))
+       #define sk_GENERAL_NAME_new_null() SKM_sk_new_null(GENERAL_NAME)
+       #define sk_GENERAL_NAME_free(a) SKM_sk_free(GENERAL_NAME, (a))
+       #define sk_GENERAL_NAME_num(a) SKM_sk_num(GENERAL_NAME, (a))
+       #define sk_GENERAL_NAME_value(a,b) SKM_sk_value(GENERAL_NAME, (a), (b))
+       #define sk_GENERAL_NAME_set(a,b,c) SKM_sk_set(GENERAL_NAME, (a), (b), (c))
+       #define sk_GENERAL_NAME_zero(a) SKM_sk_zero(GENERAL_NAME, (a))
+       #define sk_GENERAL_NAME_push(a,b) SKM_sk_push(GENERAL_NAME, (a),(b))
+       #define sk_GENERAL_NAME_unshift(a,b) SKM_sk_unshift(GENERAL_NAME, (a),(b))
+       #define sk_GENERAL_NAME_find(a,b) SKM_sk_find(GENERAL_NAME, (a), (b))
+       #define sk_GENERAL_NAME_delete(a,b) SKM_sk_delete(GENERAL_NAME, (a),(b))
+       #define sk_GENERAL_NAME_delete_ptr(a,b) SKM_sk_delete_ptr(GENERAL_NAME, (a),(b))
+       #define sk_GENERAL_NAME_insert(a,b,c) SKM_sk_insert(GENERAL_NAME, (a),(b),(c))
+       #define sk_GENERAL_NAME_set_cmp_func(a,b) SKM_sk_set_cmp_func(GENERAL_NAME, (a),(b))
+       #define sk_GENERAL_NAME_dup(a) SKM_sk_dup(GENERAL_NAME, a)
+       #define sk_GENERAL_NAME_pop_free(a,b) SKM_sk_pop_free(GENERAL_NAME, (a),(b))
+       #define sk_GENERAL_NAME_shift(a) SKM_sk_shift(GENERAL_NAME, (a))
+       #define sk_GENERAL_NAME_pop(a) SKM_sk_pop(GENERAL_NAME, (a))
+       #define sk_GENERAL_NAME_sort(a) SKM_sk_sort(GENERAL_NAME, (a))
+
+       #define sk_ACCESS_DESCRIPTION_new(a) SKM_sk_new(ACCESS_DESCRIPTION, (a))
+       #define sk_ACCESS_DESCRIPTION_new_null() SKM_sk_new_null(ACCESS_DESCRIPTION)
+       #define sk_ACCESS_DESCRIPTION_free(a) SKM_sk_free(ACCESS_DESCRIPTION, (a))
+       #define sk_ACCESS_DESCRIPTION_num(a) SKM_sk_num(ACCESS_DESCRIPTION, (a))
+       #define sk_ACCESS_DESCRIPTION_value(a,b) SKM_sk_value(ACCESS_DESCRIPTION, (a), (b))
+       #define sk_ACCESS_DESCRIPTION_set(a,b,c) SKM_sk_set(ACCESS_DESCRIPTION, (a), (b), (c))
+       #define sk_ACCESS_DESCRIPTION_zero(a) SKM_sk_zero(ACCESS_DESCRIPTION, (a))
+       #define sk_ACCESS_DESCRIPTION_push(a,b) SKM_sk_push(ACCESS_DESCRIPTION, (a),(b))
+       #define sk_ACCESS_DESCRIPTION_unshift(a,b) SKM_sk_unshift(ACCESS_DESCRIPTION, (a),(b))
+       #define sk_ACCESS_DESCRIPTION_find(a,b) SKM_sk_find(ACCESS_DESCRIPTION, (a), (b))
+       #define sk_ACCESS_DESCRIPTION_delete(a,b) SKM_sk_delete(ACCESS_DESCRIPTION, (a),(b))
+       #define sk_ACCESS_DESCRIPTION_delete_ptr(a,b) SKM_sk_delete_ptr(ACCESS_DESCRIPTION, (a),(b))
+       #define sk_ACCESS_DESCRIPTION_insert(a,b,c) SKM_sk_insert(ACCESS_DESCRIPTION, (a),(b),(c))
+       #define sk_ACCESS_DESCRIPTION_set_cmp_func(a,b) SKM_sk_set_cmp_func(ACCESS_DESCRIPTION, (a),(b))
+       #define sk_ACCESS_DESCRIPTION_dup(a) SKM_sk_dup(ACCESS_DESCRIPTION, a)
+       #define sk_ACCESS_DESCRIPTION_pop_free(a,b) SKM_sk_pop_free(ACCESS_DESCRIPTION, (a),(b))
+       #define sk_ACCESS_DESCRIPTION_shift(a) SKM_sk_shift(ACCESS_DESCRIPTION, (a))
+       #define sk_ACCESS_DESCRIPTION_pop(a) SKM_sk_pop(ACCESS_DESCRIPTION, (a))
+       #define sk_ACCESS_DESCRIPTION_sort(a) SKM_sk_sort(ACCESS_DESCRIPTION, (a))
+
+       #define sk_DIST_POINT_new(a) SKM_sk_new(DIST_POINT, (a))
+       #define sk_DIST_POINT_new_null() SKM_sk_new_null(DIST_POINT)
+       #define sk_DIST_POINT_free(a) SKM_sk_free(DIST_POINT, (a))
+       #define sk_DIST_POINT_num(a) SKM_sk_num(DIST_POINT, (a))
+       #define sk_DIST_POINT_value(a,b) SKM_sk_value(DIST_POINT, (a), (b))
+       #define sk_DIST_POINT_set(a,b,c) SKM_sk_set(DIST_POINT, (a), (b), (c))
+       #define sk_DIST_POINT_zero(a) SKM_sk_zero(DIST_POINT, (a))
+       #define sk_DIST_POINT_push(a,b) SKM_sk_push(DIST_POINT, (a),(b))
+       #define sk_DIST_POINT_unshift(a,b) SKM_sk_unshift(DIST_POINT, (a),(b))
+       #define sk_DIST_POINT_find(a,b) SKM_sk_find(DIST_POINT, (a), (b))
+       #define sk_DIST_POINT_delete(a,b) SKM_sk_delete(DIST_POINT, (a),(b))
+       #define sk_DIST_POINT_delete_ptr(a,b) SKM_sk_delete_ptr(DIST_POINT, (a),(b))
+       #define sk_DIST_POINT_insert(a,b,c) SKM_sk_insert(DIST_POINT, (a),(b),(c))
+       #define sk_DIST_POINT_set_cmp_func(a,b) SKM_sk_set_cmp_func(DIST_POINT, (a),(b))
+       #define sk_DIST_POINT_dup(a) SKM_sk_dup(DIST_POINT, a)
+       #define sk_DIST_POINT_pop_free(a,b) SKM_sk_pop_free(DIST_POINT, (a),(b))
+       #define sk_DIST_POINT_shift(a) SKM_sk_shift(DIST_POINT, (a))
+       #define sk_DIST_POINT_pop(a) SKM_sk_pop(DIST_POINT, (a))
+       #define sk_DIST_POINT_sort(a) SKM_sk_sort(DIST_POINT, (a))
+
+       #define sk_SXNETID_new(a) SKM_sk_new(SXNETID, (a))
+       #define sk_SXNETID_new_null() SKM_sk_new_null(SXNETID)
+       #define sk_SXNETID_free(a) SKM_sk_free(SXNETID, (a))
+       #define sk_SXNETID_num(a) SKM_sk_num(SXNETID, (a))
+       #define sk_SXNETID_value(a,b) SKM_sk_value(SXNETID, (a), (b))
+       #define sk_SXNETID_set(a,b,c) SKM_sk_set(SXNETID, (a), (b), (c))
+       #define sk_SXNETID_zero(a) SKM_sk_zero(SXNETID, (a))
+       #define sk_SXNETID_push(a,b) SKM_sk_push(SXNETID, (a),(b))
+       #define sk_SXNETID_unshift(a,b) SKM_sk_unshift(SXNETID, (a),(b))
+       #define sk_SXNETID_find(a,b) SKM_sk_find(SXNETID, (a), (b))
+       #define sk_SXNETID_delete(a,b) SKM_sk_delete(SXNETID, (a),(b))
+       #define sk_SXNETID_delete_ptr(a,b) SKM_sk_delete_ptr(SXNETID, (a),(b))
+       #define sk_SXNETID_insert(a,b,c) SKM_sk_insert(SXNETID, (a),(b),(c))
+       #define sk_SXNETID_set_cmp_func(a,b) SKM_sk_set_cmp_func(SXNETID, (a),(b))
+       #define sk_SXNETID_dup(a) SKM_sk_dup(SXNETID, a)
+       #define sk_SXNETID_pop_free(a,b) SKM_sk_pop_free(SXNETID, (a),(b))
+       #define sk_SXNETID_shift(a) SKM_sk_shift(SXNETID, (a))
+       #define sk_SXNETID_pop(a) SKM_sk_pop(SXNETID, (a))
+       #define sk_SXNETID_sort(a) SKM_sk_sort(SXNETID, (a))
+
+       #define sk_POLICYQUALINFO_new(a) SKM_sk_new(POLICYQUALINFO, (a))
+       #define sk_POLICYQUALINFO_new_null() SKM_sk_new_null(POLICYQUALINFO)
+       #define sk_POLICYQUALINFO_free(a) SKM_sk_free(POLICYQUALINFO, (a))
+       #define sk_POLICYQUALINFO_num(a) SKM_sk_num(POLICYQUALINFO, (a))
+       #define sk_POLICYQUALINFO_value(a,b) SKM_sk_value(POLICYQUALINFO, (a), (b))
+       #define sk_POLICYQUALINFO_set(a,b,c) SKM_sk_set(POLICYQUALINFO, (a), (b), (c))
+       #define sk_POLICYQUALINFO_zero(a) SKM_sk_zero(POLICYQUALINFO, (a))
+       #define sk_POLICYQUALINFO_push(a,b) SKM_sk_push(POLICYQUALINFO, (a),(b))
+       #define sk_POLICYQUALINFO_unshift(a,b) SKM_sk_unshift(POLICYQUALINFO, (a),(b))
+       #define sk_POLICYQUALINFO_find(a,b) SKM_sk_find(POLICYQUALINFO, (a), (b))
+       #define sk_POLICYQUALINFO_delete(a,b) SKM_sk_delete(POLICYQUALINFO, (a),(b))
+       #define sk_POLICYQUALINFO_delete_ptr(a,b) SKM_sk_delete_ptr(POLICYQUALINFO, (a),(b))
+       #define sk_POLICYQUALINFO_insert(a,b,c) SKM_sk_insert(POLICYQUALINFO, (a),(b),(c))
+       #define sk_POLICYQUALINFO_set_cmp_func(a,b) SKM_sk_set_cmp_func(POLICYQUALINFO, (a),(b))
+       #define sk_POLICYQUALINFO_dup(a) SKM_sk_dup(POLICYQUALINFO, a)
+       #define sk_POLICYQUALINFO_pop_free(a,b) SKM_sk_pop_free(POLICYQUALINFO, (a),(b))
+       #define sk_POLICYQUALINFO_shift(a) SKM_sk_shift(POLICYQUALINFO, (a))
+       #define sk_POLICYQUALINFO_pop(a) SKM_sk_pop(POLICYQUALINFO, (a))
+       #define sk_POLICYQUALINFO_sort(a) SKM_sk_sort(POLICYQUALINFO, (a))
+
+       #define sk_POLICYINFO_new(a) SKM_sk_new(POLICYINFO, (a))
+       #define sk_POLICYINFO_new_null() SKM_sk_new_null(POLICYINFO)
+       #define sk_POLICYINFO_free(a) SKM_sk_free(POLICYINFO, (a))
+       #define sk_POLICYINFO_num(a) SKM_sk_num(POLICYINFO, (a))
+       #define sk_POLICYINFO_value(a,b) SKM_sk_value(POLICYINFO, (a), (b))
+       #define sk_POLICYINFO_set(a,b,c) SKM_sk_set(POLICYINFO, (a), (b), (c))
+       #define sk_POLICYINFO_zero(a) SKM_sk_zero(POLICYINFO, (a))
+       #define sk_POLICYINFO_push(a,b) SKM_sk_push(POLICYINFO, (a),(b))
+       #define sk_POLICYINFO_unshift(a,b) SKM_sk_unshift(POLICYINFO, (a),(b))
+       #define sk_POLICYINFO_find(a,b) SKM_sk_find(POLICYINFO, (a), (b))
+       #define sk_POLICYINFO_delete(a,b) SKM_sk_delete(POLICYINFO, (a),(b))
+       #define sk_POLICYINFO_delete_ptr(a,b) SKM_sk_delete_ptr(POLICYINFO, (a),(b))
+       #define sk_POLICYINFO_insert(a,b,c) SKM_sk_insert(POLICYINFO, (a),(b),(c))
+       #define sk_POLICYINFO_set_cmp_func(a,b) SKM_sk_set_cmp_func(POLICYINFO, (a),(b))
+       #define sk_POLICYINFO_dup(a) SKM_sk_dup(POLICYINFO, a)
+       #define sk_POLICYINFO_pop_free(a,b) SKM_sk_pop_free(POLICYINFO, (a),(b))
+       #define sk_POLICYINFO_shift(a) SKM_sk_shift(POLICYINFO, (a))
+       #define sk_POLICYINFO_pop(a) SKM_sk_pop(POLICYINFO, (a))
+       #define sk_POLICYINFO_sort(a) SKM_sk_sort(POLICYINFO, (a))
+
+       #define sk_X509_PURPOSE_new(a) SKM_sk_new(X509_PURPOSE, (a))
+       #define sk_X509_PURPOSE_new_null() SKM_sk_new_null(X509_PURPOSE)
+       #define sk_X509_PURPOSE_free(a) SKM_sk_free(X509_PURPOSE, (a))
+       #define sk_X509_PURPOSE_num(a) SKM_sk_num(X509_PURPOSE, (a))
+       #define sk_X509_PURPOSE_value(a,b) SKM_sk_value(X509_PURPOSE, (a), (b))
+       #define sk_X509_PURPOSE_set(a,b,c) SKM_sk_set(X509_PURPOSE, (a), (b), (c))
+       #define sk_X509_PURPOSE_zero(a) SKM_sk_zero(X509_PURPOSE, (a))
+       #define sk_X509_PURPOSE_push(a,b) SKM_sk_push(X509_PURPOSE, (a),(b))
+       #define sk_X509_PURPOSE_unshift(a,b) SKM_sk_unshift(X509_PURPOSE, (a),(b))
+       #define sk_X509_PURPOSE_find(a,b) SKM_sk_find(X509_PURPOSE, (a), (b))
+       #define sk_X509_PURPOSE_delete(a,b) SKM_sk_delete(X509_PURPOSE, (a),(b))
+       #define sk_X509_PURPOSE_delete_ptr(a,b) SKM_sk_delete_ptr(X509_PURPOSE, (a),(b))
+       #define sk_X509_PURPOSE_insert(a,b,c) SKM_sk_insert(X509_PURPOSE, (a),(b),(c))
+       #define sk_X509_PURPOSE_set_cmp_func(a,b) SKM_sk_set_cmp_func(X509_PURPOSE, (a),(b))
+       #define sk_X509_PURPOSE_dup(a) SKM_sk_dup(X509_PURPOSE, a)
+       #define sk_X509_PURPOSE_pop_free(a,b) SKM_sk_pop_free(X509_PURPOSE, (a),(b))
+       #define sk_X509_PURPOSE_shift(a) SKM_sk_shift(X509_PURPOSE, (a))
+       #define sk_X509_PURPOSE_pop(a) SKM_sk_pop(X509_PURPOSE, (a))
+       #define sk_X509_PURPOSE_sort(a) SKM_sk_sort(X509_PURPOSE, (a))
+
+       #define sk_SSL_CIPHER_new(a) SKM_sk_new(SSL_CIPHER, (a))
+       #define sk_SSL_CIPHER_new_null() SKM_sk_new_null(SSL_CIPHER)
+       #define sk_SSL_CIPHER_free(a) SKM_sk_free(SSL_CIPHER, (a))
+       #define sk_SSL_CIPHER_num(a) SKM_sk_num(SSL_CIPHER, (a))
+       #define sk_SSL_CIPHER_value(a,b) SKM_sk_value(SSL_CIPHER, (a), (b))
+       #define sk_SSL_CIPHER_set(a,b,c) SKM_sk_set(SSL_CIPHER, (a), (b), (c))
+       #define sk_SSL_CIPHER_zero(a) SKM_sk_zero(SSL_CIPHER, (a))
+       #define sk_SSL_CIPHER_push(a,b) SKM_sk_push(SSL_CIPHER, (a),(b))
+       #define sk_SSL_CIPHER_unshift(a,b) SKM_sk_unshift(SSL_CIPHER, (a),(b))
+       #define sk_SSL_CIPHER_find(a,b) SKM_sk_find(SSL_CIPHER, (a), (b))
+       #define sk_SSL_CIPHER_delete(a,b) SKM_sk_delete(SSL_CIPHER, (a),(b))
+       #define sk_SSL_CIPHER_delete_ptr(a,b) SKM_sk_delete_ptr(SSL_CIPHER, (a),(b))
+       #define sk_SSL_CIPHER_insert(a,b,c) SKM_sk_insert(SSL_CIPHER, (a),(b),(c))
+       #define sk_SSL_CIPHER_set_cmp_func(a,b) SKM_sk_set_cmp_func(SSL_CIPHER, (a),(b))
+       #define sk_SSL_CIPHER_dup(a) SKM_sk_dup(SSL_CIPHER, a)
+       #define sk_SSL_CIPHER_pop_free(a,b) SKM_sk_pop_free(SSL_CIPHER, (a),(b))
+       #define sk_SSL_CIPHER_shift(a) SKM_sk_shift(SSL_CIPHER, (a))
+       #define sk_SSL_CIPHER_pop(a) SKM_sk_pop(SSL_CIPHER, (a))
+       #define sk_SSL_CIPHER_sort(a) SKM_sk_sort(SSL_CIPHER, (a))
+
+       #define sk_SSL_COMP_new(a) SKM_sk_new(SSL_COMP, (a))
+       #define sk_SSL_COMP_new_null() SKM_sk_new_null(SSL_COMP)
+       #define sk_SSL_COMP_free(a) SKM_sk_free(SSL_COMP, (a))
+       #define sk_SSL_COMP_num(a) SKM_sk_num(SSL_COMP, (a))
+       #define sk_SSL_COMP_value(a,b) SKM_sk_value(SSL_COMP, (a), (b))
+       #define sk_SSL_COMP_set(a,b,c) SKM_sk_set(SSL_COMP, (a), (b), (c))
+       #define sk_SSL_COMP_zero(a) SKM_sk_zero(SSL_COMP, (a))
+       #define sk_SSL_COMP_push(a,b) SKM_sk_push(SSL_COMP, (a),(b))
+       #define sk_SSL_COMP_unshift(a,b) SKM_sk_unshift(SSL_COMP, (a),(b))
+       #define sk_SSL_COMP_find(a,b) SKM_sk_find(SSL_COMP, (a), (b))
+       #define sk_SSL_COMP_delete(a,b) SKM_sk_delete(SSL_COMP, (a),(b))
+       #define sk_SSL_COMP_delete_ptr(a,b) SKM_sk_delete_ptr(SSL_COMP, (a),(b))
+       #define sk_SSL_COMP_insert(a,b,c) SKM_sk_insert(SSL_COMP, (a),(b),(c))
+       #define sk_SSL_COMP_set_cmp_func(a,b) SKM_sk_set_cmp_func(SSL_COMP, (a),(b))
+       #define sk_SSL_COMP_dup(a) SKM_sk_dup(SSL_COMP, a)
+       #define sk_SSL_COMP_pop_free(a,b) SKM_sk_pop_free(SSL_COMP, (a),(b))
+       #define sk_SSL_COMP_shift(a) SKM_sk_shift(SSL_COMP, (a))
+       #define sk_SSL_COMP_pop(a) SKM_sk_pop(SSL_COMP, (a))
+       #define sk_SSL_COMP_sort(a) SKM_sk_sort(SSL_COMP, (a))
+
+/* End of perl script block, you may now edit :-) */
+
 #endif /* ndef HEADER_SAFESTACK_H */
index b3e32a7..2eb531f 100644 (file)
@@ -109,6 +109,11 @@ err:
        return(NULL);
        }
 
+STACK *sk_new_null(void)
+       {
+       return sk_new((int (*)(const char * const *, const char * const *))NULL);
+       }
+
 STACK *sk_new(int (*c)(const char * const *, const char * const *))
        {
        STACK *ret;
index 6f5b4bd..8b436ca 100644 (file)
@@ -73,9 +73,6 @@ typedef struct stack_st
        int (*comp)(const char * const *, const char * const *);
        } STACK;
 
-#define sk_new_null()  sk_new((int (*)(const char * const *, \
-                               const char * const *))NULL)
-
 #define M_sk_num(sk)           ((sk) ? (sk)->num:-1)
 #define M_sk_value(sk,n)       ((sk) ? (sk)->data[n] : NULL)
 
@@ -85,6 +82,7 @@ char *sk_value(const STACK *, int);
 char *sk_set(STACK *, int, char *);
 
 STACK *sk_new(int (*cmp)(const char * const *, const char * const *));
+STACK *sk_new_null(void);
 void sk_free(STACK *);
 void sk_pop_free(STACK *st, void (*func)(void *));
 int sk_insert(STACK *sk,char *data,int where);
index 87f192f..baf76f3 100644 (file)
@@ -152,37 +152,6 @@ typedef struct X509_algor_st
        } X509_ALGOR;
 
 DECLARE_STACK_OF(X509_ALGOR)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
-       #define sk_X509_ALGOR_new(a) sk_new((int (*) \
-               (const char * const *, const char * const *))(a))
-       #define sk_X509_ALGOR_new_null() sk_new_null()
-       #define sk_X509_ALGOR_free(a) sk_free(a)
-       #define sk_X509_ALGOR_num(a) sk_num(a)
-       #define sk_X509_ALGOR_value(a,b) ((X509_ALGOR *) \
-               sk_value((a),(b)))
-       #define sk_X509_ALGOR_set(a,b,c) ((X509_ALGOR *) \
-               sk_set((a),(b),(char *)(c)))
-       #define sk_X509_ALGOR_zero(a) sk_zero(a)
-       #define sk_X509_ALGOR_push(a,b) sk_push((a),(char *)(b))
-       #define sk_X509_ALGOR_unshift(a,b) sk_unshift((a),(b))
-       #define sk_X509_ALGOR_find(a,b) sk_find((a), (char *)(b))
-       #define sk_X509_ALGOR_delete(a,b) ((X509_ALGOR *) \
-               sk_delete((a),(b)))
-       #define sk_X509_ALGOR_delete_ptr(a,b) ((X509_ALGOR *) \
-               sk_delete_ptr((a),(char *)(b)))
-       #define sk_X509_ALGOR_insert(a,b,c) sk_insert((a),(char *)(b),(c))
-       #define sk_X509_ALGOR_set_cmp_func(a,b) ((int (*) \
-               (const X509_ALGOR * const *,const X509_ALGOR * const *)) \
-               sk_set_cmp_func((a),(int (*) \
-               (const char * const *, const char * const *))(b)))
-       #define sk_X509_ALGOR_dup(a) sk_dup(a)
-       #define sk_X509_ALGOR_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
-       #define sk_X509_ALGOR_shift(a) ((X509_ALGOR *)sk_shift(a))
-       #define sk_X509_ALGOR_pop(a) ((X509_ALGOR *)sk_pop(a))
-       #define sk_X509_ALGOR_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
 DECLARE_ASN1_SET_OF(X509_ALGOR)
 
 typedef struct X509_val_st
@@ -213,37 +182,6 @@ typedef struct X509_name_entry_st
        } X509_NAME_ENTRY;
 
 DECLARE_STACK_OF(X509_NAME_ENTRY)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
-       #define sk_X509_NAME_ENTRY_new(a) sk_new((int (*) \
-               (const char * const *, const char * const *))(a))
-       #define sk_X509_NAME_ENTRY_new_null() sk_new_null()
-       #define sk_X509_NAME_ENTRY_free(a) sk_free(a)
-       #define sk_X509_NAME_ENTRY_num(a) sk_num(a)
-       #define sk_X509_NAME_ENTRY_value(a,b) ((X509_NAME_ENTRY *) \
-               sk_value((a),(b)))
-       #define sk_X509_NAME_ENTRY_set(a,b,c) ((X509_NAME_ENTRY *) \
-               sk_set((a),(b),(char *)(c)))
-       #define sk_X509_NAME_ENTRY_zero(a) sk_zero(a)
-       #define sk_X509_NAME_ENTRY_push(a,b) sk_push((a),(char *)(b))
-       #define sk_X509_NAME_ENTRY_unshift(a,b) sk_unshift((a),(b))
-       #define sk_X509_NAME_ENTRY_find(a,b) sk_find((a), (char *)(b))
-       #define sk_X509_NAME_ENTRY_delete(a,b) ((X509_NAME_ENTRY *) \
-               sk_delete((a),(b)))
-       #define sk_X509_NAME_ENTRY_delete_ptr(a,b) ((X509_NAME_ENTRY *) \
-               sk_delete_ptr((a),(char *)(b)))
-       #define sk_X509_NAME_ENTRY_insert(a,b,c) sk_insert((a),(char *)(b),(c))
-       #define sk_X509_NAME_ENTRY_set_cmp_func(a,b) ((int (*) \
-               (const X509_NAME_ENTRY * const *,const X509_NAME_ENTRY * const *)) \
-               sk_set_cmp_func((a),(int (*) \
-               (const char * const *, const char * const *))(b)))
-       #define sk_X509_NAME_ENTRY_dup(a) sk_dup(a)
-       #define sk_X509_NAME_ENTRY_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
-       #define sk_X509_NAME_ENTRY_shift(a) ((X509_NAME_ENTRY *)sk_shift(a))
-       #define sk_X509_NAME_ENTRY_pop(a) ((X509_NAME_ENTRY *)sk_pop(a))
-       #define sk_X509_NAME_ENTRY_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
 DECLARE_ASN1_SET_OF(X509_NAME_ENTRY)
 
 /* we always keep X509_NAMEs in 2 forms. */
@@ -260,37 +198,6 @@ typedef struct X509_name_st
        } X509_NAME;
 
 DECLARE_STACK_OF(X509_NAME)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
-       #define sk_X509_NAME_new(a) sk_new((int (*) \
-               (const char * const *, const char * const *))(a))
-       #define sk_X509_NAME_new_null() sk_new_null()
-       #define sk_X509_NAME_free(a) sk_free(a)
-       #define sk_X509_NAME_num(a) sk_num(a)
-       #define sk_X509_NAME_value(a,b) ((X509_NAME *) \
-               sk_value((a),(b)))
-       #define sk_X509_NAME_set(a,b,c) ((X509_NAME *) \
-               sk_set((a),(b),(char *)(c)))
-       #define sk_X509_NAME_zero(a) sk_zero(a)
-       #define sk_X509_NAME_push(a,b) sk_push((a),(char *)(b))
-       #define sk_X509_NAME_unshift(a,b) sk_unshift((a),(b))
-       #define sk_X509_NAME_find(a,b) sk_find((a), (char *)(b))
-       #define sk_X509_NAME_delete(a,b) ((X509_NAME *) \
-               sk_delete((a),(b)))
-       #define sk_X509_NAME_delete_ptr(a,b) ((X509_NAME *) \
-               sk_delete_ptr((a),(char *)(b)))
-       #define sk_X509_NAME_insert(a,b,c) sk_insert((a),(char *)(b),(c))
-       #define sk_X509_NAME_set_cmp_func(a,b) ((int (*) \
-               (const X509_NAME * const *,const X509_NAME * const *)) \
-               sk_set_cmp_func((a),(int (*) \
-               (const char * const *, const char * const *))(b)))
-       #define sk_X509_NAME_dup(a) sk_dup(a)
-       #define sk_X509_NAME_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
-       #define sk_X509_NAME_shift(a) ((X509_NAME *)sk_shift(a))
-       #define sk_X509_NAME_pop(a) ((X509_NAME *)sk_pop(a))
-       #define sk_X509_NAME_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
 
 #define X509_EX_V_NETSCAPE_HACK                0x8000
 #define X509_EX_V_INIT                 0x0001
@@ -305,37 +212,6 @@ typedef struct X509_extension_st
        } X509_EXTENSION;
 
 DECLARE_STACK_OF(X509_EXTENSION)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
-       #define sk_X509_EXTENSION_new(a) sk_new((int (*) \
-               (const char * const *, const char * const *))(a))
-       #define sk_X509_EXTENSION_new_null() sk_new_null()
-       #define sk_X509_EXTENSION_free(a) sk_free(a)
-       #define sk_X509_EXTENSION_num(a) sk_num(a)
-       #define sk_X509_EXTENSION_value(a,b) ((X509_EXTENSION *) \
-               sk_value((a),(b)))
-       #define sk_X509_EXTENSION_set(a,b,c) ((X509_EXTENSION *) \
-               sk_set((a),(b),(char *)(c)))
-       #define sk_X509_EXTENSION_zero(a) sk_zero(a)
-       #define sk_X509_EXTENSION_push(a,b) sk_push((a),(char *)(b))
-       #define sk_X509_EXTENSION_unshift(a,b) sk_unshift((a),(b))
-       #define sk_X509_EXTENSION_find(a,b) sk_find((a), (char *)(b))
-       #define sk_X509_EXTENSION_delete(a,b) ((X509_EXTENSION *) \
-               sk_delete((a),(b)))
-       #define sk_X509_EXTENSION_delete_ptr(a,b) ((X509_EXTENSION *) \
-               sk_delete_ptr((a),(char *)(b)))
-       #define sk_X509_EXTENSION_insert(a,b,c) sk_insert((a),(char *)(b),(c))
-       #define sk_X509_EXTENSION_set_cmp_func(a,b) ((int (*) \
-               (const X509_EXTENSION * const *,const X509_EXTENSION * const *)) \
-               sk_set_cmp_func((a),(int (*) \
-               (const char * const *, const char * const *))(b)))
-       #define sk_X509_EXTENSION_dup(a) sk_dup(a)
-       #define sk_X509_EXTENSION_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
-       #define sk_X509_EXTENSION_shift(a) ((X509_EXTENSION *)sk_shift(a))
-       #define sk_X509_EXTENSION_pop(a) ((X509_EXTENSION *)sk_pop(a))
-       #define sk_X509_EXTENSION_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
 DECLARE_ASN1_SET_OF(X509_EXTENSION)
 
 /* a sequence of these are used */
@@ -351,37 +227,6 @@ typedef struct x509_attributes_st
        } X509_ATTRIBUTE;
 
 DECLARE_STACK_OF(X509_ATTRIBUTE)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
-       #define sk_X509_ATTRIBUTE_new(a) sk_new((int (*) \
-               (const char * const *, const char * const *))(a))
-       #define sk_X509_ATTRIBUTE_new_null() sk_new_null()
-       #define sk_X509_ATTRIBUTE_free(a) sk_free(a)
-       #define sk_X509_ATTRIBUTE_num(a) sk_num(a)
-       #define sk_X509_ATTRIBUTE_value(a,b) ((X509_ATTRIBUTE *) \
-               sk_value((a),(b)))
-       #define sk_X509_ATTRIBUTE_set(a,b,c) ((X509_ATTRIBUTE *) \
-               sk_set((a),(b),(char *)(c)))
-       #define sk_X509_ATTRIBUTE_zero(a) sk_zero(a)
-       #define sk_X509_ATTRIBUTE_push(a,b) sk_push((a),(char *)(b))
-       #define sk_X509_ATTRIBUTE_unshift(a,b) sk_unshift((a),(b))
-       #define sk_X509_ATTRIBUTE_find(a,b) sk_find((a), (char *)(b))
-       #define sk_X509_ATTRIBUTE_delete(a,b) ((X509_ATTRIBUTE *) \
-               sk_delete((a),(b)))
-       #define sk_X509_ATTRIBUTE_delete_ptr(a,b) ((X509_ATTRIBUTE *) \
-               sk_delete_ptr((a),(char *)(b)))
-       #define sk_X509_ATTRIBUTE_insert(a,b,c) sk_insert((a),(char *)(b),(c))
-       #define sk_X509_ATTRIBUTE_set_cmp_func(a,b) ((int (*) \
-               (const X509_ATTRIBUTE * const *,const X509_ATTRIBUTE * const *)) \
-               sk_set_cmp_func((a),(int (*) \
-               (const char * const *, const char * const *))(b)))
-       #define sk_X509_ATTRIBUTE_dup(a) sk_dup(a)
-       #define sk_X509_ATTRIBUTE_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
-       #define sk_X509_ATTRIBUTE_shift(a) ((X509_ATTRIBUTE *)sk_shift(a))
-       #define sk_X509_ATTRIBUTE_pop(a) ((X509_ATTRIBUTE *)sk_pop(a))
-       #define sk_X509_ATTRIBUTE_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
 DECLARE_ASN1_SET_OF(X509_ATTRIBUTE)
 
 typedef struct X509_req_info_st
@@ -453,37 +298,6 @@ typedef struct x509_st
        } X509;
 
 DECLARE_STACK_OF(X509)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
-       #define sk_X509_new(a) sk_new((int (*) \
-               (const char * const *, const char * const *))(a))
-       #define sk_X509_new_null() sk_new_null()
-       #define sk_X509_free(a) sk_free(a)
-       #define sk_X509_num(a) sk_num(a)
-       #define sk_X509_value(a,b) ((X509 *) \
-               sk_value((a),(b)))
-       #define sk_X509_set(a,b,c) ((X509 *) \
-               sk_set((a),(b),(char *)(c)))
-       #define sk_X509_zero(a) sk_zero(a)
-       #define sk_X509_push(a,b) sk_push((a),(char *)(b))
-       #define sk_X509_unshift(a,b) sk_unshift((a),(b))
-       #define sk_X509_find(a,b) sk_find((a), (char *)(b))
-       #define sk_X509_delete(a,b) ((X509 *) \
-               sk_delete((a),(b)))
-       #define sk_X509_delete_ptr(a,b) ((X509 *) \
-               sk_delete_ptr((a),(char *)(b)))
-       #define sk_X509_insert(a,b,c) sk_insert((a),(char *)(b),(c))
-       #define sk_X509_set_cmp_func(a,b) ((int (*) \
-               (const X509 * const *,const X509 * const *)) \
-               sk_set_cmp_func((a),(int (*) \
-               (const char * const *, const char * const *))(b)))
-       #define sk_X509_dup(a) sk_dup(a)
-       #define sk_X509_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
-       #define sk_X509_shift(a) ((X509 *)sk_shift(a))
-       #define sk_X509_pop(a) ((X509 *)sk_pop(a))
-       #define sk_X509_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
 DECLARE_ASN1_SET_OF(X509)
 
 /* This is used for a table of trust checking functions */
@@ -498,37 +312,6 @@ typedef struct x509_trust_st {
 } X509_TRUST;
 
 DECLARE_STACK_OF(X509_TRUST)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
-       #define sk_X509_TRUST_new(a) sk_new((int (*) \
-               (const char * const *, const char * const *))(a))
-       #define sk_X509_TRUST_new_null() sk_new_null()
-       #define sk_X509_TRUST_free(a) sk_free(a)
-       #define sk_X509_TRUST_num(a) sk_num(a)
-       #define sk_X509_TRUST_value(a,b) ((X509_TRUST *) \
-               sk_value((a),(b)))
-       #define sk_X509_TRUST_set(a,b,c) ((X509_TRUST *) \
-               sk_set((a),(b),(char *)(c)))
-       #define sk_X509_TRUST_zero(a) sk_zero(a)
-       #define sk_X509_TRUST_push(a,b) sk_push((a),(char *)(b))
-       #define sk_X509_TRUST_unshift(a,b) sk_unshift((a),(b))
-       #define sk_X509_TRUST_find(a,b) sk_find((a), (char *)(b))
-       #define sk_X509_TRUST_delete(a,b) ((X509_TRUST *) \
-               sk_delete((a),(b)))
-       #define sk_X509_TRUST_delete_ptr(a,b) ((X509_TRUST *) \
-               sk_delete_ptr((a),(char *)(b)))
-       #define sk_X509_TRUST_insert(a,b,c) sk_insert((a),(char *)(b),(c))
-       #define sk_X509_TRUST_set_cmp_func(a,b) ((int (*) \
-               (const X509_TRUST * const *,const X509_TRUST * const *)) \
-               sk_set_cmp_func((a),(int (*) \
-               (const char * const *, const char * const *))(b)))
-       #define sk_X509_TRUST_dup(a) sk_dup(a)
-       #define sk_X509_TRUST_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
-       #define sk_X509_TRUST_shift(a) ((X509_TRUST *)sk_shift(a))
-       #define sk_X509_TRUST_pop(a) ((X509_TRUST *)sk_pop(a))
-       #define sk_X509_TRUST_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
 
 /* standard trust ids */
 
@@ -564,37 +347,6 @@ typedef struct X509_revoked_st
        } X509_REVOKED;
 
 DECLARE_STACK_OF(X509_REVOKED)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
-       #define sk_X509_REVOKED_new(a) sk_new((int (*) \
-               (const char * const *, const char * const *))(a))
-       #define sk_X509_REVOKED_new_null() sk_new_null()
-       #define sk_X509_REVOKED_free(a) sk_free(a)
-       #define sk_X509_REVOKED_num(a) sk_num(a)
-       #define sk_X509_REVOKED_value(a,b) ((X509_REVOKED *) \
-               sk_value((a),(b)))
-       #define sk_X509_REVOKED_set(a,b,c) ((X509_REVOKED *) \
-               sk_set((a),(b),(char *)(c)))
-       #define sk_X509_REVOKED_zero(a) sk_zero(a)
-       #define sk_X509_REVOKED_push(a,b) sk_push((a),(char *)(b))
-       #define sk_X509_REVOKED_unshift(a,b) sk_unshift((a),(b))
-       #define sk_X509_REVOKED_find(a,b) sk_find((a), (char *)(b))
-       #define sk_X509_REVOKED_delete(a,b) ((X509_REVOKED *) \
-               sk_delete((a),(b)))
-       #define sk_X509_REVOKED_delete_ptr(a,b) ((X509_REVOKED *) \
-               sk_delete_ptr((a),(char *)(b)))
-       #define sk_X509_REVOKED_insert(a,b,c) sk_insert((a),(char *)(b),(c))
-       #define sk_X509_REVOKED_set_cmp_func(a,b) ((int (*) \
-               (const X509_REVOKED * const *,const X509_REVOKED * const *)) \
-               sk_set_cmp_func((a),(int (*) \
-               (const char * const *, const char * const *))(b)))
-       #define sk_X509_REVOKED_dup(a) sk_dup(a)
-       #define sk_X509_REVOKED_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
-       #define sk_X509_REVOKED_shift(a) ((X509_REVOKED *)sk_shift(a))
-       #define sk_X509_REVOKED_pop(a) ((X509_REVOKED *)sk_pop(a))
-       #define sk_X509_REVOKED_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
 DECLARE_ASN1_SET_OF(X509_REVOKED)
 
 typedef struct X509_crl_info_st
@@ -618,37 +370,6 @@ typedef struct X509_crl_st
        } X509_CRL;
 
 DECLARE_STACK_OF(X509_CRL)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
-       #define sk_X509_CRL_new(a) sk_new((int (*) \
-               (const char * const *, const char * const *))(a))
-       #define sk_X509_CRL_new_null() sk_new_null()
-       #define sk_X509_CRL_free(a) sk_free(a)
-       #define sk_X509_CRL_num(a) sk_num(a)
-       #define sk_X509_CRL_value(a,b) ((X509_CRL *) \
-               sk_value((a),(b)))
-       #define sk_X509_CRL_set(a,b,c) ((X509_CRL *) \
-               sk_set((a),(b),(char *)(c)))
-       #define sk_X509_CRL_zero(a) sk_zero(a)
-       #define sk_X509_CRL_push(a,b) sk_push((a),(char *)(b))
-       #define sk_X509_CRL_unshift(a,b) sk_unshift((a),(b))
-       #define sk_X509_CRL_find(a,b) sk_find((a), (char *)(b))
-       #define sk_X509_CRL_delete(a,b) ((X509_CRL *) \
-               sk_delete((a),(b)))
-       #define sk_X509_CRL_delete_ptr(a,b) ((X509_CRL *) \
-               sk_delete_ptr((a),(char *)(b)))
-       #define sk_X509_CRL_insert(a,b,c) sk_insert((a),(char *)(b),(c))
-       #define sk_X509_CRL_set_cmp_func(a,b) ((int (*) \
-               (const X509_CRL * const *,const X509_CRL * const *)) \
-               sk_set_cmp_func((a),(int (*) \
-               (const char * const *, const char * const *))(b)))
-       #define sk_X509_CRL_dup(a) sk_dup(a)
-       #define sk_X509_CRL_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
-       #define sk_X509_CRL_shift(a) ((X509_CRL *)sk_shift(a))
-       #define sk_X509_CRL_pop(a) ((X509_CRL *)sk_pop(a))
-       #define sk_X509_CRL_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
 DECLARE_ASN1_SET_OF(X509_CRL)
 
 typedef struct private_key_st
@@ -687,37 +408,6 @@ typedef struct X509_info_st
        } X509_INFO;
 
 DECLARE_STACK_OF(X509_INFO)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
-       #define sk_X509_INFO_new(a) sk_new((int (*) \
-               (const char * const *, const char * const *))(a))
-       #define sk_X509_INFO_new_null() sk_new_null()
-       #define sk_X509_INFO_free(a) sk_free(a)
-       #define sk_X509_INFO_num(a) sk_num(a)
-       #define sk_X509_INFO_value(a,b) ((X509_INFO *) \
-               sk_value((a),(b)))
-       #define sk_X509_INFO_set(a,b,c) ((X509_INFO *) \
-               sk_set((a),(b),(char *)(c)))
-       #define sk_X509_INFO_zero(a) sk_zero(a)
-       #define sk_X509_INFO_push(a,b) sk_push((a),(char *)(b))
-       #define sk_X509_INFO_unshift(a,b) sk_unshift((a),(b))
-       #define sk_X509_INFO_find(a,b) sk_find((a), (char *)(b))
-       #define sk_X509_INFO_delete(a,b) ((X509_INFO *) \
-               sk_delete((a),(b)))
-       #define sk_X509_INFO_delete_ptr(a,b) ((X509_INFO *) \
-               sk_delete_ptr((a),(char *)(b)))
-       #define sk_X509_INFO_insert(a,b,c) sk_insert((a),(char *)(b),(c))
-       #define sk_X509_INFO_set_cmp_func(a,b) ((int (*) \
-               (const X509_INFO * const *,const X509_INFO * const *)) \
-               sk_set_cmp_func((a),(int (*) \
-               (const char * const *, const char * const *))(b)))
-       #define sk_X509_INFO_dup(a) sk_dup(a)
-       #define sk_X509_INFO_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
-       #define sk_X509_INFO_shift(a) ((X509_INFO *)sk_shift(a))
-       #define sk_X509_INFO_pop(a) ((X509_INFO *)sk_pop(a))
-       #define sk_X509_INFO_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
 #endif
 
 /* The next 2 structures and their 8 routines were sent to me by
index f842e4a..cc0bd3d 100644 (file)
@@ -131,37 +131,6 @@ typedef struct x509_object_st
 typedef struct x509_lookup_st X509_LOOKUP;
 
 DECLARE_STACK_OF(X509_LOOKUP)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
-       #define sk_X509_LOOKUP_new(a) sk_new((int (*) \
-               (const char * const *, const char * const *))(a))
-       #define sk_X509_LOOKUP_new_null() sk_new_null()
-       #define sk_X509_LOOKUP_free(a) sk_free(a)
-       #define sk_X509_LOOKUP_num(a) sk_num(a)
-       #define sk_X509_LOOKUP_value(a,b) ((X509_LOOKUP *) \
-               sk_value((a),(b)))
-       #define sk_X509_LOOKUP_set(a,b,c) ((X509_LOOKUP *) \
-               sk_set((a),(b),(char *)(c)))
-       #define sk_X509_LOOKUP_zero(a) sk_zero(a)
-       #define sk_X509_LOOKUP_push(a,b) sk_push((a),(char *)(b))
-       #define sk_X509_LOOKUP_unshift(a,b) sk_unshift((a),(b))
-       #define sk_X509_LOOKUP_find(a,b) sk_find((a), (char *)(b))
-       #define sk_X509_LOOKUP_delete(a,b) ((X509_LOOKUP *) \
-               sk_delete((a),(b)))
-       #define sk_X509_LOOKUP_delete_ptr(a,b) ((X509_LOOKUP *) \
-               sk_delete_ptr((a),(char *)(b)))
-       #define sk_X509_LOOKUP_insert(a,b,c) sk_insert((a),(char *)(b),(c))
-       #define sk_X509_LOOKUP_set_cmp_func(a,b) ((int (*) \
-               (const X509_LOOKUP * const *,const X509_LOOKUP * const *)) \
-               sk_set_cmp_func((a),(int (*) \
-               (const char * const *, const char * const *))(b)))
-       #define sk_X509_LOOKUP_dup(a) sk_dup(a)
-       #define sk_X509_LOOKUP_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
-       #define sk_X509_LOOKUP_shift(a) ((X509_LOOKUP *)sk_shift(a))
-       #define sk_X509_LOOKUP_pop(a) ((X509_LOOKUP *)sk_pop(a))
-       #define sk_X509_LOOKUP_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
 
 /* This is a static that defines the function interface */
 typedef struct x509_lookup_method_st
index c66b5c3..5f00ed5 100644 (file)
@@ -132,37 +132,6 @@ typedef struct v3_ext_method X509V3_EXT_METHOD;
 typedef struct v3_ext_ctx X509V3_CTX;
 
 DECLARE_STACK_OF(X509V3_EXT_METHOD)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
-       #define sk_X509V3_EXT_METHOD_new(a) sk_new((int (*) \
-               (const char * const *, const char * const *))(a))
-       #define sk_X509V3_EXT_METHOD_new_null() sk_new_null()
-       #define sk_X509V3_EXT_METHOD_free(a) sk_free(a)
-       #define sk_X509V3_EXT_METHOD_num(a) sk_num(a)
-       #define sk_X509V3_EXT_METHOD_value(a,b) ((X509V3_EXT_METHOD *) \
-               sk_value((a),(b)))
-       #define sk_X509V3_EXT_METHOD_set(a,b,c) ((X509V3_EXT_METHOD *) \
-               sk_set((a),(b),(char *)(c)))
-       #define sk_X509V3_EXT_METHOD_zero(a) sk_zero(a)
-       #define sk_X509V3_EXT_METHOD_push(a,b) sk_push((a),(char *)(b))
-       #define sk_X509V3_EXT_METHOD_unshift(a,b) sk_unshift((a),(b))
-       #define sk_X509V3_EXT_METHOD_find(a,b) sk_find((a), (char *)(b))
-       #define sk_X509V3_EXT_METHOD_delete(a,b) ((X509V3_EXT_METHOD *) \
-               sk_delete((a),(b)))
-       #define sk_X509V3_EXT_METHOD_delete_ptr(a,b) ((X509V3_EXT_METHOD *) \
-               sk_delete_ptr((a),(char *)(b)))
-       #define sk_X509V3_EXT_METHOD_insert(a,b,c) sk_insert((a),(char *)(b),(c))
-       #define sk_X509V3_EXT_METHOD_set_cmp_func(a,b) ((int (*) \
-               (const X509V3_EXT_METHOD * const *,const X509V3_EXT_METHOD * const *)) \
-               sk_set_cmp_func((a),(int (*) \
-               (const char * const *, const char * const *))(b)))
-       #define sk_X509V3_EXT_METHOD_dup(a) sk_dup(a)
-       #define sk_X509V3_EXT_METHOD_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
-       #define sk_X509V3_EXT_METHOD_shift(a) ((X509V3_EXT_METHOD *)sk_shift(a))
-       #define sk_X509V3_EXT_METHOD_pop(a) ((X509V3_EXT_METHOD *)sk_pop(a))
-       #define sk_X509V3_EXT_METHOD_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
 
 /* ext_flags values */
 #define X509V3_EXT_DYNAMIC     0x1
@@ -217,71 +186,9 @@ typedef struct ACCESS_DESCRIPTION_st {
 } ACCESS_DESCRIPTION;
 
 DECLARE_STACK_OF(GENERAL_NAME)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
-       #define sk_GENERAL_NAME_new(a) sk_new((int (*) \
-               (const char * const *, const char * const *))(a))
-       #define sk_GENERAL_NAME_new_null() sk_new_null()
-       #define sk_GENERAL_NAME_free(a) sk_free(a)
-       #define sk_GENERAL_NAME_num(a) sk_num(a)
-       #define sk_GENERAL_NAME_value(a,b) ((GENERAL_NAME *) \
-               sk_value((a),(b)))
-       #define sk_GENERAL_NAME_set(a,b,c) ((GENERAL_NAME *) \
-               sk_set((a),(b),(char *)(c)))
-       #define sk_GENERAL_NAME_zero(a) sk_zero(a)
-       #define sk_GENERAL_NAME_push(a,b) sk_push((a),(char *)(b))
-       #define sk_GENERAL_NAME_unshift(a,b) sk_unshift((a),(b))
-       #define sk_GENERAL_NAME_find(a,b) sk_find((a), (char *)(b))
-       #define sk_GENERAL_NAME_delete(a,b) ((GENERAL_NAME *) \
-               sk_delete((a),(b)))
-       #define sk_GENERAL_NAME_delete_ptr(a,b) ((GENERAL_NAME *) \
-               sk_delete_ptr((a),(char *)(b)))
-       #define sk_GENERAL_NAME_insert(a,b,c) sk_insert((a),(char *)(b),(c))
-       #define sk_GENERAL_NAME_set_cmp_func(a,b) ((int (*) \
-               (const GENERAL_NAME * const *,const GENERAL_NAME * const *)) \
-               sk_set_cmp_func((a),(int (*) \
-               (const char * const *, const char * const *))(b)))
-       #define sk_GENERAL_NAME_dup(a) sk_dup(a)
-       #define sk_GENERAL_NAME_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
-       #define sk_GENERAL_NAME_shift(a) ((GENERAL_NAME *)sk_shift(a))
-       #define sk_GENERAL_NAME_pop(a) ((GENERAL_NAME *)sk_pop(a))
-       #define sk_GENERAL_NAME_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
 DECLARE_ASN1_SET_OF(GENERAL_NAME)
 
 DECLARE_STACK_OF(ACCESS_DESCRIPTION)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
-       #define sk_ACCESS_DESCRIPTION_new(a) sk_new((int (*) \
-               (const char * const *, const char * const *))(a))
-       #define sk_ACCESS_DESCRIPTION_new_null() sk_new_null()
-       #define sk_ACCESS_DESCRIPTION_free(a) sk_free(a)
-       #define sk_ACCESS_DESCRIPTION_num(a) sk_num(a)
-       #define sk_ACCESS_DESCRIPTION_value(a,b) ((ACCESS_DESCRIPTION *) \
-               sk_value((a),(b)))
-       #define sk_ACCESS_DESCRIPTION_set(a,b,c) ((ACCESS_DESCRIPTION *) \
-               sk_set((a),(b),(char *)(c)))
-       #define sk_ACCESS_DESCRIPTION_zero(a) sk_zero(a)
-       #define sk_ACCESS_DESCRIPTION_push(a,b) sk_push((a),(char *)(b))
-       #define sk_ACCESS_DESCRIPTION_unshift(a,b) sk_unshift((a),(b))
-       #define sk_ACCESS_DESCRIPTION_find(a,b) sk_find((a), (char *)(b))
-       #define sk_ACCESS_DESCRIPTION_delete(a,b) ((ACCESS_DESCRIPTION *) \
-               sk_delete((a),(b)))
-       #define sk_ACCESS_DESCRIPTION_delete_ptr(a,b) ((ACCESS_DESCRIPTION *) \
-               sk_delete_ptr((a),(char *)(b)))
-       #define sk_ACCESS_DESCRIPTION_insert(a,b,c) sk_insert((a),(char *)(b),(c))
-       #define sk_ACCESS_DESCRIPTION_set_cmp_func(a,b) ((int (*) \
-               (const ACCESS_DESCRIPTION * const *,const ACCESS_DESCRIPTION * const *)) \
-               sk_set_cmp_func((a),(int (*) \
-               (const char * const *, const char * const *))(b)))
-       #define sk_ACCESS_DESCRIPTION_dup(a) sk_dup(a)
-       #define sk_ACCESS_DESCRIPTION_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
-       #define sk_ACCESS_DESCRIPTION_shift(a) ((ACCESS_DESCRIPTION *)sk_shift(a))
-       #define sk_ACCESS_DESCRIPTION_pop(a) ((ACCESS_DESCRIPTION *)sk_pop(a))
-       #define sk_ACCESS_DESCRIPTION_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
 DECLARE_ASN1_SET_OF(ACCESS_DESCRIPTION)
 
 typedef struct DIST_POINT_NAME_st {
@@ -297,37 +204,6 @@ STACK_OF(GENERAL_NAME) *CRLissuer;
 } DIST_POINT;
 
 DECLARE_STACK_OF(DIST_POINT)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
-       #define sk_DIST_POINT_new(a) sk_new((int (*) \
-               (const char * const *, const char * const *))(a))
-       #define sk_DIST_POINT_new_null() sk_new_null()
-       #define sk_DIST_POINT_free(a) sk_free(a)
-       #define sk_DIST_POINT_num(a) sk_num(a)
-       #define sk_DIST_POINT_value(a,b) ((DIST_POINT *) \
-               sk_value((a),(b)))
-       #define sk_DIST_POINT_set(a,b,c) ((DIST_POINT *) \
-               sk_set((a),(b),(char *)(c)))
-       #define sk_DIST_POINT_zero(a) sk_zero(a)
-       #define sk_DIST_POINT_push(a,b) sk_push((a),(char *)(b))
-       #define sk_DIST_POINT_unshift(a,b) sk_unshift((a),(b))
-       #define sk_DIST_POINT_find(a,b) sk_find((a), (char *)(b))
-       #define sk_DIST_POINT_delete(a,b) ((DIST_POINT *) \
-               sk_delete((a),(b)))
-       #define sk_DIST_POINT_delete_ptr(a,b) ((DIST_POINT *) \
-               sk_delete_ptr((a),(char *)(b)))
-       #define sk_DIST_POINT_insert(a,b,c) sk_insert((a),(char *)(b),(c))
-       #define sk_DIST_POINT_set_cmp_func(a,b) ((int (*) \
-               (const DIST_POINT * const *,const DIST_POINT * const *)) \
-               sk_set_cmp_func((a),(int (*) \
-               (const char * const *, const char * const *))(b)))
-       #define sk_DIST_POINT_dup(a) sk_dup(a)
-       #define sk_DIST_POINT_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
-       #define sk_DIST_POINT_shift(a) ((DIST_POINT *)sk_shift(a))
-       #define sk_DIST_POINT_pop(a) ((DIST_POINT *)sk_pop(a))
-       #define sk_DIST_POINT_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
 DECLARE_ASN1_SET_OF(DIST_POINT)
 
 typedef struct AUTHORITY_KEYID_st {
@@ -344,37 +220,6 @@ typedef struct SXNET_ID_st {
 } SXNETID;
 
 DECLARE_STACK_OF(SXNETID)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
-       #define sk_SXNETID_new(a) sk_new((int (*) \
-               (const char * const *, const char * const *))(a))
-       #define sk_SXNETID_new_null() sk_new_null()
-       #define sk_SXNETID_free(a) sk_free(a)
-       #define sk_SXNETID_num(a) sk_num(a)
-       #define sk_SXNETID_value(a,b) ((SXNETID *) \
-               sk_value((a),(b)))
-       #define sk_SXNETID_set(a,b,c) ((SXNETID *) \
-               sk_set((a),(b),(char *)(c)))
-       #define sk_SXNETID_zero(a) sk_zero(a)
-       #define sk_SXNETID_push(a,b) sk_push((a),(char *)(b))
-       #define sk_SXNETID_unshift(a,b) sk_unshift((a),(b))
-       #define sk_SXNETID_find(a,b) sk_find((a), (char *)(b))
-       #define sk_SXNETID_delete(a,b) ((SXNETID *) \
-               sk_delete((a),(b)))
-       #define sk_SXNETID_delete_ptr(a,b) ((SXNETID *) \
-               sk_delete_ptr((a),(char *)(b)))
-       #define sk_SXNETID_insert(a,b,c) sk_insert((a),(char *)(b),(c))
-       #define sk_SXNETID_set_cmp_func(a,b) ((int (*) \
-               (const SXNETID * const *,const SXNETID * const *)) \
-               sk_set_cmp_func((a),(int (*) \
-               (const char * const *, const char * const *))(b)))
-       #define sk_SXNETID_dup(a) sk_dup(a)
-       #define sk_SXNETID_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
-       #define sk_SXNETID_shift(a) ((SXNETID *)sk_shift(a))
-       #define sk_SXNETID_pop(a) ((SXNETID *)sk_pop(a))
-       #define sk_SXNETID_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
 DECLARE_ASN1_SET_OF(SXNETID)
 
 typedef struct SXNET_st {
@@ -402,37 +247,6 @@ typedef struct POLICYQUALINFO_st {
 } POLICYQUALINFO;
 
 DECLARE_STACK_OF(POLICYQUALINFO)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
-       #define sk_POLICYQUALINFO_new(a) sk_new((int (*) \
-               (const char * const *, const char * const *))(a))
-       #define sk_POLICYQUALINFO_new_null() sk_new_null()
-       #define sk_POLICYQUALINFO_free(a) sk_free(a)
-       #define sk_POLICYQUALINFO_num(a) sk_num(a)
-       #define sk_POLICYQUALINFO_value(a,b) ((POLICYQUALINFO *) \
-               sk_value((a),(b)))
-       #define sk_POLICYQUALINFO_set(a,b,c) ((POLICYQUALINFO *) \
-               sk_set((a),(b),(char *)(c)))
-       #define sk_POLICYQUALINFO_zero(a) sk_zero(a)
-       #define sk_POLICYQUALINFO_push(a,b) sk_push((a),(char *)(b))
-       #define sk_POLICYQUALINFO_unshift(a,b) sk_unshift((a),(b))
-       #define sk_POLICYQUALINFO_find(a,b) sk_find((a), (char *)(b))
-       #define sk_POLICYQUALINFO_delete(a,b) ((POLICYQUALINFO *) \
-               sk_delete((a),(b)))
-       #define sk_POLICYQUALINFO_delete_ptr(a,b) ((POLICYQUALINFO *) \
-               sk_delete_ptr((a),(char *)(b)))
-       #define sk_POLICYQUALINFO_insert(a,b,c) sk_insert((a),(char *)(b),(c))
-       #define sk_POLICYQUALINFO_set_cmp_func(a,b) ((int (*) \
-               (const POLICYQUALINFO * const *,const POLICYQUALINFO * const *)) \
-               sk_set_cmp_func((a),(int (*) \
-               (const char * const *, const char * const *))(b)))
-       #define sk_POLICYQUALINFO_dup(a) sk_dup(a)
-       #define sk_POLICYQUALINFO_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
-       #define sk_POLICYQUALINFO_shift(a) ((POLICYQUALINFO *)sk_shift(a))
-       #define sk_POLICYQUALINFO_pop(a) ((POLICYQUALINFO *)sk_pop(a))
-       #define sk_POLICYQUALINFO_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
 DECLARE_ASN1_SET_OF(POLICYQUALINFO)
 
 typedef struct POLICYINFO_st {
@@ -441,37 +255,6 @@ typedef struct POLICYINFO_st {
 } POLICYINFO;
 
 DECLARE_STACK_OF(POLICYINFO)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
-       #define sk_POLICYINFO_new(a) sk_new((int (*) \
-               (const char * const *, const char * const *))(a))
-       #define sk_POLICYINFO_new_null() sk_new_null()
-       #define sk_POLICYINFO_free(a) sk_free(a)
-       #define sk_POLICYINFO_num(a) sk_num(a)
-       #define sk_POLICYINFO_value(a,b) ((POLICYINFO *) \
-               sk_value((a),(b)))
-       #define sk_POLICYINFO_set(a,b,c) ((POLICYINFO *) \
-               sk_set((a),(b),(char *)(c)))
-       #define sk_POLICYINFO_zero(a) sk_zero(a)
-       #define sk_POLICYINFO_push(a,b) sk_push((a),(char *)(b))
-       #define sk_POLICYINFO_unshift(a,b) sk_unshift((a),(b))
-       #define sk_POLICYINFO_find(a,b) sk_find((a), (char *)(b))
-       #define sk_POLICYINFO_delete(a,b) ((POLICYINFO *) \
-               sk_delete((a),(b)))
-       #define sk_POLICYINFO_delete_ptr(a,b) ((POLICYINFO *) \
-               sk_delete_ptr((a),(char *)(b)))
-       #define sk_POLICYINFO_insert(a,b,c) sk_insert((a),(char *)(b),(c))
-       #define sk_POLICYINFO_set_cmp_func(a,b) ((int (*) \
-               (const POLICYINFO * const *,const POLICYINFO * const *)) \
-               sk_set_cmp_func((a),(int (*) \
-               (const char * const *, const char * const *))(b)))
-       #define sk_POLICYINFO_dup(a) sk_dup(a)
-       #define sk_POLICYINFO_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
-       #define sk_POLICYINFO_shift(a) ((POLICYINFO *)sk_shift(a))
-       #define sk_POLICYINFO_pop(a) ((POLICYINFO *)sk_pop(a))
-       #define sk_POLICYINFO_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
 DECLARE_ASN1_SET_OF(POLICYINFO)
 
 #define X509V3_conf_err(val) ERR_add_error_data(6, "section:", val->section, \
@@ -570,37 +353,6 @@ typedef struct x509_purpose_st {
 #define X509_PURPOSE_MAX               7
 
 DECLARE_STACK_OF(X509_PURPOSE)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
-       #define sk_X509_PURPOSE_new(a) sk_new((int (*) \
-               (const char * const *, const char * const *))(a))
-       #define sk_X509_PURPOSE_new_null() sk_new_null()
-       #define sk_X509_PURPOSE_free(a) sk_free(a)
-       #define sk_X509_PURPOSE_num(a) sk_num(a)
-       #define sk_X509_PURPOSE_value(a,b) ((X509_PURPOSE *) \
-               sk_value((a),(b)))
-       #define sk_X509_PURPOSE_set(a,b,c) ((X509_PURPOSE *) \
-               sk_set((a),(b),(char *)(c)))
-       #define sk_X509_PURPOSE_zero(a) sk_zero(a)
-       #define sk_X509_PURPOSE_push(a,b) sk_push((a),(char *)(b))
-       #define sk_X509_PURPOSE_unshift(a,b) sk_unshift((a),(b))
-       #define sk_X509_PURPOSE_find(a,b) sk_find((a), (char *)(b))
-       #define sk_X509_PURPOSE_delete(a,b) ((X509_PURPOSE *) \
-               sk_delete((a),(b)))
-       #define sk_X509_PURPOSE_delete_ptr(a,b) ((X509_PURPOSE *) \
-               sk_delete_ptr((a),(char *)(b)))
-       #define sk_X509_PURPOSE_insert(a,b,c) sk_insert((a),(char *)(b),(c))
-       #define sk_X509_PURPOSE_set_cmp_func(a,b) ((int (*) \
-               (const X509_PURPOSE * const *,const X509_PURPOSE * const *)) \
-               sk_set_cmp_func((a),(int (*) \
-               (const char * const *, const char * const *))(b)))
-       #define sk_X509_PURPOSE_dup(a) sk_dup(a)
-       #define sk_X509_PURPOSE_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
-       #define sk_X509_PURPOSE_shift(a) ((X509_PURPOSE *)sk_shift(a))
-       #define sk_X509_PURPOSE_pop(a) ((X509_PURPOSE *)sk_pop(a))
-       #define sk_X509_PURPOSE_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
 
 void ERR_load_X509V3_strings(void);
 int i2d_BASIC_CONSTRAINTS(BASIC_CONSTRAINTS *a, unsigned char **pp);
index 7c60bb7..f41a17e 100644 (file)
--- a/ssl/ssl.h
+++ b/ssl/ssl.h
@@ -192,37 +192,6 @@ typedef struct ssl_cipher_st
        } SSL_CIPHER;
 
 DECLARE_STACK_OF(SSL_CIPHER)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
-       #define sk_SSL_CIPHER_new(a) sk_new((int (*) \
-               (const char * const *, const char * const *))(a))
-       #define sk_SSL_CIPHER_new_null() sk_new_null()
-       #define sk_SSL_CIPHER_free(a) sk_free(a)
-       #define sk_SSL_CIPHER_num(a) sk_num(a)
-       #define sk_SSL_CIPHER_value(a,b) ((SSL_CIPHER *) \
-               sk_value((a),(b)))
-       #define sk_SSL_CIPHER_set(a,b,c) ((SSL_CIPHER *) \
-               sk_set((a),(b),(char *)(c)))
-       #define sk_SSL_CIPHER_zero(a) sk_zero(a)
-       #define sk_SSL_CIPHER_push(a,b) sk_push((a),(char *)(b))
-       #define sk_SSL_CIPHER_unshift(a,b) sk_unshift((a),(b))
-       #define sk_SSL_CIPHER_find(a,b) sk_find((a), (char *)(b))
-       #define sk_SSL_CIPHER_delete(a,b) ((SSL_CIPHER *) \
-               sk_delete((a),(b)))
-       #define sk_SSL_CIPHER_delete_ptr(a,b) ((SSL_CIPHER *) \
-               sk_delete_ptr((a),(char *)(b)))
-       #define sk_SSL_CIPHER_insert(a,b,c) sk_insert((a),(char *)(b),(c))
-       #define sk_SSL_CIPHER_set_cmp_func(a,b) ((int (*) \
-               (const SSL_CIPHER * const *,const SSL_CIPHER * const *)) \
-               sk_set_cmp_func((a),(int (*) \
-               (const char * const *, const char * const *))(b)))
-       #define sk_SSL_CIPHER_dup(a) sk_dup(a)
-       #define sk_SSL_CIPHER_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
-       #define sk_SSL_CIPHER_shift(a) ((SSL_CIPHER *)sk_shift(a))
-       #define sk_SSL_CIPHER_pop(a) ((SSL_CIPHER *)sk_pop(a))
-       #define sk_SSL_CIPHER_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
 
 typedef struct ssl_st SSL;
 typedef struct ssl_ctx_st SSL_CTX;
@@ -402,37 +371,6 @@ typedef struct ssl_comp_st
 } SSL_COMP;
 
 DECLARE_STACK_OF(SSL_COMP)
-/* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
-       #define sk_SSL_COMP_new(a) sk_new((int (*) \
-               (const char * const *, const char * const *))(a))
-       #define sk_SSL_COMP_new_null() sk_new_null()
-       #define sk_SSL_COMP_free(a) sk_free(a)
-       #define sk_SSL_COMP_num(a) sk_num(a)
-       #define sk_SSL_COMP_value(a,b) ((SSL_COMP *) \
-               sk_value((a),(b)))
-       #define sk_SSL_COMP_set(a,b,c) ((SSL_COMP *) \
-               sk_set((a),(b),(char *)(c)))
-       #define sk_SSL_COMP_zero(a) sk_zero(a)
-       #define sk_SSL_COMP_push(a,b) sk_push((a),(char *)(b))
-       #define sk_SSL_COMP_unshift(a,b) sk_unshift((a),(b))
-       #define sk_SSL_COMP_find(a,b) sk_find((a), (char *)(b))
-       #define sk_SSL_COMP_delete(a,b) ((SSL_COMP *) \
-               sk_delete((a),(b)))
-       #define sk_SSL_COMP_delete_ptr(a,b) ((SSL_COMP *) \
-               sk_delete_ptr((a),(char *)(b)))
-       #define sk_SSL_COMP_insert(a,b,c) sk_insert((a),(char *)(b),(c))
-       #define sk_SSL_COMP_set_cmp_func(a,b) ((int (*) \
-               (const SSL_COMP * const *,const SSL_COMP * const *)) \
-               sk_set_cmp_func((a),(int (*) \
-               (const char * const *, const char * const *))(b)))
-       #define sk_SSL_COMP_dup(a) sk_dup(a)
-       #define sk_SSL_COMP_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
-       #define sk_SSL_COMP_shift(a) ((SSL_COMP *)sk_shift(a))
-       #define sk_SSL_COMP_pop(a) ((SSL_COMP *)sk_pop(a))
-       #define sk_SSL_COMP_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
-/* End of perl script block, you may now edit :-) */
 
 struct ssl_ctx_st
        {
index 30f1722..6cdab47 100755 (executable)
@@ -42,71 +42,65 @@ foreach $file (@source) {
 
        # Open the .c/.h file for reading
        open(IN, "< $file") || die "Can't open $file for reading: $!";
-       open(OUT, "> $file.tmp") || die "Can't open $file.tmp for writing: $!";
 
-       select(OUT);
-       process_the_file();
-
-       close(OUT);
+       while(<IN>) {
+               if (/^DECLARE_STACK_OF\(([^)]+)\)/) {
+                       push @stacklst, $1;
+               }
+       }
        close(IN);
-
-       unlink($file);
-       rename("$file.tmp", $file);
+       write_defines("crypto/stack/safestack");
+       unlink("crypto/stack/safestack.h");
+       rename("crypto/stack/safestack.tmp","crypto/stack/safestack.h");
 }
 
-sub process_the_file {
+sub write_defines {
 
+       my $stackfile = $_[0];
        my $inside_block = 0;
-       my $output_defines = 0;
-
+       open IN, "< $stackfile.h" || die "Can't open input file";
+       open OUT, "> $stackfile.tmp" || die "Can't open output file";
        while(<IN>) {
-               if (/^DECLARE_STACK_OF\(([^)]+)\)/) {
-                       $type_thing = $1;
-                       $output_defines = 1;
-               }
                if (m|^/\* This block of defines is updated by a perl script, please do not touch! \*/|) {
                        $inside_block = 1;
                }
                if (m|^/\* End of perl script block, you may now edit :-\) \*/|) {
                        $inside_block = 0;
                } elsif ($inside_block == 0) {
-                       print;
+                       print OUT;
                }
-               if($output_defines == 1) {
-                       print <<EOF;
+               next if($inside_block != 1);
+               print OUT <<EOF;
 /* This block of defines is updated by a perl script, please do not touch! */
-#ifndef DEBUG_SAFESTACK
-       #define sk_${type_thing}_new(a) sk_new((int (*) \\
-               (const char * const *, const char * const *))(a))
-       #define sk_${type_thing}_new_null() sk_new_null()
-       #define sk_${type_thing}_free(a) sk_free(a)
-       #define sk_${type_thing}_num(a) sk_num(a)
-       #define sk_${type_thing}_value(a,b) ((${type_thing} *) \\
-               sk_value((a),(b)))
-       #define sk_${type_thing}_set(a,b,c) ((${type_thing} *) \\
-               sk_set((a),(b),(char *)(c)))
-       #define sk_${type_thing}_zero(a) sk_zero(a)
-       #define sk_${type_thing}_push(a,b) sk_push((a),(char *)(b))
-       #define sk_${type_thing}_unshift(a,b) sk_unshift((a),(b))
-       #define sk_${type_thing}_find(a,b) sk_find((a), (char *)(b))
-       #define sk_${type_thing}_delete(a,b) ((${type_thing} *) \\
-               sk_delete((a),(b)))
-       #define sk_${type_thing}_delete_ptr(a,b) ((${type_thing} *) \\
-               sk_delete_ptr((a),(char *)(b)))
-       #define sk_${type_thing}_insert(a,b,c) sk_insert((a),(char *)(b),(c))
-       #define sk_${type_thing}_set_cmp_func(a,b) ((int (*) \\
-               (const ${type_thing} * const *,const ${type_thing} * const *)) \\
-               sk_set_cmp_func((a),(int (*) \\
-               (const char * const *, const char * const *))(b)))
-       #define sk_${type_thing}_dup(a) sk_dup(a)
-       #define sk_${type_thing}_pop_free(a,b) sk_pop_free((a),(void (*)(void *))(b))
-       #define sk_${type_thing}_shift(a) ((${type_thing} *)sk_shift(a))
-       #define sk_${type_thing}_pop(a) ((${type_thing} *)sk_pop(a))
-       #define sk_${type_thing}_sort(a) sk_sort(a)
-#endif /* !DEBUG_SAFESTACK */
+EOF
+       foreach $type_thing (@stacklst) {
+print OUT <<EOF;
+       #define sk_${type_thing}_new(a) SKM_sk_new($type_thing, (a))
+       #define sk_${type_thing}_new_null() SKM_sk_new_null($type_thing)
+       #define sk_${type_thing}_free(a) SKM_sk_free($type_thing, (a))
+       #define sk_${type_thing}_num(a) SKM_sk_num($type_thing, (a))
+       #define sk_${type_thing}_value(a,b) SKM_sk_value($type_thing, (a), (b))
+       #define sk_${type_thing}_set(a,b,c) SKM_sk_set($type_thing, (a), (b), (c))
+       #define sk_${type_thing}_zero(a) SKM_sk_zero($type_thing, (a))
+       #define sk_${type_thing}_push(a,b) SKM_sk_push($type_thing, (a),(b))
+       #define sk_${type_thing}_unshift(a,b) SKM_sk_unshift($type_thing, (a),(b))
+       #define sk_${type_thing}_find(a,b) SKM_sk_find($type_thing, (a), (b))
+       #define sk_${type_thing}_delete(a,b) SKM_sk_delete($type_thing, (a),(b))
+       #define sk_${type_thing}_delete_ptr(a,b) SKM_sk_delete_ptr($type_thing, (a),(b))
+       #define sk_${type_thing}_insert(a,b,c) SKM_sk_insert($type_thing, (a),(b),(c))
+       #define sk_${type_thing}_set_cmp_func(a,b) SKM_sk_set_cmp_func($type_thing, (a),(b))
+       #define sk_${type_thing}_dup(a) SKM_sk_dup($type_thing, a)
+       #define sk_${type_thing}_pop_free(a,b) SKM_sk_pop_free($type_thing, (a),(b))
+       #define sk_${type_thing}_shift(a) SKM_sk_shift($type_thing, (a))
+       #define sk_${type_thing}_pop(a) SKM_sk_pop($type_thing, (a))
+       #define sk_${type_thing}_sort(a) SKM_sk_sort($type_thing, (a))
+
+EOF
+       }
+print OUT <<EOF;
 /* End of perl script block, you may now edit :-) */
 EOF
-                       $output_defines = 0;
-               }
+       $inside_block = 2;
        }
+       close OUT;
 }