Lines Matching refs:crng
435 static void _extract_crng(struct crng_state *crng,
437 static void _crng_backtrack_protect(struct crng_state *crng,
485 static void crng_reseed(struct crng_state *crng, struct entropy_store *r);
789 static void crng_initialize(struct crng_state *crng) in crng_initialize() argument
795 memcpy(&crng->state[0], "expand 32-byte k", 16); in crng_initialize()
796 if (crng == &primary_crng) in crng_initialize()
797 _extract_entropy(&input_pool, &crng->state[4], in crng_initialize()
800 _get_random_bytes(&crng->state[4], sizeof(__u32) * 12); in crng_initialize()
807 crng->state[i] ^= rv; in crng_initialize()
813 crng->init_time = jiffies - CRNG_RESEED_INTERVAL - 1; in crng_initialize()
820 struct crng_state *crng; in do_numa_crng_init() local
825 crng = kmalloc_node(sizeof(struct crng_state), in do_numa_crng_init()
827 spin_lock_init(&crng->lock); in do_numa_crng_init()
828 crng_initialize(crng); in do_numa_crng_init()
829 pool[i] = crng; in do_numa_crng_init()
924 static void crng_reseed(struct crng_state *crng, struct entropy_store *r) in crng_reseed() argument
942 spin_lock_irqsave(&crng->lock, flags); in crng_reseed()
948 crng->state[i+4] ^= buf.key[i] ^ rv; in crng_reseed()
951 crng->init_time = jiffies; in crng_reseed()
952 spin_unlock_irqrestore(&crng->lock, flags); in crng_reseed()
953 if (crng == &primary_crng && crng_init < 2) { in crng_reseed()
975 static void _extract_crng(struct crng_state *crng, in _extract_crng() argument
981 (time_after(crng_global_init_time, crng->init_time) || in _extract_crng()
982 time_after(jiffies, crng->init_time + CRNG_RESEED_INTERVAL))) in _extract_crng()
983 crng_reseed(crng, crng == &primary_crng ? &input_pool : NULL); in _extract_crng()
984 spin_lock_irqsave(&crng->lock, flags); in _extract_crng()
986 crng->state[14] ^= v; in _extract_crng()
987 chacha20_block(&crng->state[0], out); in _extract_crng()
988 if (crng->state[12] == 0) in _extract_crng()
989 crng->state[13]++; in _extract_crng()
990 spin_unlock_irqrestore(&crng->lock, flags); in _extract_crng()
995 struct crng_state *crng = NULL; in extract_crng() local
999 crng = crng_node_pool[numa_node_id()]; in extract_crng()
1000 if (crng == NULL) in extract_crng()
1002 crng = &primary_crng; in extract_crng()
1003 _extract_crng(crng, out); in extract_crng()
1010 static void _crng_backtrack_protect(struct crng_state *crng, in _crng_backtrack_protect() argument
1022 spin_lock_irqsave(&crng->lock, flags); in _crng_backtrack_protect()
1024 d = &crng->state[4]; in _crng_backtrack_protect()
1027 spin_unlock_irqrestore(&crng->lock, flags); in _crng_backtrack_protect()
1032 struct crng_state *crng = NULL; in crng_backtrack_protect() local
1036 crng = crng_node_pool[numa_node_id()]; in crng_backtrack_protect()
1037 if (crng == NULL) in crng_backtrack_protect()
1039 crng = &primary_crng; in crng_backtrack_protect()
1040 _crng_backtrack_protect(crng, tmp, used); in crng_backtrack_protect()