Lines Matching refs:chacha20

84 chacha20_randomstir(struct chacha20_s *chacha20)  in chacha20_randomstir()  argument
143 mtx_lock(&chacha20->mtx); in chacha20_randomstir()
144 chacha_keysetup(&chacha20->ctx, key, CHACHA20_KEYBYTES*8); in chacha20_randomstir()
145 chacha_ivsetup(&chacha20->ctx, (u_char *)&tv_now.tv_sec, (u_char *)&tv_now.tv_usec); in chacha20_randomstir()
147 chacha20->t_reseed = tv_now.tv_sec + CHACHA20_RESEED_SECONDS; in chacha20_randomstir()
148 chacha20->numbytes = 0; in chacha20_randomstir()
150 chacha20->seed_version = seed_version; in chacha20_randomstir()
152 mtx_unlock(&chacha20->mtx); in chacha20_randomstir()
161 struct chacha20_s *chacha20; local
167 CHACHA20_FOREACH(chacha20) {
168 mtx_init(&chacha20->mtx, "chacha20_mtx", NULL, MTX_DEF);
169 chacha20->t_reseed = -1;
170 chacha20->numbytes = 0;
171 explicit_bzero(chacha20->m_buffer, CHACHA20_BUFFER_SIZE);
172 explicit_bzero(&chacha20->ctx, sizeof(chacha20->ctx));
175 SYSINIT(chacha20, SI_SUB_LOCK, SI_ORDER_ANY, chacha20_init, NULL);
181 struct chacha20_s *chacha20; local
183 CHACHA20_FOREACH(chacha20)
184 mtx_destroy(&chacha20->mtx);
187 SYSUNINIT(chacha20, SI_SUB_LOCK, SI_ORDER_ANY, chacha20_uninit, NULL);
196 struct chacha20_s *chacha20; local
208 CHACHA20_FOREACH(chacha20)
209 chacha20_randomstir(chacha20);
212 chacha20 = &chacha20inst[curcpu];
214 if ((chacha20->numbytes > CHACHA20_RESEED_BYTES) || (tv.tv_sec > chacha20->t_reseed))
215 chacha20_randomstir(chacha20);
217 mtx_lock(&chacha20->mtx);
220 atomic_load_acq_64(&fxrng_root_generation) != chacha20->seed_version
222 mtx_unlock(&chacha20->mtx);
223 chacha20_randomstir(chacha20);
224 mtx_lock(&chacha20->mtx);
231 chacha_encrypt_bytes(&chacha20->ctx, chacha20->m_buffer, p, length);
234 chacha20->numbytes += length;
235 if (chacha20->numbytes > CHACHA20_RESEED_BYTES) {
236 mtx_unlock(&chacha20->mtx);
237 chacha20_randomstir(chacha20);
238 mtx_lock(&chacha20->mtx);
241 mtx_unlock(&chacha20->mtx);