os/ossrv/ssl/libcrypto/src/crypto/comp/comp_lib.c
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
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
	}