/// <summary> /// Reset the CTRPrng instance /// </summary> public void Reset() { if (m_rngEngine != null) { m_rngEngine.Dispose(); m_rngEngine = null; } if (m_seedGenerator != null) { m_seedGenerator.Dispose(); m_seedGenerator = null; } if (m_rngGenerator != null) { m_rngGenerator.Dispose(); m_rngGenerator = null; } m_rngEngine = GetCipher(m_engineType); m_seedGenerator = GetSeedGenerator(m_seedType); m_rngGenerator = new CMG(m_rngEngine, true); if (m_seedGenerator != null) { m_rngGenerator.Initialize(m_seedGenerator.GetBytes(m_rngEngine.BlockSize + m_keySize)); } else { m_rngGenerator.Initialize(m_stateSeed); } m_rngGenerator.Generate(m_byteBuffer); m_bufferIndex = 0; }
private void Dispose(bool Disposing) { if (!m_isDisposed && Disposing) { try { if (m_rngGenerator != null) { m_rngGenerator.Dispose(); m_rngGenerator = null; } if (m_seedGenerator != null) { m_seedGenerator.Dispose(); m_seedGenerator = null; } if (m_byteBuffer != null) { Array.Clear(m_byteBuffer, 0, m_byteBuffer.Length); m_byteBuffer = null; } } catch { } m_isDisposed = true; } }
/// <summary> /// Reinitialize the internal state /// </summary> public void Reset() { if (m_rndGenerator != null) { m_rndGenerator.Dispose(); m_rndGenerator = null; } int rds = m_stateSeed.Length == 48 ? 14 : 22; RHX eng = new RHX(16, rds); m_rndGenerator = new CMG(eng); m_rndGenerator.Initialize(m_stateSeed); }
private void Dispose(bool Disposing) { if (!m_isDisposed && Disposing) { try { if (m_rndGenerator != null) { m_rndGenerator.Dispose(); m_rndGenerator = null; } if (m_stateSeed != null) { Array.Clear(m_stateSeed, 0, m_stateSeed.Length); m_stateSeed = null; } } catch { } m_isDisposed = true; } }
/// <summary> /// Outputs expected values for the SP20Drbg (key is 24 or 40) /// </summary> public string GetCTRVector() { CMG ctd = new CMG(new RHX()); int ksze = 48; byte[] key = new byte[ksze]; byte[] output = new byte[1024]; for (int i = 0; i < ksze; i++) { key[i] = (byte)i; } ctd.Initialize(key); ctd.Generate(output); while (output.Length > 32) { output = Reduce(output); } return(HexConverter.ToString(output)); }