X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=tfprng.c;h=4db2418964ab44ad7036221b4105c12c69478fb1;hb=HEAD;hp=934f38eb323d91a813612224461f4b50d38752b9;hpb=efa545d64b910923248233618e774ca3b87efebb;p=tfcrypt.git diff --git a/tfprng.c b/tfprng.c index 934f38e..4db2418 100644 --- a/tfprng.c +++ b/tfprng.c @@ -19,7 +19,7 @@ void tf_prng_seedkey_r(void *sdata, const void *skey) TF_UNIT_TYPE k[TF_NR_KEY_UNITS]; struct tf_prng_data *rprng = sdata; - memset(rprng, 0, sizeof(struct tf_prng_data)); + memset(rprng, 0, tf_prng_datasize()); if (!skey) return; memcpy(k, skey, TF_KEY_SIZE); @@ -52,7 +52,7 @@ void tf_prng_seed_r(void *sdata, TF_UNIT_TYPE seed) struct tf_prng_data *rprng = sdata; size_t x; - memset(rprng, 0, sizeof(struct tf_prng_data)); + memset(rprng, 0, tf_prng_datasize()); for (x = 0; x < TF_NR_KEY_UNITS; x++) k[x] = seed; tfe_init(&rprng->tfe, k); rprng->init = 1; @@ -85,20 +85,10 @@ TF_UNIT_TYPE tf_prng_range_r(void *sdata, TF_UNIT_TYPE s, TF_UNIT_TYPE d) { TF_UNIT_TYPE c = tf_prng_random_r(sdata); if (d <= s) return s; - return s + c / ((TF_UNIT_TYPE)~0 / (d - s + 1) + 1); + return TF_PRNG_RANGE(c, TF_UNIT_TYPE, s, d); } TF_UNIT_TYPE tf_prng_range(TF_UNIT_TYPE s, TF_UNIT_TYPE d) { return tf_prng_range_r(&tf_prng_sdata, s, d); } - -void tf_prng_srand(unsigned seed) -{ - tf_prng_seed((TF_UNIT_TYPE)seed); -} - -int tf_prng_rand(void) -{ - return (int)tf_prng_range(0, (TF_UNIT_TYPE)TF_PRNG_LEGACY_RAND_MAX); -}