Remove SHA3 references
[skeinsum.git] / skeinapi_ref.h
diff --git a/skeinapi_ref.h b/skeinapi_ref.h
new file mode 100644 (file)
index 0000000..9aa4fdb
--- /dev/null
@@ -0,0 +1,66 @@
+#ifndef _AHS_API_H_\r
+#define _AHS_API_H_\r
+\r
+/***********************************************************************\r
+**\r
+** Interface declarations of the AHS API using the Skein hash function.\r
+**\r
+** Source code author: Doug Whiting, 2008.\r
+**\r
+** This algorithm and source code is released to the public domain.\r
+** \r
+************************************************************************/\r
+\r
+#include "skein.h"\r
+\r
+typedef enum\r
+    {\r
+    SUCCESS     = SKEIN_SUCCESS,\r
+    FAIL        = SKEIN_FAIL,\r
+    BAD_HASHLEN = SKEIN_BAD_HASHLEN\r
+    }\r
+    HashReturn;\r
+\r
+typedef size_t   DataLength;                /* bit count  type */\r
+typedef u08b_t   BitSequence;               /* bit stream type */\r
+\r
+typedef struct\r
+    {\r
+    uint_t  statebits;                      /* 256, 512, or 1024 */\r
+    union\r
+        {\r
+        Skein_Ctxt_Hdr_t h;                 /* common header "overlay" */\r
+        Skein_256_Ctxt_t ctx_256;\r
+        Skein_512_Ctxt_t ctx_512;\r
+        Skein1024_Ctxt_t ctx1024;\r
+        } u;\r
+    }\r
+    hashState;\r
+\r
+/* "incremental" hashing API */\r
+HashReturn Init  (hashState *state, int hashbitlen);\r
+HashReturn Update(hashState *state, const BitSequence *data, DataLength databitlen);\r
+HashReturn Final (hashState *state,       BitSequence *hashval);\r
+\r
+/* "all-in-one" call */\r
+HashReturn Hash  (int hashbitlen,   const BitSequence *data, \r
+                  DataLength databitlen,  BitSequence *hashval);\r
+\r
+\r
+/*\r
+** Re-define the compile-time constants below to change the selection\r
+** of the Skein state size in the Init() function in skeinapi_ref.c.\r
+**\r
+** That is, the NIST API does not allow for explicit selection of the\r
+** Skein block size, so it must be done implicitly in the Init() function.\r
+** The selection is controlled by these constants.\r
+*/\r
+#ifndef SKEIN_256_NIST_MAX_HASHBITS\r
+#define SKEIN_256_NIST_MAX_HASHBITS (0)\r
+#endif\r
+\r
+#ifndef SKEIN_512_NIST_MAX_HASHBITS\r
+#define SKEIN_512_NIST_MAX_HASHBITS (512)\r
+#endif\r
+\r
+#endif  /* ifdef _AHS_API_H_ */\r