xref: /openbsd-src/lib/libcrypto/rand/rand_lib.c (revision b80856cdf1ff0da4b4909345ccafb52b83cd6fed)
1*b80856cdSbeck /* $OpenBSD: rand_lib.c,v 1.24 2024/04/10 14:53:01 beck Exp $ */
2ff5e25a6Stedu /*
3ff5e25a6Stedu  * Copyright (c) 2014 Ted Unangst <tedu@openbsd.org>
4913ec974Sbeck  *
5ff5e25a6Stedu  * Permission to use, copy, modify, and distribute this software for any
6ff5e25a6Stedu  * purpose with or without fee is hereby granted, provided that the above
7ff5e25a6Stedu  * copyright notice and this permission notice appear in all copies.
8913ec974Sbeck  *
9ff5e25a6Stedu  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10ff5e25a6Stedu  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11ff5e25a6Stedu  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12ff5e25a6Stedu  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13ff5e25a6Stedu  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14ff5e25a6Stedu  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15ff5e25a6Stedu  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16913ec974Sbeck  */
178cf4d6a6Sjsing 
18ef624301Sjsing #include <stdlib.h>
19ef624301Sjsing 
208cf4d6a6Sjsing #include <openssl/opensslconf.h>
218cf4d6a6Sjsing 
22913ec974Sbeck #include <openssl/rand.h>
235cdd308eSdjm 
24ff5e25a6Stedu /*
25ff5e25a6Stedu  * The useful functions in this file are at the bottom.
26ff5e25a6Stedu  */
27ff5e25a6Stedu int
RAND_set_rand_method(const RAND_METHOD * meth)28ff5e25a6Stedu RAND_set_rand_method(const RAND_METHOD *meth)
29913ec974Sbeck {
30c109e398Sbeck 	return 1;
31c109e398Sbeck }
3293f18f11Sbeck LCRYPTO_ALIAS(RAND_set_rand_method);
33913ec974Sbeck 
34ff5e25a6Stedu const RAND_METHOD *
RAND_get_rand_method(void)35ff5e25a6Stedu RAND_get_rand_method(void)
36913ec974Sbeck {
37ff5e25a6Stedu 	return NULL;
38da347917Sbeck }
3993f18f11Sbeck LCRYPTO_ALIAS(RAND_get_rand_method);
40ff5e25a6Stedu 
41ff5e25a6Stedu RAND_METHOD *
RAND_SSLeay(void)42ff5e25a6Stedu RAND_SSLeay(void)
43ff5e25a6Stedu {
44ff5e25a6Stedu 	return NULL;
45da347917Sbeck }
4693f18f11Sbeck LCRYPTO_ALIAS(RAND_SSLeay);
47da347917Sbeck 
48ff5e25a6Stedu void
RAND_cleanup(void)49ff5e25a6Stedu RAND_cleanup(void)
50913ec974Sbeck {
51ff5e25a6Stedu 
52913ec974Sbeck }
53*b80856cdSbeck LCRYPTO_ALIAS(RAND_cleanup);
54913ec974Sbeck 
55ff5e25a6Stedu void
RAND_seed(const void * buf,int num)56ff5e25a6Stedu RAND_seed(const void *buf, int num)
57913ec974Sbeck {
58ff5e25a6Stedu 
59913ec974Sbeck }
60*b80856cdSbeck LCRYPTO_ALIAS(RAND_seed);
61913ec974Sbeck 
62ff5e25a6Stedu void
RAND_add(const void * buf,int num,double entropy)63ff5e25a6Stedu RAND_add(const void *buf, int num, double entropy)
64913ec974Sbeck {
65ff5e25a6Stedu 
66913ec974Sbeck }
67*b80856cdSbeck LCRYPTO_ALIAS(RAND_add);
68913ec974Sbeck 
69ff5e25a6Stedu int
RAND_status(void)70ff5e25a6Stedu RAND_status(void)
71ba5406e9Sbeck {
72ff5e25a6Stedu 	return 1;
73ba5406e9Sbeck }
74*b80856cdSbeck LCRYPTO_ALIAS(RAND_status);
75ba5406e9Sbeck 
76ff5e25a6Stedu int
RAND_poll(void)77ff5e25a6Stedu RAND_poll(void)
78ba5406e9Sbeck {
79ff5e25a6Stedu 	return 1;
80ba5406e9Sbeck }
81*b80856cdSbeck LCRYPTO_ALIAS(RAND_poll);
82f6e3f262Sbeck 
83ff5e25a6Stedu /*
84ff5e25a6Stedu  * Hurray. You've made it to the good parts.
85ff5e25a6Stedu  */
86ff5e25a6Stedu int
RAND_bytes(unsigned char * buf,int num)87ff5e25a6Stedu RAND_bytes(unsigned char *buf, int num)
88f6e3f262Sbeck {
89ff5e25a6Stedu 	if (num > 0)
90ff5e25a6Stedu 		arc4random_buf(buf, num);
91ff5e25a6Stedu 	return 1;
92ff5e25a6Stedu }
93*b80856cdSbeck LCRYPTO_ALIAS(RAND_bytes);
94ff5e25a6Stedu 
95ff5e25a6Stedu int
RAND_pseudo_bytes(unsigned char * buf,int num)96ff5e25a6Stedu RAND_pseudo_bytes(unsigned char *buf, int num)
97ff5e25a6Stedu {
98ff5e25a6Stedu 	if (num > 0)
99ff5e25a6Stedu 		arc4random_buf(buf, num);
100ff5e25a6Stedu 	return 1;
101f6e3f262Sbeck }
102*b80856cdSbeck LCRYPTO_ALIAS(RAND_pseudo_bytes);
103