Lines Matching defs:cprng

38 #include <sys/cprng.h>
87 struct cprng_fast *const cprng = p;
90 cprng->epoch = entropy_epoch();
92 cprng_fast_seed(cprng, seed);
95 cprng->reseed_evcnt = kmem_alloc(sizeof(*cprng->reseed_evcnt),
97 evcnt_attach_dynamic(cprng->reseed_evcnt, EVCNT_TYPE_MISC, NULL,
105 struct cprng_fast *cprng;
108 *cprngp = cprng = percpu_getref(cprng_fast_percpu);
111 if (__predict_false(cprng->epoch != entropy_epoch()))
112 cprng_fast_schedule_reseed(cprng);
118 cprng_fast_put(struct cprng_fast *cprng, int s)
121 KASSERT((cprng == percpu_getref(cprng_fast_percpu)) &&
128 cprng_fast_schedule_reseed(struct cprng_fast *cprng __unused)
138 struct cprng_fast *cprng;
144 cprng = percpu_getref(cprng_fast_percpu);
146 cprng_fast_seed(cprng, seed);
147 cprng->epoch = epoch;
148 cprng->reseed_evcnt->ev_count++;
159 cprng_fast_seed(struct cprng_fast *cprng, const void *seed)
162 (void)memset(cprng->buf, 0, sizeof cprng->buf);
163 (void)memcpy(cprng->key, seed, sizeof cprng->key);
164 (void)memset(cprng->nonce, 0, sizeof cprng->nonce);
165 cprng->i = sizeof cprng->buf;
169 cprng_fast_buf(struct cprng_fast *cprng, void *buf, unsigned len)
174 KASSERT(cprng->i <= sizeof(cprng->buf));
175 KASSERT(len <= sizeof(cprng->buf));
177 n0 = MIN(n, sizeof(cprng->buf) - cprng->i);
178 memcpy(p, &cprng->buf[cprng->i], n0);
180 cprng->i += n0;
181 KASSERT(cprng->i <= sizeof(cprng->buf));
185 le64enc(cprng->nonce, 1 + le64dec(cprng->nonce));
186 chacha_stream(cprng->buf, sizeof(cprng->buf), 0, cprng->nonce,
187 cprng->key, 8);
188 memcpy(p, cprng->buf, n);
189 cprng->i = n;
198 struct cprng_fast *cprng;
201 KASSERT(len <= sizeof(cprng->buf));
203 s = cprng_fast_get(&cprng);
204 cprng_fast_buf(cprng, buf, len);
205 cprng_fast_put(cprng, s);