xref: /dflybsd-src/crypto/libressl/include/openssl/comp.h (revision f5b1c8a1e6dbe9333aed363dba27c2ff58be6174)
1*f5b1c8a1SJohn Marino /* $OpenBSD: comp.h,v 1.7 2014/06/12 15:49:28 deraadt Exp $ */
2*f5b1c8a1SJohn Marino 
3*f5b1c8a1SJohn Marino #ifndef HEADER_COMP_H
4*f5b1c8a1SJohn Marino #define HEADER_COMP_H
5*f5b1c8a1SJohn Marino 
6*f5b1c8a1SJohn Marino #include <openssl/crypto.h>
7*f5b1c8a1SJohn Marino 
8*f5b1c8a1SJohn Marino #ifdef  __cplusplus
9*f5b1c8a1SJohn Marino extern "C" {
10*f5b1c8a1SJohn Marino #endif
11*f5b1c8a1SJohn Marino 
12*f5b1c8a1SJohn Marino typedef struct comp_ctx_st COMP_CTX;
13*f5b1c8a1SJohn Marino 
14*f5b1c8a1SJohn Marino typedef struct comp_method_st {
15*f5b1c8a1SJohn Marino 	int type;		/* NID for compression library */
16*f5b1c8a1SJohn Marino 	const char *name;	/* A text string to identify the library */
17*f5b1c8a1SJohn Marino 	int (*init)(COMP_CTX *ctx);
18*f5b1c8a1SJohn Marino 	void (*finish)(COMP_CTX *ctx);
19*f5b1c8a1SJohn Marino 	int (*compress)(COMP_CTX *ctx, unsigned char *out, unsigned int olen,
20*f5b1c8a1SJohn Marino 	    unsigned char *in, unsigned int ilen);
21*f5b1c8a1SJohn Marino 	int (*expand)(COMP_CTX *ctx, unsigned char *out, unsigned int olen,
22*f5b1c8a1SJohn Marino 	    unsigned char *in, unsigned int ilen);
23*f5b1c8a1SJohn Marino 	/* The following two do NOTHING, but are kept for backward compatibility */
24*f5b1c8a1SJohn Marino 	long (*ctrl)(void);
25*f5b1c8a1SJohn Marino 	long (*callback_ctrl)(void);
26*f5b1c8a1SJohn Marino } COMP_METHOD;
27*f5b1c8a1SJohn Marino 
28*f5b1c8a1SJohn Marino struct comp_ctx_st {
29*f5b1c8a1SJohn Marino 	COMP_METHOD *meth;
30*f5b1c8a1SJohn Marino 	unsigned long compress_in;
31*f5b1c8a1SJohn Marino 	unsigned long compress_out;
32*f5b1c8a1SJohn Marino 	unsigned long expand_in;
33*f5b1c8a1SJohn Marino 	unsigned long expand_out;
34*f5b1c8a1SJohn Marino 
35*f5b1c8a1SJohn Marino 	CRYPTO_EX_DATA	ex_data;
36*f5b1c8a1SJohn Marino };
37*f5b1c8a1SJohn Marino 
38*f5b1c8a1SJohn Marino 
39*f5b1c8a1SJohn Marino COMP_CTX *COMP_CTX_new(COMP_METHOD *meth);
40*f5b1c8a1SJohn Marino void COMP_CTX_free(COMP_CTX *ctx);
41*f5b1c8a1SJohn Marino int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen,
42*f5b1c8a1SJohn Marino     unsigned char *in, int ilen);
43*f5b1c8a1SJohn Marino int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen,
44*f5b1c8a1SJohn Marino     unsigned char *in, int ilen);
45*f5b1c8a1SJohn Marino COMP_METHOD *COMP_rle(void );
46*f5b1c8a1SJohn Marino COMP_METHOD *COMP_zlib(void );
47*f5b1c8a1SJohn Marino void COMP_zlib_cleanup(void);
48*f5b1c8a1SJohn Marino 
49*f5b1c8a1SJohn Marino #ifdef HEADER_BIO_H
50*f5b1c8a1SJohn Marino #ifdef ZLIB
51*f5b1c8a1SJohn Marino BIO_METHOD *BIO_f_zlib(void);
52*f5b1c8a1SJohn Marino #endif
53*f5b1c8a1SJohn Marino #endif
54*f5b1c8a1SJohn Marino 
55*f5b1c8a1SJohn Marino void ERR_load_COMP_strings(void);
56*f5b1c8a1SJohn Marino 
57*f5b1c8a1SJohn Marino /* Error codes for the COMP functions. */
58*f5b1c8a1SJohn Marino 
59*f5b1c8a1SJohn Marino /* Function codes. */
60*f5b1c8a1SJohn Marino #define COMP_F_BIO_ZLIB_FLUSH				 99
61*f5b1c8a1SJohn Marino #define COMP_F_BIO_ZLIB_NEW				 100
62*f5b1c8a1SJohn Marino #define COMP_F_BIO_ZLIB_READ				 101
63*f5b1c8a1SJohn Marino #define COMP_F_BIO_ZLIB_WRITE				 102
64*f5b1c8a1SJohn Marino 
65*f5b1c8a1SJohn Marino /* Reason codes. */
66*f5b1c8a1SJohn Marino #define COMP_R_ZLIB_DEFLATE_ERROR			 99
67*f5b1c8a1SJohn Marino #define COMP_R_ZLIB_INFLATE_ERROR			 100
68*f5b1c8a1SJohn Marino #define COMP_R_ZLIB_NOT_SUPPORTED			 101
69*f5b1c8a1SJohn Marino 
70*f5b1c8a1SJohn Marino #ifdef  __cplusplus
71*f5b1c8a1SJohn Marino }
72*f5b1c8a1SJohn Marino #endif
73*f5b1c8a1SJohn Marino #endif
74