public override void NextBytes(byte[] bytes) { lock (this) { if (mDrbg == null) { mDrbg = mDrbgProvider.Get(mEntropySource); } // check if a reseed is required... if (mDrbg.Generate(bytes, null, mPredictionResistant) < 0) { mDrbg.Reseed(null); mDrbg.Generate(bytes, null, mPredictionResistant); } } }
private void lazyInitDRBG() { if (drbg == null) { drbg = drbgProvider.Get(entropySource); // FSM_STATE:5.6, "DRBG HEALTH CHECKS", "The module is performing DRBG Health Check self-test" // FSM_TRANS:5.5, "CONDITIONAL TEST", "DRBG HEALTH CHECKS", "Invoke DRBG Health Check" SelfTestExecutor.Validate(algorithm, drbg.CreateSelfTest(algorithm)); // instance health test // FSM_TRANS:5.6, "DRBG HEALTH CHECKS", "CONDITIONAL TEST", "DRBG Health Check successful" } }