diff mycrypt_prng.h @ 0:d7da3b1e1540 libtomcrypt

put back the 0.95 makefile which was inadvertently merged over
author Matt Johnston <matt@ucc.asn.au>
date Mon, 31 May 2004 18:21:40 +0000
parents
children 5d99163f7e32
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mycrypt_prng.h	Mon May 31 18:21:40 2004 +0000
@@ -0,0 +1,66 @@
+/* ---- PRNG Stuff ---- */
+struct yarrow_prng {
+    int                   cipher, hash;
+    unsigned char         pool[MAXBLOCKSIZE];
+    symmetric_CTR         ctr;
+};
+
+struct rc4_prng {
+    int x, y;
+    unsigned char buf[256];
+};
+
+typedef union Prng_state {
+    struct yarrow_prng    yarrow;
+    struct rc4_prng       rc4;
+} prng_state;
+
+extern struct _prng_descriptor {
+    char *name;
+    int (*start)(prng_state *);
+    int (*add_entropy)(const unsigned char *, unsigned long, prng_state *);
+    int (*ready)(prng_state *);
+    unsigned long (*read)(unsigned char *, unsigned long len, prng_state *);
+} prng_descriptor[];
+
+#ifdef YARROW
+extern int yarrow_start(prng_state *prng);
+extern int yarrow_add_entropy(const unsigned char *buf, unsigned long len, prng_state *prng);
+extern int yarrow_ready(prng_state *prng);
+extern unsigned long yarrow_read(unsigned char *buf, unsigned long len, prng_state *prng);
+extern const struct _prng_descriptor yarrow_desc;
+#endif
+
+#ifdef RC4
+extern int rc4_start(prng_state *prng);
+extern int rc4_add_entropy(const unsigned char *buf, unsigned long len, prng_state *prng);
+extern int rc4_ready(prng_state *prng);
+extern unsigned long rc4_read(unsigned char *buf, unsigned long len, prng_state *prng);
+extern const struct _prng_descriptor rc4_desc;
+#endif
+
+#ifdef SPRNG
+extern int sprng_start(prng_state *prng);
+extern int sprng_add_entropy(const unsigned char *buf, unsigned long len, prng_state *prng);
+extern int sprng_ready(prng_state *prng);
+extern unsigned long sprng_read(unsigned char *buf, unsigned long len, prng_state *prng);
+extern const struct _prng_descriptor sprng_desc;
+#endif
+
+extern int find_prng(const char *name);
+extern int register_prng(const struct _prng_descriptor *prng);
+extern int unregister_prng(const struct _prng_descriptor *prng);
+extern int prng_is_valid(int idx);
+
+
+/* Slow RNG you **might** be able to use to seed a PRNG with.  Be careful as this
+ * might not work on all platforms as planned
+ */
+/* ch2-02-1 */ 
+extern unsigned long rng_get_bytes(unsigned char *buf, 
+                                   unsigned long len, 
+                                   void (*callback)(void));
+/* ch2-02-1 */
+
+extern int rng_make_prng(int bits, int wprng, prng_state *prng, void (*callback)(void));
+