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>
This commit is contained in:
		
					parent
					
						
							
								08de59eb14
							
						
					
				
			
			
				commit
				
					
						ee08997fee
					
				
			
		
					 5 changed files with 137 additions and 0 deletions
				
			
		|  | @ -1386,6 +1386,9 @@ config CRYPTO_USER_API_SKCIPHER | |||
| 	  This option enables the user-spaces interface for symmetric | ||||
| 	  key cipher algorithms. | ||||
| 
 | ||||
| config CRYPTO_HASH_INFO | ||||
| 	bool | ||||
| 
 | ||||
| source "drivers/crypto/Kconfig" | ||||
| source crypto/asymmetric_keys/Kconfig | ||||
| 
 | ||||
|  |  | |||
|  | @ -104,3 +104,4 @@ obj-$(CONFIG_CRYPTO_USER_API_SKCIPHER) += algif_skcipher.o | |||
| obj-$(CONFIG_XOR_BLOCKS) += xor.o | ||||
| obj-$(CONFIG_ASYNC_CORE) += async_tx/ | ||||
| obj-$(CONFIG_ASYMMETRIC_KEY_TYPE) += asymmetric_keys/ | ||||
| obj-$(CONFIG_CRYPTO_HASH_INFO) += hash_info.o | ||||
|  |  | |||
							
								
								
									
										56
									
								
								crypto/hash_info.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								crypto/hash_info.c
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,56 @@ | |||
| /*
 | ||||
|  * Hash Info: Hash algorithms information | ||||
|  * | ||||
|  * Copyright (c) 2013 Dmitry Kasatkin <d.kasatkin@samsung.com> | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or modify it | ||||
|  * under the terms of the GNU General Public License as published by the Free | ||||
|  * Software Foundation; either version 2 of the License, or (at your option) | ||||
|  * any later version. | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/export.h> | ||||
| #include <crypto/hash_info.h> | ||||
| 
 | ||||
| const char *const hash_algo_name[HASH_ALGO__LAST] = { | ||||
| 	[HASH_ALGO_MD4]		= "md4", | ||||
| 	[HASH_ALGO_MD5]		= "md5", | ||||
| 	[HASH_ALGO_SHA1]	= "sha1", | ||||
| 	[HASH_ALGO_RIPE_MD_160]	= "rmd160", | ||||
| 	[HASH_ALGO_SHA256]	= "sha256", | ||||
| 	[HASH_ALGO_SHA384]	= "sha384", | ||||
| 	[HASH_ALGO_SHA512]	= "sha512", | ||||
| 	[HASH_ALGO_SHA224]	= "sha224", | ||||
| 	[HASH_ALGO_RIPE_MD_128]	= "rmd128", | ||||
| 	[HASH_ALGO_RIPE_MD_256]	= "rmd256", | ||||
| 	[HASH_ALGO_RIPE_MD_320]	= "rmd320", | ||||
| 	[HASH_ALGO_WP_256]	= "wp256", | ||||
| 	[HASH_ALGO_WP_384]	= "wp384", | ||||
| 	[HASH_ALGO_WP_512]	= "wp512", | ||||
| 	[HASH_ALGO_TGR_128]	= "tgr128", | ||||
| 	[HASH_ALGO_TGR_160]	= "tgr160", | ||||
| 	[HASH_ALGO_TGR_192]	= "tgr192", | ||||
| }; | ||||
| EXPORT_SYMBOL_GPL(hash_algo_name); | ||||
| 
 | ||||
| const int hash_digest_size[HASH_ALGO__LAST] = { | ||||
| 	[HASH_ALGO_MD4]		= MD5_DIGEST_SIZE, | ||||
| 	[HASH_ALGO_MD5]		= MD5_DIGEST_SIZE, | ||||
| 	[HASH_ALGO_SHA1]	= SHA1_DIGEST_SIZE, | ||||
| 	[HASH_ALGO_RIPE_MD_160]	= RMD160_DIGEST_SIZE, | ||||
| 	[HASH_ALGO_SHA256]	= SHA256_DIGEST_SIZE, | ||||
| 	[HASH_ALGO_SHA384]	= SHA384_DIGEST_SIZE, | ||||
| 	[HASH_ALGO_SHA512]	= SHA512_DIGEST_SIZE, | ||||
| 	[HASH_ALGO_SHA224]	= SHA224_DIGEST_SIZE, | ||||
| 	[HASH_ALGO_RIPE_MD_128]	= RMD128_DIGEST_SIZE, | ||||
| 	[HASH_ALGO_RIPE_MD_256]	= RMD256_DIGEST_SIZE, | ||||
| 	[HASH_ALGO_RIPE_MD_320]	= RMD320_DIGEST_SIZE, | ||||
| 	[HASH_ALGO_WP_256]	= WP256_DIGEST_SIZE, | ||||
| 	[HASH_ALGO_WP_384]	= WP384_DIGEST_SIZE, | ||||
| 	[HASH_ALGO_WP_512]	= WP512_DIGEST_SIZE, | ||||
| 	[HASH_ALGO_TGR_128]	= TGR128_DIGEST_SIZE, | ||||
| 	[HASH_ALGO_TGR_160]	= TGR160_DIGEST_SIZE, | ||||
| 	[HASH_ALGO_TGR_192]	= TGR192_DIGEST_SIZE, | ||||
| }; | ||||
| EXPORT_SYMBOL_GPL(hash_digest_size); | ||||
							
								
								
									
										40
									
								
								include/crypto/hash_info.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								include/crypto/hash_info.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,40 @@ | |||
| /*
 | ||||
|  * Hash Info: Hash algorithms information | ||||
|  * | ||||
|  * Copyright (c) 2013 Dmitry Kasatkin <d.kasatkin@samsung.com> | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or modify it | ||||
|  * under the terms of the GNU General Public License as published by the Free | ||||
|  * Software Foundation; either version 2 of the License, or (at your option) | ||||
|  * any later version. | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| #ifndef _CRYPTO_HASH_INFO_H | ||||
| #define _CRYPTO_HASH_INFO_H | ||||
| 
 | ||||
| #include <crypto/sha.h> | ||||
| #include <crypto/md5.h> | ||||
| 
 | ||||
| #include <uapi/linux/hash_info.h> | ||||
| 
 | ||||
| /* not defined in include/crypto/ */ | ||||
| #define RMD128_DIGEST_SIZE      16 | ||||
| #define RMD160_DIGEST_SIZE	20 | ||||
| #define RMD256_DIGEST_SIZE      32 | ||||
| #define RMD320_DIGEST_SIZE      40 | ||||
| 
 | ||||
