Lines Matching refs:crng

468 static void _extract_crng(struct crng_state *crng, __u8 out[CHACHA_BLOCK_SIZE]);
469 static void _crng_backtrack_protect(struct crng_state *crng,
512 static void crng_reseed(struct crng_state *crng, struct entropy_store *r);
774 static bool crng_init_try_arch(struct crng_state *crng) in crng_init_try_arch() argument
786 crng->state[i] ^= rv; in crng_init_try_arch()
792 static bool __init crng_init_try_arch_early(struct crng_state *crng) in crng_init_try_arch_early() argument
804 crng->state[i] ^= rv; in crng_init_try_arch_early()
810 static void __maybe_unused crng_initialize_secondary(struct crng_state *crng) in crng_initialize_secondary() argument
812 chacha_init_consts(crng->state); in crng_initialize_secondary()
813 _get_random_bytes(&crng->state[4], sizeof(__u32) * 12); in crng_initialize_secondary()
814 crng_init_try_arch(crng); in crng_initialize_secondary()
815 crng->init_time = jiffies - CRNG_RESEED_INTERVAL - 1; in crng_initialize_secondary()
818 static void __init crng_initialize_primary(struct crng_state *crng) in crng_initialize_primary() argument
820 chacha_init_consts(crng->state); in crng_initialize_primary()
821 _extract_entropy(&input_pool, &crng->state[4], sizeof(__u32) * 12, 0); in crng_initialize_primary()
822 if (crng_init_try_arch_early(crng) && trust_cpu) { in crng_initialize_primary()
828 crng->init_time = jiffies - CRNG_RESEED_INTERVAL - 1; in crng_initialize_primary()
835 struct crng_state *crng; in do_numa_crng_init() local
840 crng = kmalloc_node(sizeof(struct crng_state), in do_numa_crng_init()
842 spin_lock_init(&crng->lock); in do_numa_crng_init()
843 crng_initialize_secondary(crng); in do_numa_crng_init()
844 pool[i] = crng; in do_numa_crng_init()
938 static void crng_reseed(struct crng_state *crng, struct entropy_store *r) in crng_reseed() argument
956 spin_lock_irqsave(&crng->lock, flags); in crng_reseed()
962 crng->state[i+4] ^= buf.key[i] ^ rv; in crng_reseed()
965 crng->init_time = jiffies; in crng_reseed()
966 spin_unlock_irqrestore(&crng->lock, flags); in crng_reseed()
967 if (crng == &primary_crng && crng_init < 2) { in crng_reseed()
988 static void _extract_crng(struct crng_state *crng, in _extract_crng() argument
994 (time_after(crng_global_init_time, crng->init_time) || in _extract_crng()
995 time_after(jiffies, crng->init_time + CRNG_RESEED_INTERVAL))) in _extract_crng()
996 crng_reseed(crng, crng == &primary_crng ? &input_pool : NULL); in _extract_crng()
997 spin_lock_irqsave(&crng->lock, flags); in _extract_crng()
999 crng->state[14] ^= v; in _extract_crng()
1000 chacha20_block(&crng->state[0], out); in _extract_crng()
1001 if (crng->state[12] == 0) in _extract_crng()
1002 crng->state[13]++; in _extract_crng()
1003 spin_unlock_irqrestore(&crng->lock, flags); in _extract_crng()
1008 struct crng_state *crng = NULL; in extract_crng() local
1012 crng = crng_node_pool[numa_node_id()]; in extract_crng()
1013 if (crng == NULL) in extract_crng()
1015 crng = &primary_crng; in extract_crng()
1016 _extract_crng(crng, out); in extract_crng()
1023 static void _crng_backtrack_protect(struct crng_state *crng, in _crng_backtrack_protect() argument
1035 spin_lock_irqsave(&crng->lock, flags); in _crng_backtrack_protect()
1037 d = &crng->state[4]; in _crng_backtrack_protect()
1040 spin_unlock_irqrestore(&crng->lock, flags); in _crng_backtrack_protect()
1045 struct crng_state *crng = NULL; in crng_backtrack_protect() local
1049 crng = crng_node_pool[numa_node_id()]; in crng_backtrack_protect()
1050 if (crng == NULL) in crng_backtrack_protect()
1052 crng = &primary_crng; in crng_backtrack_protect()
1053 _crng_backtrack_protect(crng, tmp, used); in crng_backtrack_protect()