aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2006-08-21 07:40:49 -0400
committerHerbert Xu <herbert@gondor.apana.org.au>2006-09-20 21:46:16 -0400
commit7226bc877a22244e8003924031435a4bffd52654 (patch)
treeb522aec40dcf6c9c3080d6c8d0fce77c432238af
parent03fd9cee7f46dddcd2562bc175d2c348502ce281 (diff)
[CRYPTO] api: Mark parts of cipher interface as deprecated
Mark the parts of the cipher interface that have been replaced by block ciphers as deprecated. Thanks to Andrew Morton for suggesting doing this before removing them completely. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
-rw-r--r--crypto/cipher.c34
-rw-r--r--include/linux/crypto.h48
2 files changed, 64 insertions, 18 deletions
diff --git a/crypto/cipher.c b/crypto/cipher.c
index 326461780673..9e03701cfdcc 100644
--- a/crypto/cipher.c
+++ b/crypto/cipher.c
@@ -23,6 +23,28 @@
23#include "internal.h" 23#include "internal.h"
24#include "scatterwalk.h" 24#include "scatterwalk.h"
25 25
26struct cipher_alg_compat {
27 unsigned int cia_min_keysize;
28 unsigned int cia_max_keysize;
29 int (*cia_setkey)(struct crypto_tfm *tfm, const u8 *key,
30 unsigned int keylen);
31 void (*cia_encrypt)(struct crypto_tfm *tfm, u8 *dst, const u8 *src);
32 void (*cia_decrypt)(struct crypto_tfm *tfm, u8 *dst, const u8 *src);
33
34 unsigned int (*cia_encrypt_ecb)(const struct cipher_desc *desc,
35 u8 *dst, const u8 *src,
36 unsigned int nbytes);
37 unsigned int (*cia_decrypt_ecb)(const struct cipher_desc *desc,
38 u8 *dst, const u8 *src,
39 unsigned int nbytes);
40 unsigned int (*cia_encrypt_cbc)(const struct cipher_desc *desc,
41 u8 *dst, const u8 *src,
42 unsigned int nbytes);
43 unsigned int (*cia_decrypt_cbc)(const struct cipher_desc *desc,
44 u8 *dst, const u8 *src,
45 unsigned int nbytes);
46};
47
26static inline void xor_64(u8 *a, const u8 *b) 48static inline void xor_64(u8 *a, const u8 *b)
27{ 49{
28 ((u32 *)a)[0] ^= ((u32 *)b)[0]; 50 ((u32 *)a)[0] ^= ((u32 *)b)[0];
@@ -276,7 +298,7 @@ static int ecb_encrypt(struct crypto_tfm *tfm,
276 struct scatterlist *src, unsigned int nbytes) 298 struct scatterlist *src, unsigned int nbytes)
277{ 299{
278 struct cipher_desc desc; 300 struct cipher_desc desc;
279 struct cipher_alg *cipher = &tfm->__crt_alg->cra_cipher; 301 struct cipher_alg_compat *cipher = (void *)&tfm->__crt_alg->cra_cipher;
280 302
281 desc.tfm = tfm; 303 desc.tfm = tfm;
282 desc.crfn = cipher->cia_encrypt; 304 desc.crfn = cipher->cia_encrypt;
@@ -291,7 +313,7 @@ static int ecb_decrypt(struct crypto_tfm *tfm,
291 unsigned int nbytes) 313 unsigned int nbytes)
292{ 314{
293 struct cipher_desc desc; 315 struct cipher_desc desc;
294 struct cipher_alg *cipher = &tfm->__crt_alg->cra_cipher; 316 struct cipher_alg_compat *cipher = (void *)&tfm->__crt_alg->cra_cipher;
295 317
296 desc.tfm = tfm; 318 desc.tfm = tfm;
297 desc.crfn = cipher->cia_decrypt; 319 desc.crfn = cipher->cia_decrypt;
@@ -306,7 +328,7 @@ static int cbc_encrypt(struct crypto_tfm *tfm,
306 unsigned int nbytes) 328 unsigned int nbytes)
307{ 329{
308 struct cipher_desc desc; 330 struct cipher_desc desc;
309 struct cipher_alg *cipher = &tfm->__crt_alg->cra_cipher; 331 struct cipher_alg_compat *cipher = (void *)&tfm->__crt_alg->cra_cipher;
310 332
311 desc.tfm = tfm; 333 desc.tfm = tfm;
312 desc.crfn = cipher->cia_encrypt; 334 desc.crfn = cipher->cia_encrypt;
@@ -322,7 +344,7 @@ static int cbc_encrypt_iv(struct crypto_tfm *tfm,
322 unsigned int nbytes, u8 *iv) 344 unsigned int nbytes, u8 *iv)
323{ 345{
324 struct cipher_desc desc; 346 struct cipher_desc desc;
325 struct cipher_alg *cipher = &tfm->__crt_alg->cra_cipher; 347 struct cipher_alg_compat *cipher = (void *)&tfm->__crt_alg->cra_cipher;
326 348
327 desc.tfm = tfm; 349 desc.tfm = tfm;
328 desc.crfn = cipher->cia_encrypt; 350 desc.crfn = cipher->cia_encrypt;
@@ -338,7 +360,7 @@ static int cbc_decrypt(struct crypto_tfm *tfm,
338 unsigned int nbytes) 360 unsigned int nbytes)
339{ 361{
340 struct cipher_desc desc; 362 struct cipher_desc desc;
341 struct cipher_alg *cipher = &tfm->__crt_alg->cra_cipher; 363 struct cipher_alg_compat *cipher = (void *)&tfm->__crt_alg->cra_cipher;
342 364
343 desc.tfm = tfm; 365 desc.tfm = tfm;
344 desc.crfn = cipher->cia_decrypt; 366 desc.crfn = cipher->cia_decrypt;
@@ -354,7 +376,7 @@ static int cbc_decrypt_iv(struct crypto_tfm *tfm,
354 unsigned int nbytes, u8 *iv) 376 unsigned int nbytes, u8 *iv)
355{ 377{
356 struct cipher_desc desc; 378 struct cipher_desc desc;
357 struct cipher_alg *cipher = &tfm->__crt_alg->cra_cipher; 379 struct cipher_alg_compat *cipher = (void *)&tfm->__crt_alg->cra_cipher;
358 380
359 desc.tfm = tfm; 381 desc.tfm = tfm;
360 desc.crfn = cipher->cia_decrypt; 382 desc.crfn = cipher->cia_decrypt;
diff --git a/include/linux/crypto.h b/include/linux/crypto.h
index 5a5466d518e8..0be666b50463 100644
--- a/include/linux/crypto.h
+++ b/include/linux/crypto.h
@@ -20,7 +20,6 @@
20#include <asm/atomic.h> 20#include <asm/atomic.h>
21#include <linux/module.h> 21#include <linux/module.h>
22#include <linux/kernel.h> 22#include <linux/kernel.h>
23#include <linux/types.h>
24#include <linux/list.h> 23#include <linux/list.h>
25#include <linux/slab.h> 24#include <linux/slab.h>
26#include <linux/string.h> 25#include <linux/string.h>
@@ -137,16 +136,16 @@ struct cipher_alg {
137 136
138 unsigned int (*cia_encrypt_ecb)(const struct cipher_desc *desc, 137 unsigned int (*cia_encrypt_ecb)(const struct cipher_desc *desc,
139 u8 *dst, const u8 *src, 138 u8 *dst, const u8 *src,
140 unsigned int nbytes); 139 unsigned int nbytes) __deprecated;
141 unsigned int (*cia_decrypt_ecb)(const struct cipher_desc *desc, 140 unsigned int (*cia_decrypt_ecb)(const struct cipher_desc *desc,
142 u8 *dst, const u8 *src, 141 u8 *dst, const u8 *src,
143 unsigned int nbytes); 142 unsigned int nbytes) __deprecated;
144 unsigned int (*cia_encrypt_cbc)(const struct cipher_desc *desc, 143 unsigned int (*cia_encrypt_cbc)(const struct cipher_desc *desc,
145 u8 *dst, const u8 *src, 144 u8 *dst, const u8 *src,
146 unsigned int nbytes); 145 unsigned int nbytes) __deprecated;
147 unsigned int (*cia_decrypt_cbc)(const struct cipher_desc *desc, 146 unsigned int (*cia_decrypt_cbc)(const struct cipher_desc *desc,
148 u8 *dst, const u8 *src, 147 u8 *dst, const u8 *src,
149 unsigned int nbytes); 148 unsigned int nbytes) __deprecated;
150}; 149};
151 150
152struct digest_alg { 151struct digest_alg {
@@ -358,18 +357,23 @@ static inline u32 crypto_tfm_alg_type(struct crypto_tfm *tfm)
358 return tfm->__crt_alg->cra_flags & CRYPTO_ALG_TYPE_MASK; 357 return tfm->__crt_alg->cra_flags & CRYPTO_ALG_TYPE_MASK;
359} 358}
360 359
360static unsigned int crypto_tfm_alg_min_keysize(struct crypto_tfm *tfm)
361 __deprecated;
361static inline unsigned int crypto_tfm_alg_min_keysize(struct crypto_tfm *tfm) 362static inline unsigned int crypto_tfm_alg_min_keysize(struct crypto_tfm *tfm)
362{ 363{
363 BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_CIPHER); 364 BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_CIPHER);
364 return tfm->__crt_alg->cra_cipher.cia_min_keysize; 365 return tfm->__crt_alg->cra_cipher.cia_min_keysize;
365} 366}
366 367
368static unsigned int crypto_tfm_alg_max_keysize(struct crypto_tfm *tfm)
369 __deprecated;
367static inline unsigned int crypto_tfm_alg_max_keysize(struct crypto_tfm *tfm) 370static inline unsigned int crypto_tfm_alg_max_keysize(struct crypto_tfm *tfm)
368{ 371{
369 BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_CIPHER); 372 BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_CIPHER);
370 return tfm->__crt_alg->cra_cipher.cia_max_keysize; 373 return tfm->__crt_alg->cra_cipher.cia_max_keysize;
371} 374}
372 375
376static unsigned int crypto_tfm_alg_ivsize(struct crypto_tfm *tfm) __deprecated;
373static inline unsigned int crypto_tfm_alg_ivsize(struct crypto_tfm *tfm) 377static inline unsigned int crypto_tfm_alg_ivsize(struct crypto_tfm *tfm)
374{ 378{
375 BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_CIPHER); 379 BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_CIPHER);
@@ -622,6 +626,13 @@ static inline void crypto_cipher_clear_flags(struct crypto_cipher *tfm,
622 crypto_tfm_clear_flags(crypto_cipher_tfm(tfm), flags); 626 crypto_tfm_clear_flags(crypto_cipher_tfm(tfm), flags);
623} 627}
624 628
629static inline int crypto_cipher_setkey(struct crypto_cipher *tfm,
630 const u8 *key, unsigned int keylen)
631{
632 return crypto_cipher_crt(tfm)->cit_setkey(crypto_cipher_tfm(tfm),
633 key, keylen);
634}
635
625static inline void crypto_cipher_encrypt_one(struct crypto_cipher *tfm, 636static inline void crypto_cipher_encrypt_one(struct crypto_cipher *tfm,
626 u8 *dst, const u8 *src) 637 u8 *dst, const u8 *src)
627{ 638{
@@ -671,13 +682,10 @@ static inline int crypto_digest_setkey(struct crypto_tfm *tfm,
671 return tfm->crt_digest.dit_setkey(tfm, key, keylen); 682 return tfm->crt_digest.dit_setkey(tfm, key, keylen);
672} 683}
673 684
674static inline int crypto_cipher_setkey(struct crypto_tfm *tfm, 685static int crypto_cipher_encrypt(struct crypto_tfm *tfm,
675 const u8 *key, unsigned int keylen) 686 struct scatterlist *dst,
676{ 687 struct scatterlist *src,
677 BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_CIPHER); 688 unsigned int nbytes) __deprecated;
678 return tfm->crt_cipher.cit_setkey(tfm, key, keylen);
679}
680
681static inline int crypto_cipher_encrypt(struct crypto_tfm *tfm, 689static inline int crypto_cipher_encrypt(struct crypto_tfm *tfm,
682 struct scatterlist *dst, 690 struct scatterlist *dst,
683 struct scatterlist *src, 691 struct scatterlist *src,
@@ -687,6 +695,10 @@ static inline int crypto_cipher_encrypt(struct crypto_tfm *tfm,
687 return tfm->crt_cipher.cit_encrypt(tfm, dst, src, nbytes); 695 return tfm->crt_cipher.cit_encrypt(tfm, dst, src, nbytes);
688} 696}
689 697
698static int crypto_cipher_encrypt_iv(struct crypto_tfm *tfm,
699 struct scatterlist *dst,
700 struct scatterlist *src,
701 unsigned int nbytes, u8 *iv) __deprecated;
690static inline int crypto_cipher_encrypt_iv(struct crypto_tfm *tfm, 702static inline int crypto_cipher_encrypt_iv(struct crypto_tfm *tfm,
691 struct scatterlist *dst, 703 struct scatterlist *dst,
692 struct scatterlist *src, 704 struct scatterlist *src,
@@ -696,6 +708,10 @@ static inline int crypto_cipher_encrypt_iv(struct crypto_tfm *tfm,
696 return tfm->crt_cipher.cit_encrypt_iv(tfm, dst, src, nbytes, iv); 708 return tfm->crt_cipher.cit_encrypt_iv(tfm, dst, src, nbytes, iv);
697} 709}
698 710
711static int crypto_cipher_decrypt(struct crypto_tfm *tfm,
712 struct scatterlist *dst,
713 struct scatterlist *src,
714 unsigned int nbytes) __deprecated;
699static inline int crypto_cipher_decrypt(struct crypto_tfm *tfm, 715static inline int crypto_cipher_decrypt(struct crypto_tfm *tfm,
700 struct scatterlist *dst, 716 struct scatterlist *dst,
701 struct scatterlist *src, 717 struct scatterlist *src,
@@ -705,6 +721,10 @@ static inline int crypto_cipher_decrypt(struct crypto_tfm *tfm,
705 return tfm->crt_cipher.cit_decrypt(tfm, dst, src, nbytes); 721 return tfm->crt_cipher.cit_decrypt(tfm, dst, src, nbytes);
706} 722}
707 723
724static int crypto_cipher_decrypt_iv(struct crypto_tfm *tfm,
725 struct scatterlist *dst,
726 struct scatterlist *src,
727 unsigned int nbytes, u8 *iv) __deprecated;
708static inline int crypto_cipher_decrypt_iv(struct crypto_tfm *tfm, 728static inline int crypto_cipher_decrypt_iv(struct crypto_tfm *tfm,
709 struct scatterlist *dst, 729 struct scatterlist *dst,
710 struct scatterlist *src, 730 struct scatterlist *src,
@@ -714,6 +734,8 @@ static inline int crypto_cipher_decrypt_iv(struct crypto_tfm *tfm,
714 return tfm->crt_cipher.cit_decrypt_iv(tfm, dst, src, nbytes, iv); 734 return tfm->crt_cipher.cit_decrypt_iv(tfm, dst, src, nbytes, iv);
715} 735}
716 736
737static void crypto_cipher_set_iv(struct crypto_tfm *tfm,
738 const u8 *src, unsigned int len) __deprecated;
717static inline void crypto_cipher_set_iv(struct crypto_tfm *tfm, 739static inline void crypto_cipher_set_iv(struct crypto_tfm *tfm,
718 const u8 *src, unsigned int len) 740 const u8 *src, unsigned int len)
719{ 741{
@@ -721,6 +743,8 @@ static inline void crypto_cipher_set_iv(struct crypto_tfm *tfm,
721 memcpy(tfm->crt_cipher.cit_iv, src, len); 743 memcpy(tfm->crt_cipher.cit_iv, src, len);
722} 744}
723 745
746static void crypto_cipher_get_iv(struct crypto_tfm *tfm,
747 u8 *dst, unsigned int len) __deprecated;
724static inline void crypto_cipher_get_iv(struct crypto_tfm *tfm, 748static inline void crypto_cipher_get_iv(struct crypto_tfm *tfm,
725 u8 *dst, unsigned int len) 749 u8 *dst, unsigned int len)
726{ 750{