sl@0
|
1 |
#include <stdio.h>
|
sl@0
|
2 |
#include <stdlib.h>
|
sl@0
|
3 |
#include <string.h>
|
sl@0
|
4 |
#include <openssl/objects.h>
|
sl@0
|
5 |
#include <openssl/comp.h>
|
sl@0
|
6 |
|
sl@0
|
7 |
EXPORT_C COMP_CTX *COMP_CTX_new(COMP_METHOD *meth)
|
sl@0
|
8 |
{
|
sl@0
|
9 |
COMP_CTX *ret;
|
sl@0
|
10 |
|
sl@0
|
11 |
if ((ret=(COMP_CTX *)OPENSSL_malloc(sizeof(COMP_CTX))) == NULL)
|
sl@0
|
12 |
{
|
sl@0
|
13 |
/* ZZZZZZZZZZZZZZZZ */
|
sl@0
|
14 |
return(NULL);
|
sl@0
|
15 |
}
|
sl@0
|
16 |
memset(ret,0,sizeof(COMP_CTX));
|
sl@0
|
17 |
ret->meth=meth;
|
sl@0
|
18 |
if ((ret->meth->init != NULL) && !ret->meth->init(ret))
|
sl@0
|
19 |
{
|
sl@0
|
20 |
OPENSSL_free(ret);
|
sl@0
|
21 |
ret=NULL;
|
sl@0
|
22 |
}
|
sl@0
|
23 |
return(ret);
|
sl@0
|
24 |
}
|
sl@0
|
25 |
|
sl@0
|
26 |
EXPORT_C void COMP_CTX_free(COMP_CTX *ctx)
|
sl@0
|
27 |
{
|
sl@0
|
28 |
if(ctx == NULL)
|
sl@0
|
29 |
return;
|
sl@0
|
30 |
|
sl@0
|
31 |
if (ctx->meth->finish != NULL)
|
sl@0
|
32 |
ctx->meth->finish(ctx);
|
sl@0
|
33 |
|
sl@0
|
34 |
OPENSSL_free(ctx);
|
sl@0
|
35 |
}
|
sl@0
|
36 |
|
sl@0
|
37 |
EXPORT_C int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen,
|
sl@0
|
38 |
unsigned char *in, int ilen)
|
sl@0
|
39 |
{
|
sl@0
|
40 |
int ret;
|
sl@0
|
41 |
if (ctx->meth->compress == NULL)
|
sl@0
|
42 |
{
|
sl@0
|
43 |
/* ZZZZZZZZZZZZZZZZZ */
|
sl@0
|
44 |
return(-1);
|
sl@0
|
45 |
}
|
sl@0
|
46 |
ret=ctx->meth->compress(ctx,out,olen,in,ilen);
|
sl@0
|
47 |
if (ret > 0)
|
sl@0
|
48 |
{
|
sl@0
|
49 |
ctx->compress_in+=ilen;
|
sl@0
|
50 |
ctx->compress_out+=ret;
|
sl@0
|
51 |
}
|
sl@0
|
52 |
return(ret);
|
sl@0
|
53 |
}
|
sl@0
|
54 |
|
sl@0
|
55 |
EXPORT_C int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen,
|
sl@0
|
56 |
unsigned char *in, int ilen)
|
sl@0
|
57 |
{
|
sl@0
|
58 |
int ret;
|
sl@0
|
59 |
|
sl@0
|
60 |
if (ctx->meth->expand == NULL)
|
sl@0
|
61 |
{
|
sl@0
|
62 |
/* ZZZZZZZZZZZZZZZZZ */
|
sl@0
|
63 |
return(-1);
|
sl@0
|
64 |
}
|
sl@0
|
65 |
ret=ctx->meth->expand(ctx,out,olen,in,ilen);
|
sl@0
|
66 |
if (ret > 0)
|
sl@0
|
67 |
{
|
sl@0
|
68 |
ctx->expand_in+=ilen;
|
sl@0
|
69 |
ctx->expand_out+=ret;
|
sl@0
|
70 |
}
|
sl@0
|
71 |
return(ret);
|
sl@0
|
72 |
}
|