Changes between 0.9.5a and 0.9.6 [xx XXX 2000]
+ *) Eliminate non-ANSI declarations in crypto.h and stack.h.
+ [Ulf Möller]
+
*) Fix for SSL server purpose checking. Server checking was
rejecting certificates which had extended key usage present
but no ssl client purpose.
BIO_free(out);
BIO_free(in);
- sk_pop_free(cert_sk,X509_free);
+ sk_pop_free(cert_sk, (void(*)(void *)) X509_free);
if (ret) ERR_print_errors(bio_err);
app_RAND_write_file(randfile, bio_err);
/* Turn certbags into encrypted authsafe */
authsafe = PKCS12_pack_p7encdata(cert_pbe, cpass, -1, NULL, 0,
iter, bags);
- sk_pop_free(bags, PKCS12_SAFEBAG_free);
+ sk_pop_free(bags, (void(*)(void *)) PKCS12_SAFEBAG_free);
if (!authsafe) {
ERR_print_errors (bio_err);
sk_push (bags, (char *)bag);
/* Turn it into unencrypted safe bag */
authsafe = PKCS12_pack_p7data (bags);
- sk_pop_free(bags, PKCS12_SAFEBAG_free);
+ sk_pop_free(bags, (void(*)(void *)) PKCS12_SAFEBAG_free);
sk_push (safes, (char *)authsafe);
p12 = PKCS12_init (NID_pkcs7_data);
M_PKCS12_pack_authsafes (p12, safes);
- sk_pop_free(safes, PKCS7_free);
+ sk_pop_free(safes, (void(*)(void *)) PKCS7_free);
PKCS12_set_mac (p12, mpass, -1, NULL, 0, maciter, NULL);
if (!bags) return 0;
if (!dump_certs_pkeys_bags (out, bags, pass, passlen,
options, pempass)) {
- sk_pop_free (bags, PKCS12_SAFEBAG_free);
+ sk_pop_free (bags, (void(*)(void *)) PKCS12_SAFEBAG_free);
return 0;
}
- sk_pop_free (bags, PKCS12_SAFEBAG_free);
+ sk_pop_free (bags, (void(*)(void *)) PKCS12_SAFEBAG_free);
}
- sk_pop_free (asafes, PKCS7_free);
+ sk_pop_free (asafes, (void(*)(void *)) PKCS7_free);
return 1;
}
#include <openssl/bio.h>
#include <openssl/evp.h>
-static int buffer_write(BIO *h,char *buf,int num);
-static int buffer_read(BIO *h,char *buf,int size);
-static int buffer_puts(BIO *h,char *str);
-static int buffer_gets(BIO *h,char *str,int size);
-static long buffer_ctrl(BIO *h,int cmd,long arg1,char *arg2);
+static int buffer_write(BIO *h, const char *buf,int num);
+static int buffer_read(BIO *h, char *buf, int size);
+static int buffer_puts(BIO *h, const char *str);
+static int buffer_gets(BIO *h, char *str, int size);
+static long buffer_ctrl(BIO *h, int cmd, long arg1, void *arg2);
static int buffer_new(BIO *h);
static int buffer_free(BIO *data);
-static long buffer_callback_ctrl(BIO *h,int cmd, void (*fp)());
+static long buffer_callback_ctrl(BIO *h, int cmd, void (*fp)());
#define DEFAULT_BUFFER_SIZE 1024
static BIO_METHOD methods_buffer=
goto start;
}
-static int buffer_write(BIO *b, char *in, int inl)
+static int buffer_write(BIO *b, const char *in, int inl)
{
int i,num=0;
BIO_F_BUFFER_CTX *ctx;
goto start;
}
-static long buffer_ctrl(BIO *b, int cmd, long num, char *ptr)
+static long buffer_ctrl(BIO *b, int cmd, long num, void *ptr)
{
BIO *dbio;
BIO_F_BUFFER_CTX *ctx;
}
}
-static int buffer_puts(BIO *b, char *str)
+static int buffer_puts(BIO *b, const char *str)
{
return(BIO_write(b,str,strlen(str)));
}
/* BIO_put and BIO_get both add to the digest,
* BIO_gets returns the digest */
-static int nbiof_write(BIO *h,char *buf,int num);
+static int nbiof_write(BIO *h,const char *buf,int num);
static int nbiof_read(BIO *h,char *buf,int size);
-static int nbiof_puts(BIO *h,char *str);
+static int nbiof_puts(BIO *h,const char *str);
static int nbiof_gets(BIO *h,char *str,int size);
-static long nbiof_ctrl(BIO *h,int cmd,long arg1,char *arg2);
+static long nbiof_ctrl(BIO *h,int cmd,long arg1,void *arg2);
static int nbiof_new(BIO *h);
static int nbiof_free(BIO *data);
static long nbiof_callback_ctrl(BIO *h,int cmd,void (*fp)());
return(ret);
}
-static int nbiof_write(BIO *b, char *in, int inl)
+static int nbiof_write(BIO *b, const char *in, int inl)
{
NBIO_TEST *nt;
int ret=0;
return(ret);
}
-static long nbiof_ctrl(BIO *b, int cmd, long num, char *ptr)
+static long nbiof_ctrl(BIO *b, int cmd, long num, void *ptr)
{
long ret;
}
-static int nbiof_puts(BIO *bp, char *str)
+static int nbiof_puts(BIO *bp, const char *str)
{
if (bp->next_bio == NULL) return(0);
return(BIO_puts(bp->next_bio,str));
/* BIO_put and BIO_get both add to the digest,
* BIO_gets returns the digest */
-static int nullf_write(BIO *h,char *buf,int num);
-static int nullf_read(BIO *h,char *buf,int size);
-static int nullf_puts(BIO *h,char *str);
-static int nullf_gets(BIO *h,char *str,int size);
-static long nullf_ctrl(BIO *h,int cmd,long arg1,char *arg2);
+static int nullf_write(BIO *h, const char *buf, int num);
+static int nullf_read(BIO *h, char *buf, int size);
+static int nullf_puts(BIO *h, const char *str);
+static int nullf_gets(BIO *h, char *str, int size);
+static long nullf_ctrl(BIO *h, int cmd, long arg1, void *arg2);
static int nullf_new(BIO *h);
static int nullf_free(BIO *data);
-static long nullf_callback_ctrl(BIO *h,int cmd,void (*fp)());
+static long nullf_callback_ctrl(BIO *h, int cmd, void (*fp)());
static BIO_METHOD methods_nullf=
{
BIO_TYPE_NULL_FILTER,
return(ret);
}
-static int nullf_write(BIO *b, char *in, int inl)
+static int nullf_write(BIO *b, const char *in, int inl)
{
int ret=0;
return(ret);
}
-static long nullf_ctrl(BIO *b, int cmd, long num, char *ptr)
+static long nullf_ctrl(BIO *b, int cmd, long num, void *ptr)
{
long ret;
}
-static int nullf_puts(BIO *bp, char *str)
+static int nullf_puts(BIO *bp, const char *str)
{
if (bp->next_bio == NULL) return(0);
return(BIO_puts(bp->next_bio,str));
#define BIO_method_name(b) ((b)->method->name)
#define BIO_method_type(b) ((b)->method->type)
+typedef struct bio_st BIO;
+
#ifndef WIN16
typedef struct bio_method_st
{
int type;
const char *name;
- int (*bwrite)();
- int (*bread)();
- int (*bputs)();
- int (*bgets)();
- long (*ctrl)();
- int (*create)();
- int (*destroy)();
- long (*callback_ctrl)();
+ int (*bwrite)(BIO *, const char *, int);
+ int (*bread)(BIO *, char *, int);
+ int (*bputs)(BIO *, const char *);
+ int (*bgets)(BIO *, char *, int);
+ long (*ctrl)(BIO *, int, long, void *);
+ int (*create)(BIO *);
+ int (*destroy)(BIO *);
+ long (*callback_ctrl)(BIO *, int, void (*)(struct bio_st *, int, const char *, int, long, long));
} BIO_METHOD;
#else
typedef struct bio_method_st
} BIO_METHOD;
#endif
-typedef struct bio_st
+struct bio_st
{
BIO_METHOD *method;
/* bio, mode, argp, argi, argl, ret */
unsigned long num_write;
CRYPTO_EX_DATA ex_data;
- } BIO;
+ };
typedef struct bio_f_buffer_ctx_struct
{
int BIO_write(BIO *b, const void *data, int len);
int BIO_puts(BIO *bp,const char *buf);
long BIO_ctrl(BIO *bp,int cmd,long larg,void *parg);
-long BIO_callback_ctrl(BIO *bp,int cmd,void (*fp)());
+long BIO_callback_ctrl(BIO *b, int cmd, void (*fp)(struct bio_st *, int, const char *, int, long, long));
char * BIO_ptr_ctrl(BIO *bp,int cmd,long larg);
long BIO_int_ctrl(BIO *bp,int cmd,long larg,int iarg);
BIO * BIO_push(BIO *b,BIO *append);
return(ret);
}
-long BIO_callback_ctrl(BIO *b, int cmd, void (*fp)())
+long BIO_callback_ctrl(BIO *b, int cmd, void (*fp)(struct bio_st *, int, const char *, int, long, long))
{
long ret;
long (*cb)();
BIO *bio_chain;
} BIO_ACCEPT;
-static int acpt_write(BIO *h,char *buf,int num);
-static int acpt_read(BIO *h,char *buf,int size);
-static int acpt_puts(BIO *h,char *str);
-static long acpt_ctrl(BIO *h,int cmd,long arg1,char *arg2);
+static int acpt_write(BIO *h, const char *buf, int num);
+static int acpt_read(BIO *h, char *buf, int size);
+static int acpt_puts(BIO *h, const char *str);
+static long acpt_ctrl(BIO *h, int cmd, long arg1, void *arg2);
static int acpt_new(BIO *h);
static int acpt_free(BIO *data);
static int acpt_state(BIO *b, BIO_ACCEPT *c);
return(ret);
}
-static int acpt_write(BIO *b, char *in, int inl)
+static int acpt_write(BIO *b, const char *in, int inl)
{
int ret;
BIO_ACCEPT *data;
return(ret);
}
-static long acpt_ctrl(BIO *b, int cmd, long num, char *ptr)
+static long acpt_ctrl(BIO *b, int cmd, long num, void *ptr)
{
BIO *dbio;
int *ip;
return(ret);
}
-static int acpt_puts(BIO *bp, char *str)
+static int acpt_puts(BIO *bp, const char *str)
{
int n,ret;
static int bio_new(BIO *bio);
static int bio_free(BIO *bio);
static int bio_read(BIO *bio, char *buf, int size);
-static int bio_write(BIO *bio, char *buf, int num);
+static int bio_write(BIO *bio, const char *buf, int num);
static long bio_ctrl(BIO *bio, int cmd, long num, void *ptr);
-static int bio_puts(BIO *bio, char *str);
+static int bio_puts(BIO *bio, const char *str);
static int bio_make_pair(BIO *bio1, BIO *bio2);
static void bio_destroy_pair(BIO *bio);
}
-static int bio_write(BIO *bio, char *buf, int num_)
+static int bio_write(BIO *bio, const char *buf, int num_)
{
size_t num = num_;
size_t rest;
return ret;
}
-static int bio_puts(BIO *bio, char *str)
+static int bio_puts(BIO *bio, const char *str)
{
return bio_write(bio, str, strlen(str));
}
int (*info_callback)();
} BIO_CONNECT;
-static int conn_write(BIO *h,char *buf,int num);
-static int conn_read(BIO *h,char *buf,int size);
-static int conn_puts(BIO *h,char *str);
-static long conn_ctrl(BIO *h,int cmd,long arg1,char *arg2);
+static int conn_write(BIO *h, const char *buf, int num);
+static int conn_read(BIO *h, char *buf, int size);
+static int conn_puts(BIO *h, const char *str);
+static long conn_ctrl(BIO *h, int cmd, long arg1, void *arg2);
static int conn_new(BIO *h);
static int conn_free(BIO *data);
-static long conn_callback_ctrl(BIO *h,int cmd,void *(*fp)());
+static long conn_callback_ctrl(BIO *h, int cmd, void (*fp)());
static int conn_state(BIO *b, BIO_CONNECT *c);
static void conn_close_socket(BIO *data);
return(ret);
}
-static int conn_write(BIO *b, char *in, int inl)
+static int conn_write(BIO *b, const char *in, int inl)
{
int ret;
BIO_CONNECT *data;
return(ret);
}
-static long conn_ctrl(BIO *b, int cmd, long num, char *ptr)
+static long conn_ctrl(BIO *b, int cmd, long num, void *ptr)
{
BIO *dbio;
int *ip;
else if (num == 2)
{
char buf[16];
+ char *p = ptr;
sprintf(buf,"%d.%d.%d.%d",
- ptr[0],ptr[1],ptr[2],ptr[3]);
+ p[0],p[1],p[2],p[3]);
if (data->param_hostname != NULL)
Free(data->param_hostname);
data->param_hostname=BUF_strdup(buf);
return(ret);
}
-static long conn_callback_ctrl(BIO *b, int cmd, void *(*fp)())
+static long conn_callback_ctrl(BIO *b, int cmd, void (*fp)())
{
long ret=1;
BIO_CONNECT *data;
return(ret);
}
-static int conn_puts(BIO *bp, char *str)
+static int conn_puts(BIO *bp, const char *str)
{
int n,ret;
#if !defined(NO_STDIO)
-static int MS_CALLBACK file_write(BIO *h,char *buf,int num);
-static int MS_CALLBACK file_read(BIO *h,char *buf,int size);
-static int MS_CALLBACK file_puts(BIO *h,char *str);
-static int MS_CALLBACK file_gets(BIO *h,char *str,int size);
-static long MS_CALLBACK file_ctrl(BIO *h,int cmd,long arg1,char *arg2);
+static int MS_CALLBACK file_write(BIO *h, const char *buf, int num);
+static int MS_CALLBACK file_read(BIO *h, char *buf, int size);
+static int MS_CALLBACK file_puts(BIO *h, const char *str);
+static int MS_CALLBACK file_gets(BIO *h, char *str, int size);
+static long MS_CALLBACK file_ctrl(BIO *h, int cmd, long arg1, void *arg2);
static int MS_CALLBACK file_new(BIO *h);
static int MS_CALLBACK file_free(BIO *data);
static BIO_METHOD methods_filep=
return(ret);
}
-static int MS_CALLBACK file_write(BIO *b, char *in, int inl)
+static int MS_CALLBACK file_write(BIO *b, const char *in, int inl)
{
int ret=0;
return(ret);
}
-static long MS_CALLBACK file_ctrl(BIO *b, int cmd, long num, char *ptr)
+static long MS_CALLBACK file_ctrl(BIO *b, int cmd, long num, void *ptr)
{
long ret=1;
FILE *fp=(FILE *)b->ptr;
return(ret);
}
-static int MS_CALLBACK file_puts(BIO *bp, char *str)
+static int MS_CALLBACK file_puts(BIO *bp, const char *str)
{
int n,ret;
#define LOG_DAEMON OPC$M_NM_NTWORK
#endif
-static int MS_CALLBACK slg_write(BIO *h,char *buf,int num);
-static int MS_CALLBACK slg_puts(BIO *h,char *str);
-static long MS_CALLBACK slg_ctrl(BIO *h,int cmd,long arg1,char *arg2);
+static int MS_CALLBACK slg_write(BIO *h, const char *buf, int num);
+static int MS_CALLBACK slg_puts(BIO *h, const char *str);
+static long MS_CALLBACK slg_ctrl(BIO *h, int cmd, long arg1, void *arg2);
static int MS_CALLBACK slg_new(BIO *h);
static int MS_CALLBACK slg_free(BIO *data);
static void xopenlog(BIO* bp, const char* name, int level);
return(1);
}
-static int MS_CALLBACK slg_write(BIO *b, char *in, int inl)
+static int MS_CALLBACK slg_write(BIO *b, const char *in, int inl)
{
int ret= inl;
- char* buf= in;
+ char* buf;
char* pp;
int priority;
return(ret);
}
-static long MS_CALLBACK slg_ctrl(BIO *b, int cmd, long num, char *ptr)
+static long MS_CALLBACK slg_ctrl(BIO *b, int cmd, long num, void *ptr)
{
switch (cmd)
{
return(0);
}
-static int MS_CALLBACK slg_puts(BIO *bp, char *str)
+static int MS_CALLBACK slg_puts(BIO *bp, const char *str)
{
int n,ret;
#include "cryptlib.h"
#include <openssl/bio.h>
-static int mem_write(BIO *h,char *buf,int num);
-static int mem_read(BIO *h,char *buf,int size);
-static int mem_puts(BIO *h,char *str);
-static int mem_gets(BIO *h,char *str,int size);
-static long mem_ctrl(BIO *h,int cmd,long arg1,char *arg2);
+static int mem_write(BIO *h, const char *buf, int num);
+static int mem_read(BIO *h, char *buf, int size);
+static int mem_puts(BIO *h, const char *str);
+static int mem_gets(BIO *h, char *str, int size);
+static long mem_ctrl(BIO *h, int cmd, long arg1, void *arg2);
static int mem_new(BIO *h);
static int mem_free(BIO *data);
static BIO_METHOD mem_method=
return(ret);
}
-static int mem_write(BIO *b, char *in, int inl)
+static int mem_write(BIO *b, const char *in, int inl)
{
int ret= -1;
int blen;
return(ret);
}
-static long mem_ctrl(BIO *b, int cmd, long num, char *ptr)
+static long mem_ctrl(BIO *b, int cmd, long num, void *ptr)
{
long ret=1;
char **pptr;
return(ret);
}
-static int mem_puts(BIO *bp, char *str)
+static int mem_puts(BIO *bp, const char *str)
{
int n,ret;
#include "cryptlib.h"
#include <openssl/bio.h>
-static int null_write(BIO *h,char *buf,int num);
-static int null_read(BIO *h,char *buf,int size);
-static int null_puts(BIO *h,char *str);
-static int null_gets(BIO *h,char *str,int size);
-static long null_ctrl(BIO *h,int cmd,long arg1,char *arg2);
+static int null_write(BIO *h, const char *buf, int num);
+static int null_read(BIO *h, char *buf, int size);
+static int null_puts(BIO *h, const char *str);
+static int null_gets(BIO *h, char *str, int size);
+static long null_ctrl(BIO *h, int cmd, long arg1, void *arg2);
static int null_new(BIO *h);
static int null_free(BIO *data);
static BIO_METHOD null_method=
return(0);
}
-static int null_write(BIO *b, char *in, int inl)
+static int null_write(BIO *b, const char *in, int inl)
{
return(inl);
}
-static long null_ctrl(BIO *b, int cmd, long num, char *ptr)
+static long null_ctrl(BIO *b, int cmd, long num, void *ptr)
{
long ret=1;
return(0);
}
-static int null_puts(BIO *bp, char *str)
+static int null_puts(BIO *bp, const char *str)
{
if (str == NULL) return(0);
return(strlen(str));
#include <openssl/bio.h>
#ifndef BIO_FD
-static int sock_write(BIO *h,char *buf,int num);
-static int sock_read(BIO *h,char *buf,int size);
-static int sock_puts(BIO *h,char *str);
-static long sock_ctrl(BIO *h,int cmd,long arg1,char *arg2);
+static int sock_write(BIO *h, const char *buf, int num);
+static int sock_read(BIO *h, char *buf, int size);
+static int sock_puts(BIO *h, const char *str);
+static long sock_ctrl(BIO *h, int cmd, long arg1, void *arg2);
static int sock_new(BIO *h);
static int sock_free(BIO *data);
int BIO_sock_should_retry(int s);
#else
-static int fd_write(BIO *h,char *buf,int num);
-static int fd_read(BIO *h,char *buf,int size);
-static int fd_puts(BIO *h,char *str);
-static long fd_ctrl(BIO *h,int cmd,long arg1,char *arg2);
+static int fd_write(BIO *h, const char *buf, int num);
+static int fd_read(BIO *h, char *buf, int size);
+static int fd_puts(BIO *h, const char *str);
+static long fd_ctrl(BIO *h, int cmd, long arg1, void *arg2);
static int fd_new(BIO *h);
static int fd_free(BIO *data);
int BIO_fd_should_retry(int s);
}
#ifndef BIO_FD
-static int sock_write(BIO *b, char *in, int inl)
+static int sock_write(BIO *b, const char *in, int inl)
#else
-static int fd_write(BIO *b, char *in, int inl)
+static int fd_write(BIO *b, const char *in, int inl)
#endif
{
int ret;
}
#ifndef BIO_FD
-static long sock_ctrl(BIO *b, int cmd, long num, char *ptr)
+static long sock_ctrl(BIO *b, int cmd, long num, void *ptr)
#else
-static long fd_ctrl(BIO *b, int cmd, long num, char *ptr)
+static long fd_ctrl(BIO *b, int cmd, long num, void *ptr)
#endif
{
long ret=1;
#endif
#ifndef BIO_FD
-static int sock_puts(BIO *bp, char *str)
+static int sock_puts(BIO *bp, const char *str)
#else
-static int fd_puts(BIO *bp, char *str)
+static int fd_puts(BIO *bp, const char *str)
#endif
{
int n,ret;
#include <openssl/buffer.h>
#include <openssl/evp.h>
-static int b64_write(BIO *h,char *buf,int num);
-static int b64_read(BIO *h,char *buf,int size);
-/*static int b64_puts(BIO *h,char *str); */
-/*static int b64_gets(BIO *h,char *str,int size); */
-static long b64_ctrl(BIO *h,int cmd,long arg1,char *arg2);
+static int b64_write(BIO *h, const char *buf, int num);
+static int b64_read(BIO *h, char *buf, int size);
+/*static int b64_puts(BIO *h, const char *str); */
+/*static int b64_gets(BIO *h, char *str, int size); */
+static long b64_ctrl(BIO *h, int cmd, long arg1, void *arg2);
static int b64_new(BIO *h);
static int b64_free(BIO *data);
static long b64_callback_ctrl(BIO *h,int cmd,void (*fp)());
return((ret == 0)?ret_code:ret);
}
-static int b64_write(BIO *b, char *in, int inl)
+static int b64_write(BIO *b, const char *in, int inl)
{
int ret=inl,n,i;
BIO_B64_CTX *ctx;
return(ret);
}
-static long b64_ctrl(BIO *b, int cmd, long num, char *ptr)
+static long b64_ctrl(BIO *b, int cmd, long num, void *ptr)
{
BIO_B64_CTX *ctx;
long ret=1;
#include <openssl/buffer.h>
#include <openssl/evp.h>
-static int enc_write(BIO *h,char *buf,int num);
-static int enc_read(BIO *h,char *buf,int size);
-/*static int enc_puts(BIO *h,char *str); */
-/*static int enc_gets(BIO *h,char *str,int size); */
-static long enc_ctrl(BIO *h,int cmd,long arg1,char *arg2);
+static int enc_write(BIO *h, const char *buf, int num);
+static int enc_read(BIO *h, char *buf, int size);
+/*static int enc_puts(BIO *h, const char *str); */
+/*static int enc_gets(BIO *h, char *str, int size); */
+static long enc_ctrl(BIO *h, int cmd, long arg1, void *arg2);
static int enc_new(BIO *h);
static int enc_free(BIO *data);
-static long enc_callback_ctrl(BIO *h,int cmd,void (*fp)());
+static long enc_callback_ctrl(BIO *h, int cmd, void (*fp)());
#define ENC_BLOCK_SIZE (1024*4)
typedef struct enc_struct
return((ret == 0)?ctx->cont:ret);
}
-static int enc_write(BIO *b, char *in, int inl)
+static int enc_write(BIO *b, const char *in, int inl)
{
int ret=0,n,i;
BIO_ENC_CTX *ctx;
return(ret);
}
-static long enc_ctrl(BIO *b, int cmd, long num, char *ptr)
+static long enc_ctrl(BIO *b, int cmd, long num, void *ptr)
{
BIO *dbio;
BIO_ENC_CTX *ctx,*dctx;
/* BIO_put and BIO_get both add to the digest,
* BIO_gets returns the digest */
-static int md_write(BIO *h,char *buf,int num);
-static int md_read(BIO *h,char *buf,int size);
-/*static int md_puts(BIO *h,char *str); */
-static int md_gets(BIO *h,char *str,int size);
-static long md_ctrl(BIO *h,int cmd,long arg1,char *arg2);
+static int md_write(BIO *h, char const *buf, int num);
+static int md_read(BIO *h, char *buf, int size);
+/*static int md_puts(BIO *h, const char *str); */
+static int md_gets(BIO *h, char *str, int size);
+static long md_ctrl(BIO *h, int cmd, long arg1, void *arg2);
static int md_new(BIO *h);
static int md_free(BIO *data);
static long md_callback_ctrl(BIO *h,int cmd,void (*fp)());
return(ret);
}
-static int md_write(BIO *b, char *in, int inl)
+static int md_write(BIO *b, const char *in, int inl)
{
int ret=0;
EVP_MD_CTX *ctx;
return(ret);
}
-static long md_ctrl(BIO *b, int cmd, long num, char *ptr)
+static long md_ctrl(BIO *b, int cmd, long num, void *ptr)
{
EVP_MD_CTX *ctx,*dctx,**pctx;
const EVP_MD **ppmd;
#include <openssl/evp.h>
#include <openssl/rand.h>
-static int ok_write(BIO *h,char *buf,int num);
-static int ok_read(BIO *h,char *buf,int size);
-static long ok_ctrl(BIO *h,int cmd,long arg1,char *arg2);
+static int ok_write(BIO *h, const char *buf, int num);
+static int ok_read(BIO *h, char *buf, int size);
+static long ok_ctrl(BIO *h, int cmd, long arg1, void *arg2);
static int ok_new(BIO *h);
static int ok_free(BIO *data);
-static long ok_callback_ctrl(BIO *h,int cmd,void (*fp)());
+static long ok_callback_ctrl(BIO *h, int cmd, void (*fp)());
static void sig_out(BIO* b);
static void sig_in(BIO* b);
return(ret);
}
-static int ok_write(BIO *b, char *in, int inl)
+static int ok_write(BIO *b, const char *in, int inl)
{
int ret=0,n,i;
BIO_OK_CTX *ctx;
return(ret);
}
-static long ok_ctrl(BIO *b, int cmd, long num, char *ptr)
+static long ok_ctrl(BIO *b, int cmd, long num, void *ptr)
{
BIO_OK_CTX *ctx;
EVP_MD *md;
EVP_PBE_KEYGEN *keygen)
{
EVP_PBE_CTL *pbe_tmp;
- if (!pbe_algs) pbe_algs = sk_new (pbe_cmp);
+ if (!pbe_algs) pbe_algs = sk_new ((int (*)())pbe_cmp);
if (!(pbe_tmp = (EVP_PBE_CTL*) Malloc (sizeof(EVP_PBE_CTL)))) {
EVPerr(EVP_F_EVP_PBE_ALG_ADD,ERR_R_MALLOC_FAILURE);
return 0;
EVP_PKEY_assign_DSA(pkey, dsa);
BN_CTX_free (ctx);
- if(ndsa) sk_pop_free(ndsa, ASN1_TYPE_free);
+ if(ndsa) sk_pop_free(ndsa, (void(*)(void *)) ASN1_TYPE_free);
else ASN1_INTEGER_free(privkey);
break;
dsaerr:
BN_CTX_free (ctx);
- sk_pop_free(ndsa, ASN1_TYPE_free);
+ sk_pop_free(ndsa, (void(*)(void *)) ASN1_TYPE_free);
DSA_free(dsa);
EVP_PKEY_free(pkey);
return NULL;
&p8->pkey->value.octet_string->length)) {
EVPerr(EVP_F_EVP_PKEY2PKCS8,ERR_R_MALLOC_FAILURE);
- sk_pop_free(ndsa, ASN1_TYPE_free);
+ sk_pop_free(ndsa, (void(*)(void *)) ASN1_TYPE_free);
M_ASN1_INTEGER_free(prkey);
return 0;
}
- sk_pop_free(ndsa, ASN1_TYPE_free);
+ sk_pop_free(ndsa, (void(*)(void *)) ASN1_TYPE_free);
break;
case PKCS8_EMBEDDED_PARAM:
&p8->pkey->value.octet_string->length)) {
EVPerr(EVP_F_EVP_PKEY2PKCS8,ERR_R_MALLOC_FAILURE);
- sk_pop_free(ndsa, ASN1_TYPE_free);
+ sk_pop_free(ndsa, (void(*)(void *)) ASN1_TYPE_free);
M_ASN1_INTEGER_free (prkey);
return 0;
}
- sk_pop_free(ndsa, ASN1_TYPE_free);
+ sk_pop_free(ndsa, (void(*)(void *)) ASN1_TYPE_free);
break;
}
return 1;
/* Turn certbags into encrypted authsafe */
authsafe = PKCS12_pack_p7encdata (nid_cert, pass, -1, NULL, 0,
iter, bags);
- sk_pop_free(bags, PKCS12_SAFEBAG_free);
+ sk_pop_free(bags, (void(*)(void *)) PKCS12_SAFEBAG_free);
if (!authsafe) return NULL;
}
/* Turn it into unencrypted safe bag */
if(!(authsafe = PKCS12_pack_p7data (bags))) return NULL;
- sk_pop_free(bags, PKCS12_SAFEBAG_free);
+ sk_pop_free(bags, (void(*)(void *)) PKCS12_SAFEBAG_free);
if(!sk_push(safes, (char *)authsafe)) {
PKCS12err(PKCS12_F_PKCS12_CREATE,ERR_R_MALLOC_FAILURE);
return NULL;
if(!M_PKCS12_pack_authsafes (p12, safes)) return NULL;
- sk_pop_free(safes, PKCS7_free);
+ sk_pop_free(safes, (void(*)(void *)) PKCS7_free);
if(!PKCS12_set_mac (p12, pass, -1, NULL, 0, mac_iter, NULL))
return NULL;
bags = M_PKCS12_unpack_p7encdata (p7, pass, passlen);
} else continue;
if (!bags) {
- sk_pop_free (asafes, PKCS7_free);
+ sk_pop_free (asafes, (void(*)(void *)) PKCS7_free);
return 0;
}
if (!parse_bags(bags, pass, passlen, pkey, cert, ca,
&keyid, &keymatch)) {
- sk_pop_free(bags, PKCS12_SAFEBAG_free);
- sk_pop_free(asafes, PKCS7_free);
+ sk_pop_free(bags, (void(*)(void *)) PKCS12_SAFEBAG_free);
+ sk_pop_free(asafes, (void(*)(void *)) PKCS7_free);
return 0;
}
- sk_pop_free(bags, PKCS12_SAFEBAG_free);
+ sk_pop_free(bags, (void(*)(void *)) PKCS12_SAFEBAG_free);
}
- sk_pop_free(asafes, PKCS7_free);
+ sk_pop_free(asafes, (void(*)(void *)) PKCS7_free);
if (keyid) M_ASN1_OCTET_STRING_free(keyid);
return 1;
}
&pbe_nid, &pbe_iter, &pbe_saltlen);
} else continue;
if (!bags) {
- sk_pop_free(asafes, PKCS7_free);
+ sk_pop_free(asafes, (void(*)(void *)) PKCS7_free);
return 0;
}
if (!newpass_bags(bags, oldpass, newpass)) {
- sk_pop_free(bags, PKCS12_SAFEBAG_free);
- sk_pop_free(asafes, PKCS7_free);
+ sk_pop_free(bags, (void(*)(void *)) PKCS12_SAFEBAG_free);
+ sk_pop_free(asafes, (void(*)(void *)) PKCS7_free);
return 0;
}
/* Repack bag in same form with new password */
if (bagnid == NID_pkcs7_data) p7new = PKCS12_pack_p7data(bags);
else p7new = PKCS12_pack_p7encdata(pbe_nid, newpass, -1, NULL,
pbe_saltlen, pbe_iter, bags);
- sk_pop_free(bags, PKCS12_SAFEBAG_free);
+ sk_pop_free(bags, (void(*)(void *)) PKCS12_SAFEBAG_free);
if(!p7new) {
- sk_pop_free(asafes, PKCS7_free);
+ sk_pop_free(asafes, (void(*)(void *)) PKCS7_free);
return 0;
}
sk_push(newsafes, (char *)p7new);
}
- sk_pop_free(asafes, PKCS7_free);
+ sk_pop_free(asafes, (void(*)(void *)) PKCS7_free);
/* Repack safe: save old safe in case of error */
}
if(!(hdr = mime_hdr_find(headers, "content-type")) || !hdr->value) {
- sk_pop_free(headers, mime_hdr_free);
+ sk_pop_free(headers, (void(*)(void *)) mime_hdr_free);
PKCS7err(PKCS7_F_SMIME_READ_PKCS7, PKCS7_R_NO_CONTENT_TYPE);
return NULL;
}
/* Split into two parts */
prm = mime_param_find(hdr, "boundary");
if(!prm || !prm->param_value) {
- sk_pop_free(headers, mime_hdr_free);
+ sk_pop_free(headers, (void(*)(void *)) mime_hdr_free);
PKCS7err(PKCS7_F_SMIME_READ_PKCS7, PKCS7_R_NO_MULTIPART_BOUNDARY);
return NULL;
}
ret = multi_split(bio, prm->param_value, &parts);
- sk_pop_free(headers, mime_hdr_free);
+ sk_pop_free(headers, (void(*)(void *)) mime_hdr_free);
if(!ret || (sk_num(parts) != 2) ) {
PKCS7err(PKCS7_F_SMIME_READ_PKCS7, PKCS7_R_NO_MULTIPART_BODY_FAILURE);
- sk_pop_free(parts, (stkfree)BIO_free);
+ sk_pop_free(parts, (void(*)(void *)) BIO_free);
return NULL;
}
if (!(headers = mime_parse_hdr(p7in))) {
PKCS7err(PKCS7_F_SMIME_READ_PKCS7,PKCS7_R_MIME_SIG_PARSE_ERROR);
- sk_pop_free(parts, (stkfree)BIO_free);
+ sk_pop_free(parts, (void(*)(void *)) BIO_free);
return NULL;
}
if(!(hdr = mime_hdr_find(headers, "content-type")) ||
!hdr->value) {
- sk_pop_free(headers, mime_hdr_free);
+ sk_pop_free(headers, (void(*)(void *)) mime_hdr_free);
PKCS7err(PKCS7_F_SMIME_READ_PKCS7, PKCS7_R_NO_SIG_CONTENT_TYPE);
return NULL;
}
if(strcmp(hdr->value, "application/x-pkcs7-signature") &&
strcmp(hdr->value, "application/pkcs7-signature")) {
- sk_pop_free(headers, mime_hdr_free);
+ sk_pop_free(headers, (void(*)(void *)) mime_hdr_free);
PKCS7err(PKCS7_F_SMIME_READ_PKCS7,PKCS7_R_SIG_INVALID_MIME_TYPE);
ERR_add_error_data(2, "type: ", hdr->value);
- sk_pop_free(parts, (stkfree)BIO_free);
+ sk_pop_free(parts, (void(*)(void *))BIO_free);
return NULL;
}
- sk_pop_free(headers, mime_hdr_free);
+ sk_pop_free(headers, (void(*)(void *)) mime_hdr_free);
/* Read in PKCS#7 */
if(!(p7 = B64_read_PKCS7(p7in))) {
PKCS7err(PKCS7_F_SMIME_READ_PKCS7,PKCS7_R_PKCS7_SIG_PARSE_ERROR);
- sk_pop_free(parts, (stkfree)BIO_free);
+ sk_pop_free(parts, (void(*)(void *))BIO_free);
return NULL;
}
strcmp (hdr->value, "application/pkcs7-mime")) {
PKCS7err(PKCS7_F_SMIME_READ_PKCS7,PKCS7_R_INVALID_MIME_TYPE);
ERR_add_error_data(2, "type: ", hdr->value);
- sk_pop_free(headers, mime_hdr_free);
+ sk_pop_free(headers, (void(*)(void *)) mime_hdr_free);
return NULL;
}
- sk_pop_free(headers, mime_hdr_free);
+ sk_pop_free(headers, (void(*)(void *)) mime_hdr_free);
if(!(p7 = B64_read_PKCS7(bio))) {
PKCS7err(PKCS7_F_SMIME_READ_PKCS7, PKCS7_R_PKCS7_PARSE_ERROR);
}
if(!(hdr = mime_hdr_find(headers, "content-type")) || !hdr->value) {
PKCS7err(PKCS7_F_SMIME_TEXT,PKCS7_R_MIME_NO_CONTENT_TYPE);
- sk_pop_free(headers, mime_hdr_free);
+ sk_pop_free(headers, (void(*)(void *)) mime_hdr_free);
return 0;
}
if (strcmp (hdr->value, "text/plain")) {
PKCS7err(PKCS7_F_SMIME_TEXT,PKCS7_R_INVALID_MIME_TYPE);
ERR_add_error_data(2, "type: ", hdr->value);
- sk_pop_free(headers, mime_hdr_free);
+ sk_pop_free(headers, (void(*)(void *)) mime_hdr_free);
return 0;
}
- sk_pop_free(headers, mime_hdr_free);
+ sk_pop_free(headers, (void(*)(void *)) mime_hdr_free);
while ((len = BIO_read(in, iobuf, sizeof(iobuf))) > 0)
BIO_write(out, iobuf, len);
return 1;
MIME_HEADER *mhdr = NULL;
STACK *headers;
int len, state, save_state = 0;
- headers = sk_new(mime_hdr_cmp);
+ headers = sk_new((int (*)(const void *, const void *))mime_hdr_cmp);
while ((len = BIO_gets(bio, linebuf, MAX_SMLEN)) > 0) {
/* If whitespace at line start then continuation line */
if(mhdr && isspace((unsigned char)linebuf[0])) state = MIME_NAME;
if(!mhdr) return NULL;
mhdr->name = tmpname;
mhdr->value = tmpval;
- if(!(mhdr->params = sk_new(mime_param_cmp))) return NULL;
+ if(!(mhdr->params = sk_new((int (*)(const void *, const void *)) mime_param_cmp))) return NULL;
return mhdr;
}
{
if(hdr->name) Free(hdr->name);
if(hdr->value) Free(hdr->value);
- if(hdr->params) sk_pop_free(hdr->params, mime_param_free);
+ if(hdr->params) sk_pop_free(hdr->params, (void(*)(void *)) mime_param_free);
Free(hdr);
}
PKCS7_simple_smimecap (smcap, NID_rc2_cbc, 40);
#endif
PKCS7_add_attrib_smimecap (si, smcap);
- sk_pop_free(smcap, X509_ALGOR_free);
+ sk_pop_free(smcap, (void(*)(void *)) X509_ALGOR_free);
}
if(flags & PKCS7_DETACHED)PKCS7_set_detached(p7, 1);
#define IMPLEMENT_STACK_OF(type) \
STACK_OF(type) *sk_##type##_new(int (*cmp)(type **,type **)) \
- { return (STACK_OF(type) *)sk_new(cmp); } \
+ { return (STACK_OF(type) *)sk_new((int (*)())cmp); } \
STACK_OF(type) *sk_##type##_new_null() \
{ return (STACK_OF(type) *)sk_new_null(); } \
void sk_##type##_free(STACK_OF(type) *sk) \
{ return sk_insert((STACK *)sk,(char *)v,n); } \
int (*sk_##type##_set_cmp_func(STACK_OF(type) *sk, \
int (*cmp)(type **,type **)))(type **,type **) \
- { return (int (*)(type **,type **))sk_set_cmp_func((STACK *)sk,cmp); } \
+ { return (int (*)(type **,type **))sk_set_cmp_func((STACK *)sk,(int(*)(const void *, const void *))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,func); } \
+ { 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) \
const char *STACK_version="Stack" OPENSSL_VERSION_PTEXT;
-#define FP_ICC (int (*)(const void *,const void *))
#include <errno.h>
-int (*sk_set_cmp_func(STACK *sk, int (*c)()))(void)
+int (*sk_set_cmp_func(STACK *sk, int (*c)(const void *,const void *)))(const void *, const void *)
{
- int (*old)()=sk->comp;
+ int (*old)(const void *,const void *)=sk->comp;
if (sk->comp != c)
sk->sorted=0;
return(NULL);
}
-STACK *sk_new(int (*c)())
+STACK *sk_new(int (*c)(const void *, const void *))
{
STACK *ret;
int i;
{
char **r;
int i;
- int (*comp_func)();
+ int (*comp_func)(const void *,const void *);
if(st == NULL) return -1;
if (st->comp == NULL)
}
sk_sort(st);
if (data == NULL) return(-1);
- comp_func=(int (*)())st->comp;
+ comp_func=st->comp;
r=(char **)bsearch(&data,(char *)st->data,
- st->num,sizeof(char *),FP_ICC comp_func);
+ st->num,sizeof(char *), comp_func);
if (r == NULL) return(-1);
i=(int)(r-st->data);
for ( ; i>0; i--)
st->num=0;
}
-void sk_pop_free(STACK *st, void (*func)())
+void sk_pop_free(STACK *st, void (*func)(void *))
{
int i;
{
if (!st->sorted)
{
- int (*comp_func)();
+ int (*comp_func)(const void *,const void *);
- comp_func=(int (*)())st->comp;
- qsort(st->data,st->num,sizeof(char *),FP_ICC comp_func);
+ comp_func=st->comp;
+ qsort(st->data,st->num,sizeof(char *), comp_func);
st->sorted=1;
}
}
int sorted;
int num_alloc;
- int (*comp)();
+ int (*comp)(const void *, const void *);
} STACK;
char *sk_set(STACK *, int, char *);
-STACK *sk_new(int (*cmp)());
+STACK *sk_new(int (*cmp)(const void *, const void *));
void sk_free(STACK *);
-void sk_pop_free(STACK *st, void (*func)());
+void sk_pop_free(STACK *st, void (*func)(void *));
int sk_insert(STACK *sk,char *data,int where);
char *sk_delete(STACK *st,int loc);
char *sk_delete_ptr(STACK *st, char *p);
char *sk_shift(STACK *st);
char *sk_pop(STACK *st);
void sk_zero(STACK *st);
-int (*sk_set_cmp_func(STACK *sk, int (*c)()))();
+int (*sk_set_cmp_func(STACK *sk, int (*c)(const void *,const void *)))(const void *, const void *);
STACK *sk_dup(STACK *st);
void sk_sort(STACK *st);
X509V3err(X509V3_F_NOTICE_SECTION,ERR_R_MALLOC_FAILURE);
err:
- sk_pop_free(nnums, ASN1_STRING_free);
+ sk_pop_free(nnums, (void(*)(void *))ASN1_STRING_free);
return NULL;
}
{
if (a == NULL) return;
M_DISPLAYTEXT_free(a->organization);
- sk_pop_free(a->noticenos, ASN1_STRING_free);
+ sk_pop_free(a->noticenos, (void(*)(void *)) ASN1_STRING_free);
Free (a);
}
int X509V3_EXT_add(X509V3_EXT_METHOD *ext)
{
- if(!ext_list && !(ext_list = sk_new(ext_cmp))) {
+ if(!ext_list && !(ext_list = sk_new((int (*)(const void *, const void *))ext_cmp))) {
X509V3err(X509V3_F_X509V3_EXT_ADD,ERR_R_MALLOC_FAILURE);
return 0;
}
tmp.ext_nid = nid;
ret = (X509V3_EXT_METHOD **) OBJ_bsearch((char *)&t,
(char *)standard_exts, STANDARD_EXTENSION_COUNT,
- sizeof(X509V3_EXT_METHOD *), (int (*)())ext_cmp);
+ sizeof(X509V3_EXT_METHOD *), (int (*)(const void *, const void *))ext_cmp);
if(ret) return *ret;
if(!ext_list) return NULL;
idx = sk_find(ext_list, (char *)&tmp);
void X509V3_EXT_cleanup(void)
{
- sk_pop_free(ext_list, ext_list_free);
+ sk_pop_free(ext_list, (void(*)(void *)) ext_list_free);
ext_list = NULL;
}
#include <openssl/err.h>
#include <openssl/ssl.h>
-static int ssl_write(BIO *h,char *buf,int num);
-static int ssl_read(BIO *h,char *buf,int size);
-static int ssl_puts(BIO *h,char *str);
-static long ssl_ctrl(BIO *h,int cmd,long arg1,char *arg2);
+static int ssl_write(BIO *h, const char *buf, int num);
+static int ssl_read(BIO *h, char *buf, int size);
+static int ssl_puts(BIO *h, const char *str);
+static long ssl_ctrl(BIO *h, int cmd, long arg1, void *arg2);
static int ssl_new(BIO *h);
static int ssl_free(BIO *data);
-static long ssl_callback_ctrl(BIO *h,int cmd,void (*fp)());
+static long ssl_callback_ctrl(BIO *h, int cmd, void (*fp)());
typedef struct bio_ssl_st
{
SSL *ssl; /* The ssl handle :-) */
return(ret);
}
-static int ssl_write(BIO *b, char *out, int outl)
+static int ssl_write(BIO *b, const char *out, int outl)
{
int ret,r=0;
int retry_reason=0;
return(ret);
}
-static long ssl_ctrl(BIO *b, int cmd, long num, char *ptr)
+static long ssl_ctrl(BIO *b, int cmd, long num, void *ptr)
{
SSL **sslp,*ssl;
BIO_SSL *bs;
return(ret);
}
-static int ssl_puts(BIO *bp, char *str)
+static int ssl_puts(BIO *bp, const char *str)
{
int n,ret;