diff options
author | Dmitry Kasatkin <d.kasatkin@samsung.com> | 2013-05-06 08:40:01 -0400 |
---|---|---|
committer | Mimi Zohar <zohar@linux.vnet.ibm.com> | 2013-10-25 17:14:03 -0400 |
commit | ee08997fee16f10be23c9748d609dbdf3baab8e4 (patch) | |
tree | 30c2d08bc5e5048558f7b8950a268409360c57e5 | |
parent | 08de59eb144d7c41351a467442f898d720f0f15f (diff) |
crypto: provide single place for hash algo information
This patch provides a single place for information about hash algorithms,
such as hash sizes and kernel driver names, which will be used by IMA
and the public key code.
Changelog:
- Fix sparse and checkpatch warnings
- Move hash algo enums to uapi for userspace signing functions.
Signed-off-by: Dmitry Kasatkin <d.kasatkin@samsung.com>
Signed-off-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
-rw-r--r-- | crypto/Kconfig | 3 | ||||
-rw-r--r-- | crypto/Makefile | 1 | ||||
-rw-r--r-- | crypto/hash_info.c | 56 | ||||
-rw-r--r-- | include/crypto/hash_info.h | 40 | ||||
-rw-r--r-- | include/uapi/linux/hash_info.h | 37 |
5 files changed, 137 insertions, 0 deletions
diff --git a/crypto/Kconfig b/crypto/Kconfig index 69ce573f1224..ba061b091d9f 100644 --- a/crypto/Kconfig +++ b/crypto/Kconfig | |||
@@ -1386,6 +1386,9 @@ config CRYPTO_USER_API_SKCIPHER | |||
1386 | This option enables the user-spaces interface for symmetric | 1386 | This option enables the user-spaces interface for symmetric |
1387 | key cipher algorithms. | 1387 | key cipher algorithms. |
1388 | 1388 | ||
1389 | config CRYPTO_HASH_INFO | ||
1390 | bool | ||
1391 | |||
1389 | source "drivers/crypto/Kconfig" | 1392 | source "drivers/crypto/Kconfig" |
1390 | source crypto/asymmetric_keys/Kconfig | 1393 | source crypto/asymmetric_keys/Kconfig |
1391 | 1394 | ||
diff --git a/crypto/Makefile b/crypto/Makefile index 80019ba8da3a..b3a7e807e08b 100644 --- a/crypto/Makefile +++ b/crypto/Makefile | |||
@@ -104,3 +104,4 @@ obj-$(CONFIG_CRYPTO_USER_API_SKCIPHER) += algif_skcipher.o | |||
104 | obj-$(CONFIG_XOR_BLOCKS) += xor.o | 104 | obj-$(CONFIG_XOR_BLOCKS) += xor.o |
105 | obj-$(CONFIG_ASYNC_CORE) += async_tx/ | 105 | obj-$(CONFIG_ASYNC_CORE) += async_tx/ |
106 | obj-$(CONFIG_ASYMMETRIC_KEY_TYPE) += asymmetric_keys/ | 106 | obj-$(CONFIG_ASYMMETRIC_KEY_TYPE) += asymmetric_keys/ |
107 | obj-$(CONFIG_CRYPTO_HASH_INFO) += hash_info.o | ||
diff --git a/crypto/hash_info.c b/crypto/hash_info.c new file mode 100644 index 000000000000..3e7ff46f26e8 --- /dev/null +++ b/crypto/hash_info.c | |||
@@ -0,0 +1,56 @@ | |||
1 | /* | ||
2 | * Hash Info: Hash algorithms information | ||
3 | * | ||
4 | * Copyright (c) 2013 Dmitry Kasatkin <d.kasatkin@samsung.com> | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify it | ||
7 | * under the terms of the GNU General Public License as published by the Free | ||
8 | * Software Foundation; either version 2 of the License, or (at your option) | ||
9 | * any later version. | ||
10 | * | ||
11 | */ | ||
12 | |||
13 | #include <linux/export.h> | ||
14 | #include <crypto/hash_info.h> | ||
15 | |||
16 | const char *const hash_algo_name[HASH_ALGO__LAST] = { | ||
17 | [HASH_ALGO_MD4] = "md4", | ||
18 | [HASH_ALGO_MD5] = "md5", | ||
19 | [HASH_ALGO_SHA1] = "sha1", | ||
20 | [HASH_ALGO_RIPE_MD_160] = "rmd160", | ||
21 | [HASH_ALGO_SHA256] = "sha256", | ||
22 | [HASH_ALGO_SHA384] = "sha384", | ||
23 | [HASH_ALGO_SHA512] = "sha512", | ||
24 | [HASH_ALGO_SHA224] = "sha224", | ||
25 | [HASH_ALGO_RIPE_MD_128] = "rmd128", | ||
26 | [HASH_ALGO_RIPE_MD_256] = "rmd256", | ||
27 | [HASH_ALGO_RIPE_MD_320] = "rmd320", | ||
28 | [HASH_ALGO_WP_256] = "wp256", | ||
29 | [HASH_ALGO_WP_384] = "wp384", | ||
30 | [HASH_ALGO_WP_512] = "wp512", | ||
31 | [HASH_ALGO_TGR_128] = "tgr128", | ||
32 | [HASH_ALGO_TGR_160] = "tgr160", | ||
33 | [HASH_ALGO_TGR_192] = "tgr192", | ||
34 | }; | ||
35 | EXPORT_SYMBOL_GPL(hash_algo_name); | ||
36 | |||
37 | const int hash_digest_size[HASH_ALGO__LAST] = { | ||
38 | [HASH_ALGO_MD4] = MD5_DIGEST_SIZE, | ||
39 | [HASH_ALGO_MD5] = MD5_DIGEST_SIZE, | ||
40 | [HASH_ALGO_SHA1] = SHA1_DIGEST_SIZE, | ||
41 | [HASH_ALGO_RIPE_MD_160] = RMD160_DIGEST_SIZE, | ||
42 | [HASH_ALGO_SHA256] = SHA256_DIGEST_SIZE, | ||
43 | [HASH_ALGO_SHA384] = SHA384_DIGEST_SIZE, | ||
44 | [HASH_ALGO_SHA512] = SHA512_DIGEST_SIZE, | ||
45 | [HASH_ALGO_SHA224] = SHA224_DIGEST_SIZE, | ||
46 | [HASH_ALGO_RIPE_MD_128] = RMD128_DIGEST_SIZE, | ||
47 | [HASH_ALGO_RIPE_MD_256] = RMD256_DIGEST_SIZE, | ||
48 | [HASH_ALGO_RIPE_MD_320] = RMD320_DIGEST_SIZE, | ||
49 | [HASH_ALGO_WP_256] = WP256_DIGEST_SIZE, | ||
50 | [HASH_ALGO_WP_384] = WP384_DIGEST_SIZE, | ||
51 | [HASH_ALGO_WP_512] = WP512_DIGEST_SIZE, | ||
52 | [HASH_ALGO_TGR_128] = TGR128_DIGEST_SIZE, | ||
53 | [HASH_ALGO_TGR_160] = TGR160_DIGEST_SIZE, | ||
54 | [HASH_ALGO_TGR_192] = TGR192_DIGEST_SIZE, | ||
55 | }; | ||
56 | EXPORT_SYMBOL_GPL(hash_digest_size); | ||
diff --git a/include/crypto/hash_info.h b/include/crypto/hash_info.h new file mode 100644 index 000000000000..e1e5a3e5dd1b --- /dev/null +++ b/include/crypto/hash_info.h | |||
@@ -0,0 +1,40 @@ | |||
1 | /* | ||
2 | * Hash Info: Hash algorithms information | ||
3 | * | ||
4 | * Copyright (c) 2013 Dmitry Kasatkin <d.kasatkin@samsung.com> | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify it | ||
7 | * under the terms of the GNU General Public License as published by the Free | ||
8 | * Software Foundation; either version 2 of the License, or (at your option) | ||
9 | * any later version. | ||
10 | * | ||
11 | */ | ||
12 | |||
13 | #ifndef _CRYPTO_HASH_INFO_H | ||
14 | #define _CRYPTO_HASH_INFO_H | ||
15 | |||
16 | #include <crypto/sha.h> | ||
17 | #include <crypto/md5.h> | ||
18 | |||
19 | #include <uapi/linux/hash_info.h> | ||
20 | |||
21 | /* not defined in include/crypto/ */ | ||
22 | #define RMD128_DIGEST_SIZE 16 | ||
23 | #define RMD160_DIGEST_SIZE 20 | ||
24 | #define RMD256_DIGEST_SIZE 32 | ||
25 | #define RMD320_DIGEST_SIZE 40 | ||
26 | |||
27 | /* not defined in include/crypto/ */ | ||
28 | #define WP512_DIGEST_SIZE 64 | ||
29 | #define WP384_DIGEST_SIZE 48 | ||
30 | #define WP256_DIGEST_SIZE 32 | ||
31 | |||
32 | /* not defined in include/crypto/ */ | ||
33 | #define TGR128_DIGEST_SIZE 16 | ||
34 | #define TGR160_DIGEST_SIZE 20 | ||
35 | #define TGR192_DIGEST_SIZE 24 | ||
36 | |||
37 | extern const char *const hash_algo_name[HASH_ALGO__LAST]; | ||
38 | extern const int hash_digest_size[HASH_ALGO__LAST]; | ||
39 | |||
40 | #endif /* _CRYPTO_HASH_INFO_H */ | ||
diff --git a/include/uapi/linux/hash_info.h b/include/uapi/linux/hash_info.h new file mode 100644 index 000000000000..ca18c45f8304 --- /dev/null +++ b/include/uapi/linux/hash_info.h | |||
@@ -0,0 +1,37 @@ | |||
1 | /* | ||
2 | * Hash Info: Hash algorithms information | ||
3 | * | ||
4 | * Copyright (c) 2013 Dmitry Kasatkin <d.kasatkin@samsung.com> | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify it | ||
7 | * under the terms of the GNU General Public License as published by the Free | ||
8 | * Software Foundation; either version 2 of the License, or (at your option) | ||
9 | * any later version. | ||
10 | * | ||
11 | */ | ||
12 | |||
13 | #ifndef _UAPI_LINUX_HASH_INFO_H | ||
14 | #define _UAPI_LINUX_HASH_INFO_H | ||
15 | |||
16 | enum hash_algo { | ||
17 | HASH_ALGO_MD4, | ||
18 | HASH_ALGO_MD5, | ||
19 | HASH_ALGO_SHA1, | ||
20 | HASH_ALGO_RIPE_MD_160, | ||
21 | HASH_ALGO_SHA256, | ||
22 | HASH_ALGO_SHA384, | ||
23 | HASH_ALGO_SHA512, | ||
24 | HASH_ALGO_SHA224, | ||
25 | HASH_ALGO_RIPE_MD_128, | ||
26 | HASH_ALGO_RIPE_MD_256, | ||
27 | HASH_ALGO_RIPE_MD_320, | ||
28 | HASH_ALGO_WP_256, | ||
29 | HASH_ALGO_WP_384, | ||
30 | HASH_ALGO_WP_512, | ||
31 | HASH_ALGO_TGR_128, | ||
32 | HASH_ALGO_TGR_160, | ||
33 | HASH_ALGO_TGR_192, | ||
34 | HASH_ALGO__LAST | ||
35 | }; | ||
36 | |||
37 | #endif /* _UAPI_LINUX_HASH_INFO_H */ | ||