Lines Matching refs:crngt

83 static int lock_parent(CRNG_TEST *crngt)  in lock_parent()  argument
85 void *parent = crngt->parent; in lock_parent()
88 && crngt->parent_lock != NULL in lock_parent()
89 && !crngt->parent_lock(parent)) { in lock_parent()
96 static void unlock_parent(CRNG_TEST *crngt) in unlock_parent() argument
98 void *parent = crngt->parent; in unlock_parent()
100 if (parent != NULL && crngt->parent_unlock != NULL) in unlock_parent()
101 crngt->parent_unlock(parent); in unlock_parent()
107 static int RCT_test(CRNG_TEST *crngt, uint8_t next) in RCT_test() argument
121 if (ossl_likely(crngt->rct.b != 0) in RCT_test()
122 && ossl_unlikely(next == crngt->rct.a)) in RCT_test()
123 return ossl_likely(++crngt->rct.b < rct_c[ENTROPY_H]); in RCT_test()
124 crngt->rct.a = next; in RCT_test()
125 crngt->rct.b = 1; in RCT_test()
132 static int APT_test(CRNG_TEST *crngt, uint8_t next) in APT_test() argument
145 if (ossl_likely(crngt->apt.b != 0)) { in APT_test()
146 if (ossl_unlikely(crngt->apt.a == next) in APT_test()
147 && ossl_unlikely(++crngt->apt.b >= apt_c[ENTROPY_H])) { in APT_test()
148 crngt->apt.b = 0; in APT_test()
151 if (ossl_unlikely(++crngt->apt.i >= ENTROPY_APT_W)) in APT_test()
152 crngt->apt.b = 0; in APT_test()
155 crngt->apt.a = next; in APT_test()
156 crngt->apt.b = 1; in APT_test()
157 crngt->apt.i = 1; in APT_test()
161 static int crng_test(CRNG_TEST *crngt, const unsigned char *buf, size_t n) in crng_test() argument
166 if (!RCT_test(crngt, buf[i]) || !APT_test(crngt, buf[i])) { in crng_test()
167 crngt->state = EVP_RAND_STATE_ERROR; in crng_test()
190 CRNG_TEST *crngt = OPENSSL_zalloc(sizeof(*crngt)); in crng_test_new() local
193 if (crngt == NULL) in crng_test_new()
196 crngt->provctx = provctx; in crng_test_new()
197 crngt->state = EVP_RAND_STATE_UNINITIALISED; in crng_test_new()
201 crngt->parent = parent; in crng_test_new()
203 crngt->parent_enable_locking = OSSL_FUNC_rand_enable_locking(pfunc); in crng_test_new()
205 crngt->parent_lock = OSSL_FUNC_rand_lock(pfunc); in crng_test_new()
207 crngt->parent_unlock = OSSL_FUNC_rand_unlock(pfunc); in crng_test_new()
209 crngt->parent_gettable_ctx_params = OSSL_FUNC_rand_gettable_ctx_params(pfunc); in crng_test_new()
211 crngt->parent_get_ctx_params = OSSL_FUNC_rand_get_ctx_params(pfunc); in crng_test_new()
213 crngt->parent_get_seed = OSSL_FUNC_rand_get_seed(pfunc); in crng_test_new()
215 crngt->parent_clear_seed = OSSL_FUNC_rand_clear_seed(pfunc); in crng_test_new()
218 return crngt; in crng_test_new()
223 CRNG_TEST *crngt = (CRNG_TEST *)vcrngt; in crng_test_free() local
225 if (crngt != NULL) { in crng_test_free()
226 CRYPTO_THREAD_lock_free(crngt->lock); in crng_test_free()
227 OPENSSL_free(crngt); in crng_test_free()
237 CRNG_TEST *crngt = (CRNG_TEST *)vcrngt; in crng_test_instantiate() local
240 crngt->state = EVP_RAND_STATE_READY; in crng_test_instantiate()
246 CRNG_TEST *crngt = (CRNG_TEST *)vcrngt; in crng_test_uninstantiate() local
248 crngt->state = EVP_RAND_STATE_UNINITIALISED; in crng_test_uninstantiate()
257 CRNG_TEST *crngt = (CRNG_TEST *)vcrngt; in crng_test_generate() local
259 if (!crng_test_get_seed(crngt, &p, 0, outlen, outlen, prediction_resistance, in crng_test_generate()
263 crng_test_clear_seed(crngt, p, outlen); in crng_test_generate()
289 CRNG_TEST *crngt = (CRNG_TEST *)vcrngt; in crng_test_get_seed() local
294 if (crngt->parent == NULL in crng_test_get_seed()
295 || crngt->parent_get_seed == NULL) { in crng_test_get_seed()
296 n = ossl_prov_get_entropy(crngt->provctx, pout, entropy, in crng_test_get_seed()
300 r = crng_test(crngt, *pout, n); in crng_test_get_seed()
305 if (!crng_test_lock(crngt)) in crng_test_get_seed()
307 if (!lock_parent(crngt)) { in crng_test_get_seed()
308 crng_test_unlock(crngt); in crng_test_get_seed()
311 n = crngt->parent_get_seed(crngt->parent, pout, entropy, in crng_test_get_seed()
314 unlock_parent(crngt); in crng_test_get_seed()
316 r = crng_test(crngt, *pout, n); in crng_test_get_seed()
317 crng_test_unlock(crngt); in crng_test_get_seed()
320 if (crngt->parent_clear_seed != NULL) in crng_test_get_seed()
321 crngt->parent_clear_seed(crngt->parent, *pout, n); in crng_test_get_seed()
328 CRNG_TEST *crngt = (CRNG_TEST *)vcrngt; in crng_test_clear_seed() local
330 if (crngt->parent == NULL || crngt->parent_get_seed == NULL) in crng_test_clear_seed()
331 ossl_prov_cleanup_entropy(crngt->provctx, out, outlen); in crng_test_clear_seed()
332 else if (crngt->parent_clear_seed != NULL) in crng_test_clear_seed()
333 crngt->parent_clear_seed(crngt->parent, out, outlen); in crng_test_clear_seed()
338 CRNG_TEST *crngt = (CRNG_TEST *)vcrngt; in crng_test_enable_locking() local
340 if (crngt != NULL && crngt->lock == NULL) { in crng_test_enable_locking()
341 if (crngt->parent_enable_locking != NULL) in crng_test_enable_locking()
342 if (!crngt->parent_enable_locking(crngt->parent)) { in crng_test_enable_locking()
346 crngt->lock = CRYPTO_THREAD_lock_new(); in crng_test_enable_locking()
347 if (crngt->lock == NULL) { in crng_test_enable_locking()
357 CRNG_TEST *crngt = (CRNG_TEST *)vcrngt; in crng_test_lock() local
359 return crngt->lock == NULL || CRYPTO_THREAD_write_lock(crngt->lock); in crng_test_lock()
364 CRNG_TEST *crngt = (CRNG_TEST *)vcrngt; in crng_test_unlock() local
366 if (crngt->lock != NULL) in crng_test_unlock()
367 CRYPTO_THREAD_unlock(crngt->lock); in crng_test_unlock()
372 CRNG_TEST *crngt = (CRNG_TEST *)vcrngt; in crng_test_get_ctx_params() local
375 if (crngt->parent != NULL && crngt->parent_get_ctx_params != NULL) in crng_test_get_ctx_params()
376 return crngt->parent_get_ctx_params(crngt->parent, params); in crng_test_get_ctx_params()
380 if (p != NULL && !OSSL_PARAM_set_int(p, crngt->state)) in crng_test_get_ctx_params()
400 CRNG_TEST *crngt = (CRNG_TEST *)vcrngt; in crng_test_gettable_ctx_params() local
409 if (crngt->parent != NULL && crngt->parent_gettable_ctx_params != NULL) in crng_test_gettable_ctx_params()
410 return crngt->parent_gettable_ctx_params(crngt->parent, provctx); in crng_test_gettable_ctx_params()