]> git.ipfire.org Git - thirdparty/nettle.git/commitdiff
New example program that generates
authorNiels Möller <nisse@lysator.liu.se>
Fri, 19 Sep 2003 11:56:04 +0000 (13:56 +0200)
committerNiels Möller <nisse@lysator.liu.se>
Fri, 19 Sep 2003 11:56:05 +0000 (13:56 +0200)
pseudorandom output.

Rev: src/nettle/examples/.cvsignore:1.1.2.1
Rev: src/nettle/examples/lfib-stream.c:1.1.2.1

examples/.cvsignore
examples/.gitignore
examples/lfib-stream.c [new file with mode: 0644]

index e2026661afa343e47cd14eb12a37ab479dc6c743..0763fe856e2db075a40060d00227aaaccaa9c9d8 100644 (file)
@@ -1,4 +1,5 @@
 .deps
 Makefile
 Makefile.in
+lfib-stream
 nettle-benchmark
index 5bfd2056ad8a39f3e36793053cdda8fdd89228bf..dca9d918c584e434c169d879f3f79ad5b25e8753 100644 (file)
@@ -1,4 +1,5 @@
 /.deps
 /Makefile
 /Makefile.in
+/lfib-stream
 /nettle-benchmark
diff --git a/examples/lfib-stream.c b/examples/lfib-stream.c
new file mode 100644 (file)
index 0000000..83c8116
--- /dev/null
@@ -0,0 +1,81 @@
+/* lfib-stream.c
+ *
+ * Generates a pseudorandom stream, using the Knuth lfig
+ * (non-cryptographic) pseudorandom generator.
+ *
+ */
+/* nettle, low-level cryptographics library
+ *
+ * Copyright (C) 2003 Niels Möller
+ *  
+ * The nettle library is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or (at your
+ * option) any later version.
+ * 
+ * The nettle library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
+ * License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with the nettle library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+#include "knuth-lfib.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <time.h>
+
+#define BUFSIZE 500
+
+static void
+usage(void)
+{
+  fprintf(stderr, "Usage: lfib-stream [SEED]\n");
+}
+
+int
+main(int argc, char **argv)
+{
+  struct knuth_lfib_ctx ctx;
+  uint32_t seed;
+
+  if (argc == 1)
+    seed = time(NULL);
+
+  else if (argc == 2)
+    {
+      seed = atoi(argv[1]);
+      if (!seed)
+       {
+         usage();
+         return EXIT_FAILURE;
+       }
+    }
+  else
+    {
+      usage();
+      return EXIT_FAILURE;
+    }
+
+  knuth_lfib_init(&ctx, seed);
+
+  for (;;)
+    {
+      char buffer[BUFSIZE];
+      knuth_lfib_random(&ctx, BUFSIZE, buffer);
+
+      if (fwrite(buffer, 1, BUFSIZE, stdout) < BUFSIZE
+         || fflush(stdout) < 0)
+       return EXIT_FAILURE;
+    }
+
+  /* Not reached. This program is usually terminated by SIGPIPE */
+}