"Edson E. Watanabe" wrote: > Did someone write a BIO filter for gzip/zlib compression/decompression? > Is it easy to write? > I think I could use crypto/evp/bio_b64.c as a starting point (writing a > BIO_f_gzip filter for compressing and a BIO_f_gunzip for expanding), but I > want to know if are there any pitfalls in implementing or installing new > BIOs. Yes,its very easy. I wrote one "ZBIO" from gzio.c code in GNU ZLIB for my secure transfer of files server.You have to create a new BIO method and a function to return a pointer to that method when its requested.Then you have to fill its pointer to function members with the gzread/gzwrite code in ZLIB. In fact, its just an exercise because there are few things to add/modify. This is the new method context: (name of variables could be re-written like in cipher bio or b64 bio...) typedef struct z_struct { z_stream stream; /* This is original ZLIB context */ char mode; int z_err; int z_eof; uLong crc; int transparent; int first; int level; char *buf; } BIO_COMP_CTX; And this is the method #define BIO_TYPE_COMP (12|0x0200) /* filter */ static BIO_METHOD methods_z= { BIO_TYPE_COMP,"comp", zbio_write, /* this is gzwrite() */ zbio_read, /*gzread() */ NULL, NULL, zbio_ctrl, /* ctrl could set the compress level */ zbio_new, zbio_free, }; This is how I've called my bio: BIO_METHOD *BIO_f_comp(void) { return(&methods_z); } I use this BIO at the botton of a B64 bio and a encryption BIO, without problems... I use the same BIO for compress and uncompress: if I call BIO_read it uncompresses and if I call BIO_wrie it compresses. Hope this helps Pablo J. Royo ______________________________________________________________________ OpenSSL Project http://www.openssl.org Development Mailing List [EMAIL PROTECTED] Automated List Manager [EMAIL PROTECTED]