summaryrefslogtreecommitdiffhomepage
path: root/src/3p/monocypher/monocypher-rng.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/3p/monocypher/monocypher-rng.h')
-rw-r--r--src/3p/monocypher/monocypher-rng.h67
1 files changed, 67 insertions, 0 deletions
diff --git a/src/3p/monocypher/monocypher-rng.h b/src/3p/monocypher/monocypher-rng.h
new file mode 100644
index 0000000..22b953c
--- /dev/null
+++ b/src/3p/monocypher/monocypher-rng.h
@@ -0,0 +1,67 @@
+// This file is dual-licensed. Choose whichever licence you want from
+// the two licences listed below.
+//
+// The first licence is a regular 2-clause BSD licence. The second licence
+// is the CC-0 from Creative Commons. It is intended to release Monocypher
+// to the public domain. The BSD licence serves as a fallback option.
+//
+// SPDX-License-Identifier: BSD-2-Clause OR CC0-1.0
+//
+// ------------------------------------------------------------------------
+//
+// Copyright (c) 2019, Loup Vaillant
+// All rights reserved.
+//
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// 1. Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the
+// distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// ------------------------------------------------------------------------
+//
+// Written in 2017-2019 by Loup Vaillant
+//
+// To the extent possible under law, the author(s) have dedicated all copyright
+// and related neighboring rights to this software to the public domain
+// worldwide. This software is distributed without any warranty.
+//
+// You should have received a copy of the CC0 Public Domain Dedication along
+// with this software. If not, see
+// <https://creativecommons.org/publicdomain/zero/1.0/>
+
+#ifndef CRYPTO_RNG
+#define CRYPTO_RNG
+
+#include <stddef.h>
+#include <stdint.h>
+
+typedef struct {
+ uint8_t pool[512];
+ size_t idx;
+} crypto_rng_ctx;
+
+void crypto_rng_init(crypto_rng_ctx *ctx, uint8_t random_seed[32]);
+void crypto_rng_read(crypto_rng_ctx *ctx, uint8_t *buf, size_t size);
+void crypto_rng_fork(crypto_rng_ctx *ctx, crypto_rng_ctx *child_ctx);
+
+#endif // CRYPTO_RNG