| /* not defined in include/crypto/ */ | ||||
| #define WP512_DIGEST_SIZE	64 | ||||
| #define WP384_DIGEST_SIZE	48 | ||||
| #define WP256_DIGEST_SIZE	32 | ||||
| 
 | ||||
| /* not defined in include/crypto/ */ | ||||
| #define TGR128_DIGEST_SIZE 16 | ||||
| #define TGR160_DIGEST_SIZE 20 | ||||
| #define TGR192_DIGEST_SIZE 24 | ||||
| 
 | ||||
| extern const char *const hash_algo_name[HASH_ALGO__LAST]; | ||||
| extern const int hash_digest_size[HASH_ALGO__LAST]; | ||||
| 
 | ||||
| #endif /* _CRYPTO_HASH_INFO_H */ | ||||
							
								
								
									
										37
									
								
								include/uapi/linux/hash_info.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								include/uapi/linux/hash_info.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,37 @@ | |||
| /*
 | ||||
|  * Hash Info: Hash algorithms information | ||||
|  * | ||||
|  * Copyright (c) 2013 Dmitry Kasatkin <d.kasatkin@samsung.com> | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or modify it | ||||
|  * under the terms of the GNU General Public License as published by the Free | ||||
|  * Software Foundation; either version 2 of the License, or (at your option) | ||||
|  * any later version. | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| #ifndef _UAPI_LINUX_HASH_INFO_H | ||||
| #define _UAPI_LINUX_HASH_INFO_H | ||||
| 
 | ||||
| enum hash_algo { | ||||
| 	HASH_ALGO_MD4, | ||||
| 	HASH_ALGO_MD5, | ||||
| 	HASH_ALGO_SHA1, | ||||
| 	HASH_ALGO_RIPE_MD_160, | ||||
| 	HASH_ALGO_SHA256, | ||||
| 	HASH_ALGO_SHA384, | ||||
| 	HASH_ALGO_SHA512, | ||||
| 	HASH_ALGO_SHA224, | ||||
| 	HASH_ALGO_RIPE_MD_128, | ||||
| 	HASH_ALGO_RIPE_MD_256, | ||||
| 	HASH_ALGO_RIPE_MD_320, | ||||
| 	HASH_ALGO_WP_256, | ||||
| 	HASH_ALGO_WP_384, | ||||
| 	HASH_ALGO_WP_512, | ||||
| 	HASH_ALGO_TGR_128, | ||||
| 	HASH_ALGO_TGR_160, | ||||
| 	HASH_ALGO_TGR_192, | ||||
| 	HASH_ALGO__LAST | ||||
| }; | ||||
| 
 | ||||
| #endif /* _UAPI_LINUX_HASH_INFO_H */ | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Dmitry Kasatkin
				Dmitry Kasatkin