crypto: lib/sha256 - add sha256_value function
Subsystems (2)
PATCH 1/1 crypto: lib/sha256 - add sha256_value function
Add a function sha256_value() which accepts a string and store SHA256 hash of this string into dest.
Signed-off-by Chen Li <[email protected]>
--- include/crypto/sha2.h | 1 + lib/crypto/sha256.c | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+)
include/crypto/sha2.h +1 -0
@@ -115,6 +115,7 @@ static inline void sha256_init(struct sha256_state *sctx)void sha256_update (struct sha256_state *sctx,const u8 *data,unsigned int len);void sha256_final (struct sha256_state *sctx,u8 *out);void sha256 (const u8 *data,unsigned int len,u8 *out); +int sha256_value (u8 **dest,const u8 *src);static inline void sha224_init (struct sha256_state *sctx) {
lib/crypto/sha256.c +23 -0
@@ -13,6 +13,8 @@#include <linux/bitops.h> #include <linux/export.h> +#include <linux/mm.h> +#include <linux/slab.h> #include <linux/module.h> #include <linux/string.h> #include <crypto/sha2.h>
@@ -206,4 +208,25 @@ void sha256(const u8 *data, unsigned int len, u8 *out) }EXPORT_SYMBOL (sha256); +int sha256_value (u8 **dest,const u8 *src) +{ +u8 out[SHA256_DIGEST_SIZE ]; +int i, k; +unsigned char hex[2 ]; + + *dest =kvmalloc (sizeof (u8) * (SHA256_BLOCK_SIZE +1 ),GFP_KERNEL ); +if (ZERO_OR_NULL_PTR (*dest)) +return -ENOMEM ; +sha256 (src,strlen (src), out); + +for (i =0 , k =0 ; i <SHA256_DIGEST_SIZE ; i++) { +sprintf (hex,"%02x" , out[i]); + (*dest)[k++] = hex[0 ]; + (*dest)[k++] = hex[1 ]; + } + (*dest)[k] ='\0' ; +return 0 ; +} +EXPORT_SYMBOL (sha256_value); +MODULE_LICENSE ("GPL" );
Signature · 1 line
2.32.0.93.g670b81a890
Eric Biggers
maintainerQuoted 48 lines · Chen Li
Add a function
sha256_value()which accepts a string and store SHA256 hash of this string into dest.Signed-off-by Chen Li <[email protected]>--- include/crypto/sha2.h | 1 + lib/crypto/sha256.c | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+)include/crypto/sha2.h +1
-0@@ -115,6 +115,7 @@ static inline void sha256_init(struct sha256_state *sctx)void sha256_update (struct sha256_state *sctx,const u8 *data,unsigned int len);void sha256_final (struct sha256_state *sctx,u8 *out);void sha256 (const u8 *data,unsigned int len,u8 *out); +int sha256_value (u8 **dest,const u8 *src);static inline void sha224_init (struct sha256_state *sctx) {lib/crypto/sha256.c +12
-0@@ -13,6 +13,8 @@#include <linux/bitops.h> #include <linux/export.h> +#include <linux/mm.h> +#include <linux/slab.h> #include <linux/module.h> #include <linux/string.h> #include <crypto/sha2.h> @@ -206,4 +208,25 @@ void sha256(const u8 *data, unsigned int len, u8 *out) }EXPORT_SYMBOL (sha256); +int sha256_value (u8 **dest,const u8 *src) +{ +u8 out[SHA256_DIGEST_SIZE ]; +int i, k; +unsigned char hex[2 ]; + + *dest =kvmalloc (sizeof (u8) * (SHA256_BLOCK_SIZE +1 ),GFP_KERNEL ); +if (ZERO_OR_NULL_PTR (*dest)) +return -ENOMEM ; +sha256 (src,strlen (src), out);
lib/crypto/sha256.c void sha256(const u8 *data, unsigned int len, u8 *out) · line 230
Quoted 10 lines
lib/crypto/sha256.c +10
-0+ +for (i =0 , k =0 ; i <SHA256_DIGEST_SIZE ; i++) { +sprintf (hex,"%02x" , out[i]); + (*dest)[k++] = hex[0 ]; + (*dest)[k++] = hex[1 ]; + } + (*dest)[k] ='\0' ; +return 0 ; +} +EXPORT_SYMBOL (sha256_value);
You forgot to include something that actually calls this function.
Anyway, there should be no need for this. If you're trying to convert a SHA-256 hash value to a string, just use the %*phN printk format specifier which converts bytes to hex.
- Eric