Up until now algorithms have been happy to get a context pointer since they know everything that's in the tfm already (e.g., alignment, block size). However, once we have parameterised algorithms, such information will be specific to each tfm. So the algorithm API needs to be changed to pass the tfm structure instead of the context pointer. This patch is basically a text substitution. The only tricky bit is the assembly routines that need to get the context pointer offset through asm-offsets.h. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
62 lines
1.6 KiB
C
62 lines
1.6 KiB
C
/*
|
|
* Cryptographic API.
|
|
*
|
|
* Compression operations.
|
|
*
|
|
* Copyright (c) 2002 James Morris <jmorris@intercode.com.au>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License as published by the Free
|
|
* Software Foundation; either version 2 of the License, or (at your option)
|
|
* any later version.
|
|
*
|
|
*/
|
|
#include <linux/types.h>
|
|
#include <linux/crypto.h>
|
|
#include <linux/errno.h>
|
|
#include <asm/scatterlist.h>
|
|
#include <linux/string.h>
|
|
#include "internal.h"
|
|
|
|
static int crypto_compress(struct crypto_tfm *tfm,
|
|
const u8 *src, unsigned int slen,
|
|
u8 *dst, unsigned int *dlen)
|
|
{
|
|
return tfm->__crt_alg->cra_compress.coa_compress(tfm, src, slen, dst,
|
|
dlen);
|
|
}
|
|
|
|
static int crypto_decompress(struct crypto_tfm *tfm,
|
|
const u8 *src, unsigned int slen,
|
|
u8 *dst, unsigned int *dlen)
|
|
{
|
|
return tfm->__crt_alg->cra_compress.coa_decompress(tfm, src, slen, dst,
|
|
dlen);
|
|
}
|
|
|
|
int crypto_init_compress_flags(struct crypto_tfm *tfm, u32 flags)
|
|
{
|
|
return flags ? -EINVAL : 0;
|
|
}
|
|
|
|
int crypto_init_compress_ops(struct crypto_tfm *tfm)
|
|
{
|
|
int ret = 0;
|
|
struct compress_tfm *ops = &tfm->crt_compress;
|
|
|
|
ret = tfm->__crt_alg->cra_compress.coa_init(crypto_tfm_ctx(tfm));
|
|
if (ret)
|
|
goto out;
|
|
|
|
ops->cot_compress = crypto_compress;
|
|
ops->cot_decompress = crypto_decompress;
|
|
|
|
out:
|
|
return ret;
|
|
}
|
|
|
|
void crypto_exit_compress_ops(struct crypto_tfm *tfm)
|
|
{
|
|
tfm->__crt_alg->cra_compress.coa_exit(crypto_tfm_ctx(tfm));
|
|
}
|