/* $CoreSDI: packet.h,v 1.11 2001/08/30 21:33:13 claudio Exp $ */ /* * Copyright (c) 2000, 2001, Core SDI S.A., Argentina * All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither name of the Core SDI S.A. nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef PACKET_H #define PACKET_H #include "buffer.h" typedef struct _packet { BUFFER *pkt_rbuf; /* Reading buffer */ BUFFER *pkt_wbuf; /* Writing buffer */ BUFFER *pkt_zbuf; /* Compress/decompress buffer */ BUFFER *pkt_cbuf; /* Encrypt/decrypt buffer */ const EVP_CIPHER *pkt_cipher; /* Cipher type */ unsigned char pkt_key[EVP_MAX_KEY_LENGTH]; /* Session key */ #ifndef WIN32 int pkt_infd, /* Input descriptor */ pkt_outfd; /* Output descriptor */ #else SOCKET pkt_infd, pkt_outfd; #endif /* WIN32 */ } PACKET; void init_cryptostrings(); void release_cryptostrings(); PACKET * packet_init (int, int); int packet_init_encrypt (PACKET *, const EVP_CIPHER *, unsigned char *, ssize_t); void packet_release (PACKET *); void packet_flush (PACKET *); void packet_put_raw (PACKET *, const void *, ssize_t); void packet_put_int32 (PACKET *, int32_t); void packet_put_string (PACKET *, const char *); void packet_get_raw (PACKET *, void *, ssize_t); void packet_get_int32 (PACKET *, int32_t *); void packet_get_string (PACKET *, char *, ssize_t); off_t packet_write (PACKET *, int, off_t); void packet_read (PACKET *, int); in_addr_t resolve (char *); #endif /* PACKET_H */