
Hi Akshay,
On Fri, Mar 1, 2013 at 8:16 AM, Akshay Saraswat akshay.s@samsung.com wrote:
ACE H/W acceleration support is added to hash which can be used to test SHA 256 hash algorithm.
Tested with command "hash sha256 0x40008000 0x2B 0x40009000". Used mm and md to write a standard string to memory location 0x40008000 and ran the above command to verify the output.
Change-Id: If76820057763e833a6150e55bffea3d010b86721 Signed-off-by: ARUN MANKUZHI arun.m@samsung.com Signed-off-by: Akshay Saraswat akshay.s@samsung.com
Changes sice v2: - Added new nodes for SHA1 and SHA256 in struct hash_algo for the case when ACE is enabled. - Added new declaration for function pointer hash_func_ws with different return type.
common/hash.c | 15 +++++++++++++++ include/hash.h | 5 +++++ 2 files changed, 20 insertions(+)
diff --git a/common/hash.c b/common/hash.c index e3a6e43..b8f9d29 100644 --- a/common/hash.c +++ b/common/hash.c @@ -28,12 +28,26 @@ #include <hash.h> #include <sha1.h> #include <sha256.h> +#include <ace_sha.h>
/*
- These are the hash algorithms we support. Chips which support accelerated
- crypto could perhaps add named version of these algorithms here.
*/ static struct hash_algo hash_algo[] = { +#ifdef CONFIG_EXYNOS_ACE_SHA
{
"SHA1",
Please use lower case here, since there is a pending patch that changes all these to lower case
SHA1_SUM_LEN,
ace_sha_hash_digest,
ACE_SHA_TYPE_SHA1,
}, {
"SHA256",
lower case
SHA256_SUM_LEN,
ace_sha_hash_digest,
ACE_SHA_TYPE_SHA256,
},
+#else
I don't think you need the #else. It is OK to have multiple SHA implements - the hash module will just use the first.
#ifdef CONFIG_SHA1 { "SHA1", @@ -50,6 +64,7 @@ static struct hash_algo hash_algo[] = { CHUNKSZ_SHA256, }, #endif +#endif };
/** diff --git a/include/hash.h b/include/hash.h index 34ba558..83e1fb6 100644 --- a/include/hash.h +++ b/include/hash.h @@ -40,8 +40,13 @@ struct hash_algo { * @output: Checksum result (length depends on algorithm) * @chunk_sz: Trigger watchdog after processing this many bytes */ +#ifdef CONFIG_EXYNOS_ACE_SHA
int (*hash_func_ws)(const unsigned char *input, unsigned int ilen,
unsigned char *output, unsigned int chunk_sz);
Hmmm you can't do that :-) Let's change hash_func_ws to return an integer. You should create a separate patch to change over existing functions (sha1, sha256) to return 0. Then this patch doesn't need the #ifdef.
+#else void (*hash_func_ws)(const unsigned char *input, unsigned int ilen, unsigned char *output, unsigned int chunk_sz); +#endif int chunk_size; /* Watchdog chunk size */ };
-- 1.8.0
Regards, Simon