Blame view
crypto/des_generic.c
3.28 KB
2874c5fd2 treewide: Replace... |
1 |
// SPDX-License-Identifier: GPL-2.0-or-later |
e1d5dea1d [CRYPTO] Add fast... |
2 |
/* |
1da177e4c Linux-2.6.12-rc2 |
3 4 5 6 |
* Cryptographic API. * * DES & Triple DES EDE Cipher Algorithms. * |
e1d5dea1d [CRYPTO] Add fast... |
7 |
* Copyright (c) 2005 Dag Arne Osvik <da@osvik.no> |
1da177e4c Linux-2.6.12-rc2 |
8 |
*/ |
e1d5dea1d [CRYPTO] Add fast... |
9 |
|
06ace7a9b [CRYPTO] Use stan... |
10 |
#include <asm/byteorder.h> |
e1d5dea1d [CRYPTO] Add fast... |
11 |
#include <linux/bitops.h> |
1da177e4c Linux-2.6.12-rc2 |
12 13 |
#include <linux/init.h> #include <linux/module.h> |
1da177e4c Linux-2.6.12-rc2 |
14 |
#include <linux/errno.h> |
1da177e4c Linux-2.6.12-rc2 |
15 |
#include <linux/crypto.h> |
04007b0e6 crypto: des - spl... |
16 |
#include <crypto/internal/des.h> |
1da177e4c Linux-2.6.12-rc2 |
17 |
|
6c2bb98bc [CRYPTO] all: Pas... |
18 |
static int des_setkey(struct crypto_tfm *tfm, const u8 *key, |
560c06ae1 [CRYPTO] api: Get... |
19 |
unsigned int keylen) |
1da177e4c Linux-2.6.12-rc2 |
20 |
{ |
6c2bb98bc [CRYPTO] all: Pas... |
21 |
struct des_ctx *dctx = crypto_tfm_ctx(tfm); |
04007b0e6 crypto: des - spl... |
22 |
int err; |
e1d5dea1d [CRYPTO] Add fast... |
23 |
|
04007b0e6 crypto: des - spl... |
24 25 26 27 28 29 |
err = des_expand_key(dctx, key, keylen); if (err == -ENOKEY) { if (crypto_tfm_get_flags(tfm) & CRYPTO_TFM_REQ_FORBID_WEAK_KEYS) err = -EINVAL; else err = 0; |
e1d5dea1d [CRYPTO] Add fast... |
30 |
} |
c4c4db0d5 crypto: remove CR... |
31 |
if (err) |
04007b0e6 crypto: des - spl... |
32 |
memset(dctx, 0, sizeof(*dctx)); |
04007b0e6 crypto: des - spl... |
33 |
return err; |
1da177e4c Linux-2.6.12-rc2 |
34 |
} |
04007b0e6 crypto: des - spl... |
35 |
static void crypto_des_encrypt(struct crypto_tfm *tfm, u8 *dst, const u8 *src) |
1da177e4c Linux-2.6.12-rc2 |
36 |
{ |
04007b0e6 crypto: des - spl... |
37 |
const struct des_ctx *dctx = crypto_tfm_ctx(tfm); |
e1d5dea1d [CRYPTO] Add fast... |
38 |
|
04007b0e6 crypto: des - spl... |
39 |
des_encrypt(dctx, dst, src); |
1da177e4c Linux-2.6.12-rc2 |
40 |
} |
04007b0e6 crypto: des - spl... |
41 |
static void crypto_des_decrypt(struct crypto_tfm *tfm, u8 *dst, const u8 *src) |
1da177e4c Linux-2.6.12-rc2 |
42 |
{ |
04007b0e6 crypto: des - spl... |
43 |
const struct des_ctx *dctx = crypto_tfm_ctx(tfm); |
e1d5dea1d [CRYPTO] Add fast... |
44 |
|
04007b0e6 crypto: des - spl... |
45 |
des_decrypt(dctx, dst, src); |
1da177e4c Linux-2.6.12-rc2 |
46 |
} |
6574e6c64 crypto: des_3des ... |
47 48 49 50 |
static int des3_ede_setkey(struct crypto_tfm *tfm, const u8 *key, unsigned int keylen) { struct des3_ede_ctx *dctx = crypto_tfm_ctx(tfm); |
4fd4be057 crypto: 3des - mo... |
51 |
int err; |
04007b0e6 crypto: des - spl... |
52 53 54 55 56 57 58 |
err = des3_ede_expand_key(dctx, key, keylen); if (err == -ENOKEY) { if (crypto_tfm_get_flags(tfm) & CRYPTO_TFM_REQ_FORBID_WEAK_KEYS) err = -EINVAL; else err = 0; } |
c4c4db0d5 crypto: remove CR... |
59 |
if (err) |
04007b0e6 crypto: des - spl... |
60 |
memset(dctx, 0, sizeof(*dctx)); |
04007b0e6 crypto: des - spl... |
61 |
return err; |
6574e6c64 crypto: des_3des ... |
62 |
} |
1da177e4c Linux-2.6.12-rc2 |
63 |
|
04007b0e6 crypto: des - spl... |
64 65 |
static void crypto_des3_ede_encrypt(struct crypto_tfm *tfm, u8 *dst, const u8 *src) |
1da177e4c Linux-2.6.12-rc2 |
66 |
{ |
04007b0e6 crypto: des - spl... |
67 |
const struct des3_ede_ctx *dctx = crypto_tfm_ctx(tfm); |
e1d5dea1d [CRYPTO] Add fast... |
68 |
|
04007b0e6 crypto: des - spl... |
69 |
des3_ede_encrypt(dctx, dst, src); |
1da177e4c Linux-2.6.12-rc2 |
70 |
} |
04007b0e6 crypto: des - spl... |
71 72 |
static void crypto_des3_ede_decrypt(struct crypto_tfm *tfm, u8 *dst, const u8 *src) |
1da177e4c Linux-2.6.12-rc2 |
73 |
{ |
04007b0e6 crypto: des - spl... |
74 |
const struct des3_ede_ctx *dctx = crypto_tfm_ctx(tfm); |
1da177e4c Linux-2.6.12-rc2 |
75 |
|
04007b0e6 crypto: des - spl... |
76 |
des3_ede_decrypt(dctx, dst, src); |
1da177e4c Linux-2.6.12-rc2 |
77 |
} |
9935e6d2f crypto: des - use... |
78 |
static struct crypto_alg des_algs[2] = { { |
1da177e4c Linux-2.6.12-rc2 |
79 |
.cra_name = "des", |
6574e6c64 crypto: des_3des ... |
80 81 |
.cra_driver_name = "des-generic", .cra_priority = 100, |
1da177e4c Linux-2.6.12-rc2 |
82 83 84 85 |
.cra_flags = CRYPTO_ALG_TYPE_CIPHER, .cra_blocksize = DES_BLOCK_SIZE, .cra_ctxsize = sizeof(struct des_ctx), .cra_module = THIS_MODULE, |
1da177e4c Linux-2.6.12-rc2 |
86 87 88 |
.cra_u = { .cipher = { .cia_min_keysize = DES_KEY_SIZE, .cia_max_keysize = DES_KEY_SIZE, |
e1d5dea1d [CRYPTO] Add fast... |
89 |
.cia_setkey = des_setkey, |
04007b0e6 crypto: des - spl... |
90 91 |
.cia_encrypt = crypto_des_encrypt, .cia_decrypt = crypto_des_decrypt } } |
9935e6d2f crypto: des - use... |
92 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
93 |
.cra_name = "des3_ede", |
6574e6c64 crypto: des_3des ... |
94 95 |
.cra_driver_name = "des3_ede-generic", .cra_priority = 100, |
1da177e4c Linux-2.6.12-rc2 |
96 97 98 99 |
.cra_flags = CRYPTO_ALG_TYPE_CIPHER, .cra_blocksize = DES3_EDE_BLOCK_SIZE, .cra_ctxsize = sizeof(struct des3_ede_ctx), .cra_module = THIS_MODULE, |
1da177e4c Linux-2.6.12-rc2 |
100 101 102 |
.cra_u = { .cipher = { .cia_min_keysize = DES3_EDE_KEY_SIZE, .cia_max_keysize = DES3_EDE_KEY_SIZE, |
e1d5dea1d [CRYPTO] Add fast... |
103 |
.cia_setkey = des3_ede_setkey, |
04007b0e6 crypto: des - spl... |
104 105 |
.cia_encrypt = crypto_des3_ede_encrypt, .cia_decrypt = crypto_des3_ede_decrypt } } |
9935e6d2f crypto: des - use... |
106 |
} }; |
1da177e4c Linux-2.6.12-rc2 |
107 |
|
3af5b90bd [CRYPTO] all: Cle... |
108 |
static int __init des_generic_mod_init(void) |
1da177e4c Linux-2.6.12-rc2 |
109 |
{ |
9935e6d2f crypto: des - use... |
110 |
return crypto_register_algs(des_algs, ARRAY_SIZE(des_algs)); |
1da177e4c Linux-2.6.12-rc2 |
111 |
} |
3af5b90bd [CRYPTO] all: Cle... |
112 |
static void __exit des_generic_mod_fini(void) |
1da177e4c Linux-2.6.12-rc2 |
113 |
{ |
9935e6d2f crypto: des - use... |
114 |
crypto_unregister_algs(des_algs, ARRAY_SIZE(des_algs)); |
1da177e4c Linux-2.6.12-rc2 |
115 |
} |
c4741b230 crypto: run initc... |
116 |
subsys_initcall(des_generic_mod_init); |
3af5b90bd [CRYPTO] all: Cle... |
117 |
module_exit(des_generic_mod_fini); |
1da177e4c Linux-2.6.12-rc2 |
118 119 120 |
MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("DES & Triple DES EDE Cipher Algorithms"); |
e1d5dea1d [CRYPTO] Add fast... |
121 |
MODULE_AUTHOR("Dag Arne Osvik <da@osvik.no>"); |
3e14dcf7c crypto: add missi... |
122 123 124 125 |
MODULE_ALIAS_CRYPTO("des"); MODULE_ALIAS_CRYPTO("des-generic"); MODULE_ALIAS_CRYPTO("des3_ede"); MODULE_ALIAS_CRYPTO("des3_ede-generic"); |