1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * RNG: Random Number Generator algorithms under the crypto API 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (c) 2008 Neil Horman <nhorman@tuxdriver.com> 6*4882a593Smuzhiyun * Copyright (c) 2015 Herbert Xu <herbert@gondor.apana.org.au> 7*4882a593Smuzhiyun */ 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #ifndef _CRYPTO_INTERNAL_RNG_H 10*4882a593Smuzhiyun #define _CRYPTO_INTERNAL_RNG_H 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun #include <crypto/algapi.h> 13*4882a593Smuzhiyun #include <crypto/rng.h> 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun int crypto_register_rng(struct rng_alg *alg); 16*4882a593Smuzhiyun void crypto_unregister_rng(struct rng_alg *alg); 17*4882a593Smuzhiyun int crypto_register_rngs(struct rng_alg *algs, int count); 18*4882a593Smuzhiyun void crypto_unregister_rngs(struct rng_alg *algs, int count); 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun #if defined(CONFIG_CRYPTO_RNG) || defined(CONFIG_CRYPTO_RNG_MODULE) 21*4882a593Smuzhiyun int crypto_del_default_rng(void); 22*4882a593Smuzhiyun #else crypto_del_default_rng(void)23*4882a593Smuzhiyunstatic inline int crypto_del_default_rng(void) 24*4882a593Smuzhiyun { 25*4882a593Smuzhiyun return 0; 26*4882a593Smuzhiyun } 27*4882a593Smuzhiyun #endif 28*4882a593Smuzhiyun crypto_rng_ctx(struct crypto_rng * tfm)29*4882a593Smuzhiyunstatic inline void *crypto_rng_ctx(struct crypto_rng *tfm) 30*4882a593Smuzhiyun { 31*4882a593Smuzhiyun return crypto_tfm_ctx(&tfm->base); 32*4882a593Smuzhiyun } 33*4882a593Smuzhiyun crypto_rng_set_entropy(struct crypto_rng * tfm,const u8 * data,unsigned int len)34*4882a593Smuzhiyunstatic inline void crypto_rng_set_entropy(struct crypto_rng *tfm, 35*4882a593Smuzhiyun const u8 *data, unsigned int len) 36*4882a593Smuzhiyun { 37*4882a593Smuzhiyun crypto_rng_alg(tfm)->set_ent(tfm, data, len); 38*4882a593Smuzhiyun } 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun #endif 41