X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fcrypto.h;h=ac96ea88e1a676b4bdc902f5641709b7b4f41081;hb=c45a3fd7319d03bd147448a017f5aaed3b46fdfe;hp=4c7d23bfa2dca65047ab216447be53aa194b216d;hpb=2c6b2d70e6640f39563ad7bb0aa0ba87f883848c;p=tinc diff --git a/src/crypto.h b/src/crypto.h index 4c7d23bf..ac96ea88 100644 --- a/src/crypto.h +++ b/src/crypto.h @@ -23,7 +23,20 @@ */ extern void crypto_init(void); -extern void crypto_exit(void); -extern void randomize(void *buf, size_t buflen); +extern uint64_t xoshiro(void); +extern void prng_init(void); +extern void prng_randomize(void *buf, size_t buflen); + +static inline uint32_t prng(uint32_t limit) { + uint64_t bins = UINT64_MAX / limit; + uint64_t reject_after = bins * limit; + uint64_t value; + + do { + value = xoshiro(); + } while(value >= reject_after); + + return value / bins; +} #endif