Blame view
crypto/des_generic.c
3.39 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 |
} |
04007b0e6 crypto: des - spl... |
31 32 33 34 35 |
if (err) { memset(dctx, 0, sizeof(*dctx)); crypto_tfm_set_flags(tfm, CRYPTO_TFM_RES_WEAK_KEY); } return err; |
1da177e4c Linux-2.6.12-rc2 |
36 |
} |
04007b0e6 crypto: des - spl... |
37 |
static void crypto_des_encrypt(struct crypto_tfm *tfm, u8 *dst, const u8 *src) |
1da177e4c Linux-2.6.12-rc2 |
38 |
{ |
04007b0e6 crypto: des - spl... |
39 |
const struct des_ctx *dctx = crypto_tfm_ctx(tfm); |
e1d5dea1d [CRYPTO] Add fast... |
40 |
|
04007b0e6 crypto: des - spl... |
41 |
des_encrypt(dctx, dst, src); |
1da177e4c Linux-2.6.12-rc2 |
42 |
} |
04007b0e6 crypto: des - spl... |
43 |
static void crypto_des_decrypt(struct crypto_tfm *tfm, u8 *dst, const u8 *src) |
1da177e4c Linux-2.6.12-rc2 |
44 |
{ |
04007b0e6 crypto: des - spl... |
45 |
const struct des_ctx *dctx = crypto_tfm_ctx(tfm); |
e1d5dea1d [CRYPTO] Add fast... |
46 |
|
04007b0e6 crypto: des - spl... |
47 |
des_decrypt(dctx, dst, src); |
1da177e4c Linux-2.6.12-rc2 |
48 |
} |
6574e6c64 crypto: des_3des ... |
49 50 51 52 |
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... |
53 |
int err; |
04007b0e6 crypto: des - spl... |
54 55 56 57 58 59 60 |
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; } |
6574e6c64 crypto: des_3des ... |
61 |
|
04007b0e6 crypto: des - spl... |
62 63 64 65 66 |
if (err) { memset(dctx, 0, sizeof(*dctx)); crypto_tfm_set_flags(tfm, CRYPTO_TFM_RES_WEAK_KEY); } return err; |
6574e6c64 crypto: des_3des ... |
67 |
} |
1da177e4c Linux-2.6.12-rc2 |
68 |
|
04007b0e6 crypto: des - spl... |
69 70 |
static void crypto_des3_ede_encrypt(struct crypto_tfm *tfm, u8 *dst, const u8 *src) |
1da177e4c Linux-2.6.12-rc2 |
71 |
{ |
04007b0e6 crypto: des - spl... |
72 |
const struct des3_ede_ctx *dctx = crypto_tfm_ctx(tfm); |
e1d5dea1d [CRYPTO] Add fast... |
73 |
|
04007b0e6 crypto: des - spl... |
74 |
des3_ede_encrypt(dctx, dst, src); |
1da177e4c Linux-2.6.12-rc2 |
75 |
} |
04007b0e6 crypto: des - spl... |
76 77 |
static void crypto_des3_ede_decrypt(struct crypto_tfm *tfm, u8 *dst, const u8 *src) |
1da177e4c Linux-2.6.12-rc2 |
78 |
{ |
04007b0e6 crypto: des - spl... |
79 |
const struct des3_ede_ctx *dctx = crypto_tfm_ctx(tfm); |
1da177e4c Linux-2.6.12-rc2 |
80 |
|
04007b0e6 crypto: des - spl... |
81 |
des3_ede_decrypt(dctx, dst, src); |
1da177e4c Linux-2.6.12-rc2 |
82 |
} |
9935e6d2f crypto: des - use... |
83 |
static struct crypto_alg des_algs[2] = { { |
1da177e4c Linux-2.6.12-rc2 |
84 |
.cra_name = "des", |
6574e6c64 crypto: des_3des ... |
85 86 |
.cra_driver_name = "des-generic", .cra_priority = 100, |
1da177e4c Linux-2.6.12-rc2 |
87 88 89 90 |
.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 |
91 92 93 |
.cra_u = { .cipher = { .cia_min_keysize = DES_KEY_SIZE, .cia_max_keysize = DES_KEY_SIZE, |
e1d5dea1d [CRYPTO] Add fast... |
94 |
.cia_setkey = des_setkey, |
04007b0e6 crypto: des - spl... |
95 96 |
.cia_encrypt = crypto_des_encrypt, .cia_decrypt = crypto_des_decrypt } } |
9935e6d2f crypto: des - use... |
97 |
}, { |
1da177e4c Linux-2.6.12-rc2 |
98 |
.cra_name = "des3_ede", |
6574e6c64 crypto: des_3des ... |
99 100 |
.cra_driver_name = "des3_ede-generic", .cra_priority = 100, |
1da177e4c Linux-2.6.12-rc2 |
101 102 103 104 |
.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 |
105 106 107 |
.cra_u = { .cipher = { .cia_min_keysize = DES3_EDE_KEY_SIZE, .cia_max_keysize = DES3_EDE_KEY_SIZE, |
e1d5dea1d [CRYPTO] Add fast... |
108 |
.cia_setkey = des3_ede_setkey, |
04007b0e6 crypto: des - spl... |
109 110 |
.cia_encrypt = crypto_des3_ede_encrypt, .cia_decrypt = crypto_des3_ede_decrypt } } |
9935e6d2f crypto: des - use... |
111 |
} }; |
1da177e4c Linux-2.6.12-rc2 |
112 |
|
3af5b90bd [CRYPTO] all: Cle... |
113 |
static int __init des_generic_mod_init(void) |
1da177e4c Linux-2.6.12-rc2 |
114 |
{ |
9935e6d2f crypto: des - use... |
115 |
return crypto_register_algs(des_algs, ARRAY_SIZE(des_algs)); |
1da177e4c Linux-2.6.12-rc2 |
116 |
} |
3af5b90bd [CRYPTO] all: Cle... |
117 |
static void __exit des_generic_mod_fini(void) |
1da177e4c Linux-2.6.12-rc2 |
118 |
{ |
9935e6d2f crypto: des - use... |
119 |
crypto_unregister_algs(des_algs, ARRAY_SIZE(des_algs)); |
1da177e4c Linux-2.6.12-rc2 |
120 |
} |
c4741b230 crypto: run initc... |
121 |
subsys_initcall(des_generic_mod_init); |
3af5b90bd [CRYPTO] all: Cle... |
122 |
module_exit(des_generic_mod_fini); |
1da177e4c Linux-2.6.12-rc2 |
123 124 125 |
MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("DES & Triple DES EDE Cipher Algorithms"); |
e1d5dea1d [CRYPTO] Add fast... |
126 |
MODULE_AUTHOR("Dag Arne Osvik <da@osvik.no>"); |
3e14dcf7c crypto: add missi... |
127 128 129 130 |
MODULE_ALIAS_CRYPTO("des"); MODULE_ALIAS_CRYPTO("des-generic"); MODULE_ALIAS_CRYPTO("des3_ede"); MODULE_ALIAS_CRYPTO("des3_ede-generic"); |