Lines Matching refs:rand

13 #include <openssl/rand.h>
54 EVP_RAND *rand = (EVP_RAND *)vrand;
57 if (rand != NULL)
58 return CRYPTO_UP_REF(&rand->refcnt, &ref, rand->refcnt_lock);
64 EVP_RAND *rand = (EVP_RAND *)vrand;
67 if (rand == NULL)
69 CRYPTO_DOWN_REF(&rand->refcnt, &ref, rand->refcnt_lock);
72 OPENSSL_free(rand->type_name);
73 ossl_provider_free(rand->prov);
74 CRYPTO_THREAD_lock_free(rand->refcnt_lock);
75 OPENSSL_free(rand);
80 EVP_RAND *rand = OPENSSL_zalloc(sizeof(*rand));
82 if (rand == NULL
83 || (rand->refcnt_lock = CRYPTO_THREAD_lock_new()) == NULL) {
84 OPENSSL_free(rand);
87 rand->refcnt = 1;
88 return rand;
92 int EVP_RAND_enable_locking(EVP_RAND_CTX *rand)
94 if (rand->meth->enable_locking != NULL)
95 return rand->meth->enable_locking(rand->algctx);
101 static int evp_rand_lock(EVP_RAND_CTX *rand)
103 if (rand->meth->lock != NULL)
104 return rand->meth->lock(rand->algctx);
109 static void evp_rand_unlock(EVP_RAND_CTX *rand)
111 if (rand->meth->unlock != NULL)
112 rand->meth->unlock(rand->algctx);
120 EVP_RAND *rand = NULL;
126 if ((rand = evp_rand_new()) == NULL) {
130 rand->name_id = name_id;
131 if ((rand->type_name = ossl_algorithm_get1_first_name(algodef)) == NULL) {
132 evp_rand_free(rand);
135 rand->description = algodef->algorithm_description;
136 rand->dispatch = fns;
140 if (rand->newctx != NULL)
142 rand->newctx = OSSL_FUNC_rand_newctx(fns);
146 if (rand->freectx != NULL)
148 rand->freectx = OSSL_FUNC_rand_freectx(fns);
152 if (rand->instantiate != NULL)
154 rand->instantiate = OSSL_FUNC_rand_instantiate(fns);
158 if (rand->uninstantiate != NULL)
160 rand->uninstantiate = OSSL_FUNC_rand_uninstantiate(fns);
164 if (rand->generate != NULL)
166 rand->generate = OSSL_FUNC_rand_generate(fns);
170 if (rand->reseed != NULL)
172 rand->reseed = OSSL_FUNC_rand_reseed(fns);
175 if (rand->nonce != NULL)
177 rand->nonce = OSSL_FUNC_rand_nonce(fns);
180 if (rand->enable_locking != NULL)
182 rand->enable_locking = OSSL_FUNC_rand_enable_locking(fns);
186 if (rand->lock != NULL)
188 rand->lock = OSSL_FUNC_rand_lock(fns);
192 if (rand->unlock != NULL)
194 rand->unlock = OSSL_FUNC_rand_unlock(fns);
198 if (rand->gettable_params != NULL)
200 rand->gettable_params =
204 if (rand->gettable_ctx_params != NULL)
206 rand->gettable_ctx_params =
210 if (rand->settable_ctx_params != NULL)
212 rand->settable_ctx_params =
216 if (rand->get_params != NULL)
218 rand->get_params = OSSL_FUNC_rand_get_params(fns);
221 if (rand->get_ctx_params != NULL)
223 rand->get_ctx_params = OSSL_FUNC_rand_get_ctx_params(fns);
227 if (rand->set_ctx_params != NULL)
229 rand->set_ctx_params = OSSL_FUNC_rand_set_ctx_params(fns);
232 if (rand->verify_zeroization != NULL)
234 rand->verify_zeroization = OSSL_FUNC_rand_verify_zeroization(fns);
243 * a complete set of "rand" functions and a complete set of context
258 evp_rand_free(rand);
264 evp_rand_free(rand);
268 rand->prov = prov;
270 return rand;
281 int EVP_RAND_up_ref(EVP_RAND *rand)
283 return evp_rand_up_ref(rand);
286 void EVP_RAND_free(EVP_RAND *rand)
288 evp_rand_free(rand);
291 int evp_rand_get_number(const EVP_RAND *rand)
293 return rand->name_id;
296 const char *EVP_RAND_get0_name(const EVP_RAND *rand)
298 return rand->type_name;
301 const char *EVP_RAND_get0_description(const EVP_RAND *rand)
303 return rand->description;
306 int EVP_RAND_is_a(const EVP_RAND *rand, const char *name)
308 return rand != NULL && evp_is_a(rand->prov, rand->name_id, NULL, name);
311 const OSSL_PROVIDER *EVP_RAND_get0_provider(const EVP_RAND *rand)
313 return rand->prov;
316 int EVP_RAND_get_params(EVP_RAND *rand, OSSL_PARAM params[])
318 if (rand->get_params != NULL)
319 return rand->get_params(params);
330 EVP_RAND_CTX *EVP_RAND_CTX_new(EVP_RAND *rand, EVP_RAND_CTX *parent)
336 if (rand == NULL) {
357 if ((ctx->algctx = rand->newctx(ossl_provider_ctx(rand->prov), parent_ctx,
359 || !EVP_RAND_up_ref(rand)) {
361 rand->freectx(ctx->algctx);
367 ctx->meth = rand;
434 const OSSL_PARAM *EVP_RAND_gettable_params(const EVP_RAND *rand)
436 if (rand->gettable_params == NULL)
438 return rand->gettable_params(ossl_provider_ctx(EVP_RAND_get0_provider(rand)));
441 const OSSL_PARAM *EVP_RAND_gettable_ctx_params(const EVP_RAND *rand)
445 if (rand->gettable_ctx_params == NULL)
447 provctx = ossl_provider_ctx(EVP_RAND_get0_provider(rand));
448 return rand->gettable_ctx_params(NULL, provctx);
451 const OSSL_PARAM *EVP_RAND_settable_ctx_params(const EVP_RAND *rand)
455 if (rand->settable_ctx_params == NULL)
457 provctx = ossl_provider_ctx(EVP_RAND_get0_provider(rand));
458 return rand->settable_ctx_params(NULL, provctx);
482 void (*fn)(EVP_RAND *rand, void *arg),
491 int EVP_RAND_names_do_all(const EVP_RAND *rand,
495 if (rand->prov != NULL)
496 return evp_names_do_all(rand->prov, rand->name_id, fn, data);