summaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorJean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>2015-03-11 17:53:09 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2015-03-13 08:32:28 +0100
commit102d59f91fdd327c68c1b7a8c43f3f4685422f52 (patch)
treec000562ea082fd45641872c6b3e016ad3a4852e0 /crypto
parent2f3c3f512b2ff5023a4177e167eb6b55055fe883 (diff)
downloadbarebox-102d59f91fdd327c68c1b7a8c43f3f4685422f52.tar.gz
barebox-102d59f91fdd327c68c1b7a8c43f3f4685422f52.tar.xz
command: add hmac sum supportfor md5, sha1, sha224, sha256, sha384, sha512
pass the key via -h param barebox@barebox sandbox:/ sha256sum -h test /dev/fd0 c297473e9bb221c5dc51d47ad75c76095f1bdc4ca9dff1d5931c2e22bf11a0de /dev/fd0 0x00000000 ... 0xffffffffffffffff use the same idea as openssl command $ openssl dgst -sha256 -hmac "test" TODO HMAC-SHA256(TODO)= c297473e9bb221c5dc51d47ad75c76095f1bdc4ca9dff1d5931c2e22bf11a0de Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'crypto')
-rw-r--r--crypto/digest.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/crypto/digest.c b/crypto/digest.c
index 65224bdbcf..2f2039c0ce 100644
--- a/crypto/digest.c
+++ b/crypto/digest.c
@@ -116,6 +116,7 @@ void digest_free(struct digest *d)
EXPORT_SYMBOL_GPL(digest_free);
int digest_file_window(struct digest *d, char *filename,
+ unsigned char *key, size_t keylen,
unsigned char *hash,
ulong start, ulong size)
{
@@ -124,6 +125,9 @@ int digest_file_window(struct digest *d, char *filename,
unsigned char *buf;
int flags = 0;
+ if (key)
+ digest_set_key(d, key, keylen);
+
digest_init(d);
fd = open(filename, O_RDONLY);
@@ -186,6 +190,7 @@ out:
EXPORT_SYMBOL_GPL(digest_file_window);
int digest_file(struct digest *d, char *filename,
+ unsigned char *key, size_t keylen,
unsigned char *hash)
{
struct stat st;
@@ -196,11 +201,12 @@ int digest_file(struct digest *d, char *filename,
if (ret < 0)
return ret;
- return digest_file_window(d, filename, hash, 0, st.st_size);
+ return digest_file_window(d, filename, key, keylen, hash, 0, st.st_size);
}
EXPORT_SYMBOL_GPL(digest_file);
int digest_file_by_name(char *algo, char *filename,
+ unsigned char *key, size_t keylen,
unsigned char *hash)
{
struct digest *d;
@@ -210,7 +216,7 @@ int digest_file_by_name(char *algo, char *filename,
if (!d)
return -EIO;
- ret = digest_file(d, filename, hash);
+ ret = digest_file(d, filename, key, keylen, hash);
digest_free(d);
return ret;
}