Lines Matching refs:ec

118  * @ec entropy collector struct -- may be NULL
125 static uint64_t jent_loop_shuffle(struct rand_data *ec,
138 if (ec)
139 time ^= ec->data;
175 * @ec entropy collector struct -- may be NULL
181 * updated ec->data
185 static uint64_t jent_lfsr_time(struct rand_data *ec, uint64_t time,
194 jent_loop_shuffle(ec, MAX_FOLD_LOOP_BIT, MIN_FOLD_LOOP_BIT);
203 new = ec->data;
229 ec->data = new;
249 * to reliably access either L3 or memory, the ec->mem memory must be quite
253 * @ec Reference to the entropy collector with the memory access data -- if
261 static unsigned int jent_memaccess(struct rand_data *ec, uint64_t loop_cnt)
268 jent_loop_shuffle(ec, MAX_ACC_LOOP_BIT, MIN_ACC_LOOP_BIT);
270 if (NULL == ec || NULL == ec->mem)
272 wrap = ec->memblocksize * ec->memblocks;
281 for (i = 0; i < (ec->memaccessloops + acc_loop_cnt); i++) {
282 unsigned char *tmpval = ec->mem + ec->memlocation;
294 ec->memlocation = ec->memlocation + ec->memblocksize - 1;
295 ec->memlocation = ec->memlocation % wrap;
313 * @ec Reference to entropy collector
320 static int jent_stuck(struct rand_data *ec, uint64_t current_delta)
322 int64_t delta2 = ec->last_delta - current_delta;
323 int64_t delta3 = delta2 - ec->last_delta2;
325 ec->last_delta = current_delta;
326 ec->last_delta2 = delta2;
348 static int jent_measure_jitter(struct rand_data *ec)
355 jent_memaccess(ec, 0);
362 current_delta = time - ec->prev_time;
363 ec->prev_time = time;
366 jent_lfsr_time(ec, current_delta, 0);
369 stuck = jent_stuck(ec, current_delta);
381 ec->data = rol64(ec->data, 7);
460 * @ec Reference to entropy collector
462 static void jent_gen_entropy(struct rand_data *ec)
467 jent_measure_jitter(ec);
471 if (jent_measure_jitter(ec))
478 if (++k >= (DATA_SIZE_BITS * ec->osr))
481 if (ec->stir)
482 jent_stir_pool(ec);
493 static int jent_fips_test(struct rand_data *ec)
495 if (ec->fips_enabled == -1)
498 if (ec->fips_enabled == 0) {
500 ec->fips_enabled = -1;
503 ec->fips_enabled = 1;
507 if (!ec->old_data) {
508 ec->old_data = ec->data;
509 jent_gen_entropy(ec);
512 if (ec->data == ec->old_data)
515 ec->old_data = ec->data;
531 * @ec Reference to entropy collector
544 ssize_t jent_read_entropy(struct rand_data *ec, char *data, size_t len)
549 if (NULL == ec)
555 jent_gen_entropy(ec);
556 if (jent_fips_test(ec))
563 memcpy(p, &ec->data, tocopy);
585 jent_gen_entropy(ec);
657 struct rand_data ec;
696 ec.prev_time = time;
697 jent_lfsr_time(&ec, time, 0);
712 stuck = jent_stuck(&ec, delta);
790 uint64_t jent_lfsr_var_stat(struct rand_data *ec,
798 jent_memaccess(ec, mem_loops_override);
799 jent_lfsr_time(ec, time, lfsr_loops_override);
809 struct rand_data* ec, uint8_t* mem, size_t mem_size,
813 memset(ec, 0, sizeof(*ec));
818 ec->osr = 1;
822 ec->fips_enabled = 0;
823 ec->stir = stir;
826 ec->disable_unbias = true;
827 ec->mem = mem;
828 ec->memlocation = 0;
829 ec->memblocks = mem_block_count;
830 ec->memblocksize = mem_block_size;
831 ec->memaccessloops = mem_loops;