2007-12-11 04:02:57

by Herbert Xu

[permalink] [raw]
Subject: [PATCH 3/19] [CRYPTO] skcipher: Added geniv field

[CRYPTO] skcipher: Added geniv field

This patch introduces the geniv field which indicates the default IV
generator for each algorithm. It should point to a string that is not
freed as long as the algorithm is registered.

Signed-off-by: Herbert Xu <[email protected]>
---

crypto/ablkcipher.c | 2 ++
crypto/blkcipher.c | 2 ++
include/linux/crypto.h | 4 ++++
3 files changed, 8 insertions(+)

diff --git a/crypto/ablkcipher.c b/crypto/ablkcipher.c
index d957ba2..66e3922 100644
--- a/crypto/ablkcipher.c
+++ b/crypto/ablkcipher.c
@@ -94,6 +94,7 @@ static void crypto_ablkcipher_show(struct seq_file *m, struct crypto_alg *alg)
seq_printf(m, "min keysize : %u\n", ablkcipher->min_keysize);
seq_printf(m, "max keysize : %u\n", ablkcipher->max_keysize);
seq_printf(m, "ivsize : %u\n", ablkcipher->ivsize);
+ seq_printf(m, "geniv : %s\n", ablkcipher->geniv ?: "<default>");
}

const struct crypto_type crypto_ablkcipher_type = {
@@ -140,6 +141,7 @@ static void crypto_givcipher_show(struct seq_file *m, struct crypto_alg *alg)
seq_printf(m, "min keysize : %u\n", ablkcipher->min_keysize);
seq_printf(m, "max keysize : %u\n", ablkcipher->max_keysize);
seq_printf(m, "ivsize : %u\n", ablkcipher->ivsize);
+ seq_printf(m, "geniv : %s\n", ablkcipher->geniv ?: "<built-in>");
}

const struct crypto_type crypto_givcipher_type = {
diff --git a/crypto/blkcipher.c b/crypto/blkcipher.c
index 7939504..7a3e1a3 100644
--- a/crypto/blkcipher.c
+++ b/crypto/blkcipher.c
@@ -496,6 +496,8 @@ static void crypto_blkcipher_show(struct seq_file *m, struct crypto_alg *alg)
seq_printf(m, "min keysize : %u\n", alg->cra_blkcipher.min_keysize);
seq_printf(m, "max keysize : %u\n", alg->cra_blkcipher.max_keysize);
seq_printf(m, "ivsize : %u\n", alg->cra_blkcipher.ivsize);
+ seq_printf(m, "geniv : %s\n", alg->cra_blkcipher.geniv ?:
+ "<default>");
}

const struct crypto_type crypto_blkcipher_type = {
diff --git a/include/linux/crypto.h b/include/linux/crypto.h
index d3012cd..5462711 100644
--- a/include/linux/crypto.h
+++ b/include/linux/crypto.h
@@ -183,6 +183,8 @@ struct ablkcipher_alg {
int (*givencrypt)(struct skcipher_givcrypt_request *req);
int (*givdecrypt)(struct skcipher_givcrypt_request *req);

+ const char *geniv;
+
unsigned int min_keysize;
unsigned int max_keysize;
unsigned int ivsize;
@@ -209,6 +211,8 @@ struct blkcipher_alg {
struct scatterlist *dst, struct scatterlist *src,
unsigned int nbytes);

+ const char *geniv;
+
unsigned int min_keysize;
unsigned int max_keysize;
unsigned int ivsize;