diff -ur voms-1.7.19.orig/src/ac/validate.c voms-1.7.19/src/ac/validate.c --- voms-1.7.19.orig/src/ac/validate.c 2006-10-27 10:58:17.000000000 +0200 +++ voms-1.7.19/src/ac/validate.c 2007-07-05 12:59:07.000000000 +0200 @@ -17,6 +17,7 @@ #define _GNU_SOURCE +#include #include #include #include diff -ur voms-1.7.19.orig/src/api/ccapi/api_util.cc voms-1.7.19/src/api/ccapi/api_util.cc --- voms-1.7.19.orig/src/api/ccapi/api_util.cc 2007-02-15 09:52:22.000000000 +0100 +++ voms-1.7.19/src/api/ccapi/api_util.cc 2007-07-05 12:59:07.000000000 +0200 @@ -150,7 +150,11 @@ return false; } +#ifdef TYPEDEF_I2D_OF + *holder = (X509 *)ASN1_dup((i2d_of_void*)i2d_X509,(d2i_of_void*)d2i_X509, (char *)h); +#else *holder = (X509 *)ASN1_dup((int (*)())i2d_X509,(char * (*)())d2i_X509, (char *)h); +#endif if (!*holder) { seterror(VERR_MEM, "Cannot find enough memory to work!"); return false; @@ -308,8 +312,13 @@ AC_free(tmp); if (result) +#ifdef TYPEDEF_I2D_OF + v.holder = (X509 *)ASN1_dup((i2d_of_void*)i2d_X509, + (d2i_of_void*)d2i_X509, (char *)holder); +#else v.holder = (X509 *)ASN1_dup((int (*) ())i2d_X509, (char * (*)())d2i_X509, (char *)holder); +#endif return result; } @@ -343,8 +352,13 @@ return false; } else { +#ifdef TYPEDEF_I2D_OF + ((struct realdata *)v.realdata)->ac = (AC *)ASN1_dup((i2d_of_void*)i2d_AC, + (d2i_of_void*)d2i_AC, +#else ((struct realdata *)v.realdata)->ac = (AC *)ASN1_dup((int (*) ())i2d_AC, (char * (*) ())d2i_AC, +#endif (char *)ac); } @@ -364,8 +378,13 @@ X509_free(issuer); if (result) +#ifdef TYPEDEF_I2D_OF + v.holder = (X509 *)ASN1_dup((i2d_of_void*)i2d_X509, + (d2i_of_void*)d2i_X509, (char *)holder); +#else v.holder = (X509 *)ASN1_dup((int (*) ())i2d_X509, (char * (*)())d2i_X509, (char *)holder); +#endif return result; } @@ -380,7 +399,11 @@ AC *ac = (AC *)data; +#ifdef TYPEDEF_I2D_OF + int res = ASN1_verify((i2d_of_void*)i2d_AC_INFO, ac->sig_alg, ac->signature, +#else int res = ASN1_verify((int (*)())i2d_AC_INFO, ac->sig_alg, ac->signature, +#endif (char *)ac->acinfo, key); if (!res) @@ -676,7 +699,11 @@ among those specific for the vo or else in the vomsdir directory */ +#ifdef TYPEDEF_I2D_OF + X509 *cert = (X509 *)ASN1_dup((i2d_of_void*)i2d_X509, (d2i_of_void*)d2i_X509, (char *)sk_X509_value(certstack, 0)); +#else X509 *cert = (X509 *)ASN1_dup((int (*)())i2d_X509, (char * (*)())d2i_X509, (char *)sk_X509_value(certstack, 0)); +#endif bool found = false; diff -ur voms-1.7.19.orig/src/api/ccapi/cinterface.cc voms-1.7.19/src/api/ccapi/cinterface.cc --- voms-1.7.19.orig/src/api/ccapi/cinterface.cc 2007-03-14 10:47:37.000000000 +0100 +++ voms-1.7.19/src/api/ccapi/cinterface.cc 2007-07-05 12:59:07.000000000 +0200 @@ -277,9 +277,15 @@ dst->serial = mystrdup(serial); dst->datalen = custom.size(); +#ifdef TYPEDEF_I2D_OF + dst->ac = (AC *) ASN1_dup((i2d_of_void*)i2d_AC, (d2i_of_void*)d2i_AC, + (char *)(((struct realdata *)realdata)->ac)); + dst->holder = (X509 *)ASN1_dup((i2d_of_void*)i2d_X509, (d2i_of_void*)d2i_X509, (char *)holder); +#else dst->ac = (AC *) ASN1_dup((int(*)())i2d_AC, (char*(*)())d2i_AC, (char *)(((struct realdata *)realdata)->ac)); dst->holder = (X509 *)ASN1_dup((int(*)())i2d_X509, (char*(*)())d2i_X509, (char *)holder); +#endif if (!dst->holder || !dst->ac) throw 3; @@ -727,8 +733,13 @@ dst->serial = mystrdup(org->serial); dst->datalen = org->datalen; +#ifdef TYPEDEF_I2D_OF + dst->ac = (AC *) ASN1_dup((i2d_of_void*)i2d_AC, (d2i_of_void*)d2i_AC, (char *)org->ac); + dst->holder = (X509 *)ASN1_dup((i2d_of_void*)i2d_X509, (d2i_of_void*)d2i_X509, (char *)org->holder); +#else dst->ac = (AC *) ASN1_dup((int(*)())i2d_AC, (char*(*)())d2i_AC, (char *)org->ac); dst->holder = (X509 *)ASN1_dup((int(*)())i2d_X509, (char*(*)())d2i_X509, (char *)org->holder); +#endif if (!dst->holder || !dst->ac) throw 3; @@ -851,7 +862,11 @@ AC *VOMS_GetAC(vomsr *v) { +#ifdef TYPEDEF_I2D_OF + return (AC *)ASN1_dup((i2d_of_void*)i2d_AC, (d2i_of_void*)d2i_AC, (char *)v->ac); +#else return (AC *)ASN1_dup((int (*)())i2d_AC, (char * (*)())d2i_AC, (char *)v->ac); +#endif } } diff -ur voms-1.7.19.orig/src/api/ccapi/voms_api.cc voms-1.7.19/src/api/ccapi/voms_api.cc --- voms-1.7.19.orig/src/api/ccapi/voms_api.cc 2007-06-19 19:16:31.000000000 +0200 +++ voms-1.7.19/src/api/ccapi/voms_api.cc 2007-07-05 12:59:07.000000000 +0200 @@ -498,7 +498,11 @@ char *buf = NULL; std::string subject, ca; +#if OPENSSL_VERSION_NUMBER >= 0x00908000L + const unsigned char *buftmp, *copy; +#else unsigned char *buftmp, *copy; +#endif char *str; int len; @@ -849,11 +853,21 @@ fqan = orig.fqan; serial = orig.serial; realdata = calloc(1, sizeof(struct realdata)); +#ifdef TYPEDEF_I2D_OF + ((struct realdata *)realdata)->ac = (AC *)ASN1_dup((i2d_of_void*)i2d_AC, + (d2i_of_void*)d2i_AC, +#else ((struct realdata *)realdata)->ac = (AC *)ASN1_dup((int (*)())i2d_AC, (char * (*)())d2i_AC, +#endif (char *)((struct realdata *)orig.realdata)->ac); +#ifdef TYPEDEF_I2D_OF + holder = (X509 *)ASN1_dup((i2d_of_void*)i2d_X509, + (d2i_of_void*)d2i_X509, +#else holder = (X509 *)ASN1_dup((int (*)())i2d_X509, (char * (*)())d2i_X509, +#endif (char *)orig.holder); @@ -890,10 +904,19 @@ serial = orig.serial; if (((struct realdata *)realdata)->ac) AC_free(((struct realdata *)realdata)->ac); +#ifdef TYPEDEF_I2D_OF + ((struct realdata *)realdata)->ac = (AC *)ASN1_dup((i2d_of_void*)i2d_AC, + (d2i_of_void*)d2i_AC, +#else ((struct realdata *)realdata)->ac = (AC *)ASN1_dup((int (*)())i2d_AC, (char * (*)())d2i_AC, +#endif (char *)((struct realdata *)orig.realdata)->ac); +#ifdef TYPEDEF_I2D_OF + holder = (X509 *)ASN1_dup((i2d_of_void*)i2d_X509, (d2i_of_void*)d2i_X509, (char *)orig.holder); +#else holder = (X509 *)ASN1_dup((int (*)())i2d_X509, (char * (*)())d2i_X509, (char *)orig.holder); +#endif delete ((struct realdata *)realdata)->attributes; ((struct realdata *)realdata)->attributes = new std::vector(*(((struct realdata *)orig.realdata)->attributes)); @@ -910,8 +933,13 @@ AC *voms::GetAC() { +#ifdef TYPEDEF_I2D_OF + return (AC *)ASN1_dup((i2d_of_void*)i2d_AC, + (d2i_of_void*)d2i_AC, +#else return (AC *)ASN1_dup((int (*)())i2d_AC, (char * (*)())d2i_AC, +#endif (char *)((struct realdata *)realdata)->ac); }