X-Git-Url: http://ftp.safe.ca/?a=blobdiff_plain;f=crypto%2Fkhazad.c;h=527e4e395fc32f8f0d271b372ed93941fb6e1bcc;hb=a06d568f7c5e40e34ea64881842deb8f4382babf;hp=807f2bf4ea24fac9869a8aa5a91e0825fe6ed8fe;hpb=a429d2609c153882c421b067ad5ae5a38851459e;p=safe%2Fjmp%2Flinux-2.6 diff --git a/crypto/khazad.c b/crypto/khazad.c index 807f2bf..527e4e3 100644 --- a/crypto/khazad.c +++ b/crypto/khazad.c @@ -23,7 +23,6 @@ #include #include #include -#include #include #include @@ -754,23 +753,18 @@ static const u64 c[KHAZAD_ROUNDS + 1] = { 0xccc41d14c363da5dULL, 0x5fdc7dcd7f5a6c5cULL, 0xf726ffede89d6f8eULL }; -static int khazad_setkey(void *ctx_arg, const u8 *in_key, - unsigned int key_len, u32 *flags) +static int khazad_setkey(struct crypto_tfm *tfm, const u8 *in_key, + unsigned int key_len) { - struct khazad_ctx *ctx = ctx_arg; - const __be64 *key = (const __be64 *)in_key; + struct khazad_ctx *ctx = crypto_tfm_ctx(tfm); + const __be32 *key = (const __be32 *)in_key; int r; const u64 *S = T7; u64 K2, K1; - - if (key_len != 16) - { - *flags |= CRYPTO_TFM_RES_BAD_KEY_LEN; - return -EINVAL; - } - K2 = be64_to_cpu(key[0]); - K1 = be64_to_cpu(key[1]); + /* key is supposed to be 32-bit aligned */ + K2 = ((u64)be32_to_cpu(key[0]) << 32) | be32_to_cpu(key[1]); + K1 = ((u64)be32_to_cpu(key[2]) << 32) | be32_to_cpu(key[3]); /* setup the encrypt key */ for (r = 0; r <= KHAZAD_ROUNDS; r++) { @@ -840,15 +834,15 @@ static void khazad_crypt(const u64 roundKey[KHAZAD_ROUNDS + 1], *dst = cpu_to_be64(state); } -static void khazad_encrypt(void *ctx_arg, u8 *dst, const u8 *src) +static void khazad_encrypt(struct crypto_tfm *tfm, u8 *dst, const u8 *src) { - struct khazad_ctx *ctx = ctx_arg; + struct khazad_ctx *ctx = crypto_tfm_ctx(tfm); khazad_crypt(ctx->E, dst, src); } -static void khazad_decrypt(void *ctx_arg, u8 *dst, const u8 *src) +static void khazad_decrypt(struct crypto_tfm *tfm, u8 *dst, const u8 *src) { - struct khazad_ctx *ctx = ctx_arg; + struct khazad_ctx *ctx = crypto_tfm_ctx(tfm); khazad_crypt(ctx->D, dst, src); } @@ -868,7 +862,7 @@ static struct crypto_alg khazad_alg = { .cia_decrypt = khazad_decrypt } } }; -static int __init init(void) +static int __init khazad_mod_init(void) { int ret = 0; @@ -876,14 +870,14 @@ static int __init init(void) return ret; } -static void __exit fini(void) +static void __exit khazad_mod_fini(void) { crypto_unregister_alg(&khazad_alg); } -module_init(init); -module_exit(fini); +module_init(khazad_mod_init); +module_exit(khazad_mod_fini); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Khazad Cryptographic Algorithm");