diff --git a/src/sm4_rng.c b/src/sm4_rng.c index e6958bc9..ed11596b 100644 --- a/src/sm4_rng.c +++ b/src/sm4_rng.c @@ -121,6 +121,9 @@ int sm4_rng_update(SM4_RNG *rng, const uint8_t seed[32]) sm4_encrypt(&sm4_key, rng->V, rng->K); be_incr(rng->V); sm4_encrypt(&sm4_key, rng->V, rng->V); + + memxor(rng->K, seed, 16); + memxor(rng->V, seed + 16, 16); return 1; } @@ -182,7 +185,9 @@ int sm4_rng_reseed(SM4_RNG *rng, const uint8_t *addin, size_t addin_len) sm4_df_finish(&df_ctx, seed); sm4_rng_update(rng, seed); - + + rng->reseed_counter = 1; + rng->last_reseed_time = time(NULL); gmssl_secure_clear(&df_ctx, sizeof(df_ctx)); gmssl_secure_clear(entropy, sizeof(entropy));