summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/shared/getentropy-cpucounter.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/shared/getentropy-cpucounter.c')
-rw-r--r--c/src/lib/libbsp/shared/getentropy-cpucounter.c69
1 files changed, 0 insertions, 69 deletions
diff --git a/c/src/lib/libbsp/shared/getentropy-cpucounter.c b/c/src/lib/libbsp/shared/getentropy-cpucounter.c
deleted file mode 100644
index 8ef05df85c..0000000000
--- a/c/src/lib/libbsp/shared/getentropy-cpucounter.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 2017 embedded brains GmbH. All rights reserved.
- *
- * embedded brains GmbH
- * Dornierstr. 4
- * 82178 Puchheim
- * Germany
- * <rtems@embedded-brains.de>
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-/*
- * ATTENTION: THIS IS A VERY LIMITED ENTROPY SOURCE.
- *
- * This implementation uses a time-based value for it's entropy. The only thing
- * that makes it random are interrupts from external sources. Don't use it if
- * you need for example a strong crypto.
- */
-
-#include <sys/param.h>
-#include <unistd.h>
-#include <string.h>
-#include <rtems/bsd.h>
-#include <rtems/counter.h>
-#include <rtems/sysinit.h>
-
-static uint32_t state;
-
-int getentropy(void *ptr, size_t n)
-{
- uint8_t *dest = ptr;
-
- state ^= rtems_counter_read();
- state *= 25169206;
- state += 1679610226;
-
- while (n > 0) {
- size_t m;
-
- m = MIN(n, sizeof(state));
- memcpy(dest, &state, m);
- n -= m;
- dest += m;
- state *= 85236167;
- state += 30557471;
- }
-
- return 0;
-}
-
-static void getentropy_init(void)
-{
- struct bintime bt;
-
- rtems_bsd_bintime(&bt);
- state = (uint32_t) bt.frac;
- state ^= (uint32_t) (bt.frac >> 32);
- state ^= (uint32_t) bt.sec;
- state ^= (uint32_t) (bt.sec >> 32);
-}
-
-RTEMS_SYSINIT_ITEM(
- getentropy_init,
- RTEMS_SYSINIT_DEVICE_DRIVERS,
- RTEMS_SYSINIT_ORDER_LAST
-);