示例#1
0
        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"
     }
 }