summaryrefslogtreecommitdiffstats
path: root/wsutil/sober128.h
diff options
context:
space:
mode:
Diffstat (limited to 'wsutil/sober128.h')
-rw-r--r--wsutil/sober128.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/wsutil/sober128.h b/wsutil/sober128.h
new file mode 100644
index 00000000..0238f0ef
--- /dev/null
+++ b/wsutil/sober128.h
@@ -0,0 +1,48 @@
+/** @file
+ This file is derived from sober128 implementation in corosync
+ cluster engine. corosync cluster engine borrows the implementation
+ from LibTomCrypt.
+
+ The latest version of the original code can be found at
+ http://www.libtom.net/LibTomCrypt/ according to which this code is in the
+ Public Domain
+*/
+
+/* About LibTomCrypt:
+ * ---------------------------------------------------------------------
+ * LibTomCrypt, modular cryptographic library -- Tom St Denis
+ *
+ * LibTomCrypt is a library that provides various cryptographic
+ * algorithms in a highly modular and flexible manner.
+ *
+ * The library is free for all purposes without any express
+ * guarantee it works.
+ *
+ * Tom St Denis, tomstdenis@iahu.ca, http://www.libtom.net/LibTomCrypt/
+ */
+
+#ifndef _SOBER127_H
+#define _SOBER127_H
+
+#include "ws_symbol_export.h"
+
+typedef struct _sober128_prng {
+ unsigned long R[17], /* Working storage for the shift register */
+ initR[17], /* saved register contents */
+ konst, /* key dependent constant */
+ sbuf; /* partial word encryption buffer */
+
+ int nbuf, /* number of part-word stream bits buffered */
+ flag, /* first add_entropy call or not? */
+ set; /* did we call add_entropy to set key? */
+
+} sober128_prng;
+
+WS_DLL_PUBLIC
+int sober128_start(sober128_prng *prng);
+WS_DLL_PUBLIC
+int sober128_add_entropy(const unsigned char *buf, unsigned long len, sober128_prng *prng);
+WS_DLL_PUBLIC
+unsigned long sober128_read(unsigned char *buf, unsigned long len, sober128_prng *prng);
+
+#endif /* sober128.h */