summaryrefslogtreecommitdiffstats
path: root/arch/s390/crypto/sha.h
diff options
context:
space:
mode:
authorJan Glauber <jang@linux.vnet.ibm.com>2008-03-06 19:50:20 +0800
committerHerbert Xu <herbert@gondor.apana.org.au>2008-04-21 10:19:11 +0800
commit604973f1fe41b817c1badb3df2008fe641e50ae6 (patch)
treedca1cf2234a9d8178e45952f4ff0e95f386def5c /arch/s390/crypto/sha.h
parent607424d8583365418a337aa51e83403c8bd213ed (diff)
downloadlinux-604973f1fe41b817c1badb3df2008fe641e50ae6.tar.bz2
[CRYPTO] s390: Generic sha_update and sha_final
The sha_{update|final} functions are similar for every sha variant. Since that is error-prone and redundant replace these functions by a shared generic implementation for s390. Signed-off-by: Jan Glauber <jang@linux.vnet.ibm.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'arch/s390/crypto/sha.h')
-rw-r--r--arch/s390/crypto/sha.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/arch/s390/crypto/sha.h b/arch/s390/crypto/sha.h
new file mode 100644
index 000000000000..b7a52ab5db97
--- /dev/null
+++ b/arch/s390/crypto/sha.h
@@ -0,0 +1,34 @@
+/*
+ * Cryptographic API.
+ *
+ * s390 generic implementation of the SHA Secure Hash Algorithms.
+ *
+ * Copyright IBM Corp. 2007
+ * Author(s): Jan Glauber (jang@de.ibm.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_ARCH_S390_SHA_H
+#define _CRYPTO_ARCH_S390_SHA_H
+
+#include <linux/crypto.h>
+#include <crypto/sha.h>
+
+/* must be big enough for the largest SHA variant */
+#define SHA_MAX_BLOCK_SIZE SHA256_BLOCK_SIZE
+
+struct s390_sha_ctx {
+ u64 count; /* message length in bytes */
+ u32 state[8];
+ u8 buf[2 * SHA_MAX_BLOCK_SIZE];
+ int func; /* KIMD function to use */
+};
+
+void s390_sha_update(struct crypto_tfm *tfm, const u8 *data, unsigned int len);
+void s390_sha_final(struct crypto_tfm *tfm, u8 *out);
+
+#endif