It seems that crypto_cipher_encrypt_iv(); and decrypt_iv(); BUG_ON() if the cit_mode is MODE_ECB. Okay, that's reasonable.
The problem is that the OCF cryptosoft interface for OCF sets the mode=0,
now. Since it's a NULL cipher, it doesn't matter what mode, so I've
changed it to CBC mode, and fixed the code in crypto.c to deal with a
cipher that has a 1-byte block size.
commit 940e136dd89fd58d0b02e540167f2d29c68bdbb6
Author: Michael Richardson <[EMAIL PROTECTED]>
Date: Sat Jun 10 11:28:15 2006 -0400
include support for null cipher --- block size of "1"
diff --git a/crypto/cipher.c b/crypto/cipher.c
index 65bcea0..bb27b14 100644
--- a/crypto/cipher.c
+++ b/crypto/cipher.c
@@ -23,6 +23,11 @@ #include <asm/scatterlist.h>
#include "internal.h"
#include "scatterwalk.h"
+static inline void xor_1(u8 *a, const u8 *b)
+{
+ a[0] ^= b[0];
+}
+
static inline void xor_64(u8 *a, const u8 *b)
{
((u32 *)a)[0] ^= ((u32 *)b)[0];
@@ -431,6 +436,11 @@ int crypto_init_cipher_ops(struct crypto
unsigned long addr;
switch (crypto_tfm_alg_blocksize(tfm)) {
+ case 1:
+ /* some ciphers (e.g. null) have no restrictions. */
+ ops->cit_xor_block = xor_1;
+ break;
+
case 8:
ops->cit_xor_block = xor_64;
break;
--
] ON HUMILITY: to err is human. To moo, bovine. | firewalls [
] Michael Richardson, Xelerance Corporation, Ottawa, ON |net architect[
] [EMAIL PROTECTED] http://www.sandelman.ottawa.on.ca/mcr/ |device driver[
] panic("Just another Debian GNU/Linux using, kernel hacking, security guy"); [
"The Microsoft _Get the Facts CD_ does not work on Linux." - orospakr
pgptjx2YYoHCe.pgp
Description: PGP signature
