155714Skris#include <stdio.h> 255714Skris#include <stdlib.h> 355714Skris#include <string.h> 455714Skris#include <openssl/objects.h> 555714Skris#include <openssl/comp.h> 655714Skris 755714SkrisCOMP_CTX *COMP_CTX_new(COMP_METHOD *meth) 8280304Sjkim{ 9280304Sjkim COMP_CTX *ret; 1055714Skris 11280304Sjkim if ((ret = (COMP_CTX *)OPENSSL_malloc(sizeof(COMP_CTX))) == NULL) { 12280304Sjkim /* ZZZZZZZZZZZZZZZZ */ 13280304Sjkim return (NULL); 14280304Sjkim } 15280304Sjkim memset(ret, 0, sizeof(COMP_CTX)); 16280304Sjkim ret->meth = meth; 17280304Sjkim if ((ret->meth->init != NULL) && !ret->meth->init(ret)) { 18280304Sjkim OPENSSL_free(ret); 19280304Sjkim ret = NULL; 20280304Sjkim } 21280304Sjkim return (ret); 22280304Sjkim} 2355714Skris 2455714Skrisvoid COMP_CTX_free(COMP_CTX *ctx) 25280304Sjkim{ 26280304Sjkim if (ctx == NULL) 27280304Sjkim return; 2855714Skris 29280304Sjkim if (ctx->meth->finish != NULL) 30280304Sjkim ctx->meth->finish(ctx); 3155714Skris 32280304Sjkim OPENSSL_free(ctx); 33280304Sjkim} 3455714Skris 3555714Skrisint COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, 36280304Sjkim unsigned char *in, int ilen) 37280304Sjkim{ 38280304Sjkim int ret; 39280304Sjkim if (ctx->meth->compress == NULL) { 40280304Sjkim /* ZZZZZZZZZZZZZZZZZ */ 41280304Sjkim return (-1); 42280304Sjkim } 43280304Sjkim ret = ctx->meth->compress(ctx, out, olen, in, ilen); 44280304Sjkim if (ret > 0) { 45280304Sjkim ctx->compress_in += ilen; 46280304Sjkim ctx->compress_out += ret; 47280304Sjkim } 48280304Sjkim return (ret); 49280304Sjkim} 5055714Skris 5155714Skrisint COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, 52280304Sjkim unsigned char *in, int ilen) 53280304Sjkim{ 54280304Sjkim int ret; 5555714Skris 56280304Sjkim if (ctx->meth->expand == NULL) { 57280304Sjkim /* ZZZZZZZZZZZZZZZZZ */ 58280304Sjkim return (-1); 59280304Sjkim } 60280304Sjkim ret = ctx->meth->expand(ctx, out, olen, in, ilen); 61280304Sjkim if (ret > 0) { 62280304Sjkim ctx->expand_in += ilen; 63280304Sjkim ctx->expand_out += ret; 64280304Sjkim } 65280304Sjkim return (ret); 66280304Sjkim} 67