Lines Matching refs:crng
504 static void _extract_crng(struct crng_state *crng, __u8 out[CHACHA_BLOCK_SIZE]);
505 static void _crng_backtrack_protect(struct crng_state *crng,
552 static void crng_reseed(struct crng_state *crng, struct entropy_store *r);
863 static void crng_initialize(struct crng_state *crng) in crng_initialize() argument
869 memcpy(&crng->state[0], "expand 32-byte k", 16); in crng_initialize()
870 if (crng == &primary_crng) in crng_initialize()
871 _extract_entropy(&input_pool, &crng->state[4], in crng_initialize()
874 _get_random_bytes(&crng->state[4], sizeof(__u32) * 12); in crng_initialize()
881 crng->state[i] ^= rv; in crng_initialize()
883 if (trust_cpu && arch_init && crng == &primary_crng) { in crng_initialize()
889 crng->init_time = jiffies - CRNG_RESEED_INTERVAL - 1; in crng_initialize()
896 struct crng_state *crng; in do_numa_crng_init() local
901 crng = kmalloc_node(sizeof(struct crng_state), in do_numa_crng_init()
903 spin_lock_init(&crng->lock); in do_numa_crng_init()
904 crng_initialize(crng); in do_numa_crng_init()
905 pool[i] = crng; in do_numa_crng_init()
1000 static void crng_reseed(struct crng_state *crng, struct entropy_store *r) in crng_reseed() argument
1018 spin_lock_irqsave(&crng->lock, flags); in crng_reseed()
1024 crng->state[i+4] ^= buf.key[i] ^ rv; in crng_reseed()
1027 crng->init_time = jiffies; in crng_reseed()
1028 spin_unlock_irqrestore(&crng->lock, flags); in crng_reseed()
1029 if (crng == &primary_crng && crng_init < 2) { in crng_reseed()
1051 static void _extract_crng(struct crng_state *crng, in _extract_crng() argument
1057 (time_after(crng_global_init_time, crng->init_time) || in _extract_crng()
1058 time_after(jiffies, crng->init_time + CRNG_RESEED_INTERVAL))) in _extract_crng()
1059 crng_reseed(crng, crng == &primary_crng ? &input_pool : NULL); in _extract_crng()
1060 spin_lock_irqsave(&crng->lock, flags); in _extract_crng()
1062 crng->state[14] ^= v; in _extract_crng()
1063 chacha20_block(&crng->state[0], out); in _extract_crng()
1064 if (crng->state[12] == 0) in _extract_crng()
1065 crng->state[13]++; in _extract_crng()
1066 spin_unlock_irqrestore(&crng->lock, flags); in _extract_crng()
1071 struct crng_state *crng = NULL; in extract_crng() local
1075 crng = crng_node_pool[numa_node_id()]; in extract_crng()
1076 if (crng == NULL) in extract_crng()
1078 crng = &primary_crng; in extract_crng()
1079 _extract_crng(crng, out); in extract_crng()
1086 static void _crng_backtrack_protect(struct crng_state *crng, in _crng_backtrack_protect() argument
1098 spin_lock_irqsave(&crng->lock, flags); in _crng_backtrack_protect()
1100 d = &crng->state[4]; in _crng_backtrack_protect()
1103 spin_unlock_irqrestore(&crng->lock, flags); in _crng_backtrack_protect()
1108 struct crng_state *crng = NULL; in crng_backtrack_protect() local
1112 crng = crng_node_pool[numa_node_id()]; in crng_backtrack_protect()
1113 if (crng == NULL) in crng_backtrack_protect()
1115 crng = &primary_crng; in crng_backtrack_protect()
1116 _crng_backtrack_protect(crng, tmp, used); in crng_backtrack_protect()