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