Beispiel #1
0
        /// <summary>
        /// Reset the seed <see cref="VTDev.Libraries.CEXEngine.Crypto.Enumeration.SeedGenerators">Seed Generator</see> and the <see cref="VTDev.Libraries.CEXEngine.Crypto.Enumeration.Digests">Digest</see> engines
        /// </summary>
        public void Reset()
        {
            if (m_seedEngine != null)
            {
                m_seedEngine.Dispose();
                m_seedEngine = null;
            }
            m_seedEngine = SeedGeneratorFromName.GetInstance(SeedEngine);

            // reset hash engine
            if (m_hashEngine != null)
            {
                m_hashEngine.Dispose();
                m_hashEngine = null;
            }
            m_hashEngine = DigestFromName.GetInstance(HashEngine);

            // if absent, generate the initial counter
            if (m_ctrLength == 0)
            {
                if (m_hashEngine.BlockSize < 72)
                {
                    m_ctrLength = CTRDEF_SIZE;
                }
                else
                {
                    m_ctrLength = CTRMAX_SIZE;
                }

                m_ctrVector = new byte[m_ctrLength];

                using (CSPRsg pool = new CSPRsg())
                    m_ctrVector = pool.GetBytes(m_ctrLength);
            }
        }
Beispiel #2
0
        private void Dispose(bool Disposing)
        {
            if (!_isDisposed && Disposing)
            {
                try
                {
                    if (_dgtEngine != null)
                    {
                        _dgtEngine.Dispose();
                        _dgtEngine = null;
                    }
                    if (_rndEngine != null)
                    {
                        _rndEngine.Dispose();
                        _rndEngine = null;
                    }
                    _K = 0;
                    _N = 0;
                    _T = 0;
                }
                catch { }

                _isDisposed = true;
            }
        }
Beispiel #3
0
 private void Dispose(bool Disposing)
 {
     if (!_isDisposed && Disposing)
     {
         try
         {
             if (_msgDigest != null && _disposeEngine)
             {
                 _msgDigest.Dispose();
                 _msgDigest = null;
             }
             if (_inputPad != null)
             {
                 Array.Clear(_inputPad, 0, _inputPad.Length);
                 _inputPad = null;
             }
             if (_outputPad != null)
             {
                 Array.Clear(_outputPad, 0, _outputPad.Length);
                 _outputPad = null;
             }
         }
         finally
         {
             _isDisposed = true;
         }
     }
 }
Beispiel #4
0
 private void Dispose(bool Disposing)
 {
     if (!_isDisposed && Disposing)
     {
         try
         {
             if (_digest != null && _disposeEngine)
             {
                 _digest.Dispose();
                 _digest = null;
             }
             if (_IV != null)
             {
                 Array.Clear(_IV, 0, _IV.Length);
                 _IV = null;
             }
             if (_Salt != null)
             {
                 Array.Clear(_Salt, 0, _Salt.Length);
                 _Salt = null;
             }
         }
         finally
         {
             _isDisposed = true;
         }
     }
 }
Beispiel #5
0
        /// <summary>
        /// Reset the RNGCryptoServiceProvider instance.
        /// </summary>
        public void Reset()
        {
            if (_digestEngine != null)
            {
                _digestEngine.Dispose();
                _digestEngine = null;
            }
            if (_seedGenerator != null)
            {
                _seedGenerator.Dispose();
                _seedGenerator = null;
            }

            _digestEngine = GetDigest(_digestType);
            _rngGenerator = new DGCDrbg(_digestEngine);

            if (_stateSeed != null)
            {
                _rngGenerator.Initialize(_stateSeed);
            }
            else
            {
                _seedGenerator = GetSeedGenerator(_seedType);
                _rngGenerator.Initialize(_seedGenerator.GetSeed((_digestEngine.BlockSize * 2) + 8));   // 2 * block + counter (2*bs+8)
            }

            _rngGenerator.Generate(_byteBuffer);
            _bufferIndex = 0;
        }
Beispiel #6
0
        private void Dispose(bool Disposing)
        {
            if (!m_isDisposed && Disposing)
            {
                try
                {
                    if (m_dgtEngine != null)
                    {
                        m_dgtEngine.Dispose();
                        m_dgtEngine = null;
                    }
                    if (m_rndEngine != null)
                    {
                        m_rndEngine.Dispose();
                        m_rndEngine = null;
                    }
                    if (_cptIf != null)
                    {
                        _cptIf.Dispose();
                        _cptIf = null;
                    }
                    if (m_X != null)
                    {
                        Array.Clear(m_X, 0, m_X.Length);
                        m_X = null;
                    }
                }
                catch { }

                m_isDisposed = true;
            }
        }
Beispiel #7
0
        private void Dispose(bool Disposing)
        {
            if (!m_isDisposed && Disposing)
            {
                try
                {
                    if (_treehash != null)
                    {
                        for (int i = 0; i < _treehash.Length; i++)
                        {
                            _treehash[i].Dispose();
                            _treehash = null;
                        }
                    }
                    if (_ndeRetain != null)
                    {
                        Array.Clear(_ndeRetain, 0, _ndeRetain.Length);
                        _ndeRetain = null;
                    }
                    if (_treeRoot != null)
                    {
                        Array.Clear(_treeRoot, 0, _treeRoot.Length);
                        _treeRoot = null;
                    }
                    if (_authPath != null)
                    {
                        Array.Clear(_authPath, 0, _authPath.Length);
                        _authPath = null;
                    }
                    if (_tailStack != null)
                    {
                        _tailStack.Clear();
                        _tailStack = null;
                    }
                    if (_heightOfNodes != null)
                    {
                        _heightOfNodes.Clear();
                        _heightOfNodes = null;
                    }
                    if (_msgDigestTree != null)
                    {
                        _msgDigestTree.Dispose();
                        _msgDigestTree = null;
                    }
                    if (_ndeIndex != null)
                    {
                        Array.Clear(_ndeIndex, 0, _ndeIndex.Length);
                        _ndeIndex = null;
                    }
                    _heightOfTree     = 0;
                    _mdLength         = 0;
                    m_K               = 0;
                    _indexForNextSeed = 0;
                    _heightOfNextSeed = 0;
                }
                catch { }

                m_isDisposed = true;
            }
        }
Beispiel #8
0
 private void Dispose(bool Disposing)
 {
     if (!m_isDisposed && Disposing)
     {
         try
         {
             if (m_digest != null && m_disposeEngine)
             {
                 m_digest.Dispose();
                 m_digest = null;
             }
             if (m_Salt != null)
             {
                 Array.Clear(m_Salt, 0, m_Salt.Length);
                 m_Salt = null;
             }
             if (m_Key != null)
             {
                 Array.Clear(m_Key, 0, m_Key.Length);
                 m_Key = null;
             }
         }
         finally
         {
             m_isDisposed = true;
         }
     }
 }
Beispiel #9
0
        /// <summary>
        /// Reset the DGCPrng instance
        /// </summary>
        public void Reset()
        {
            if (m_digestEngine != null)
            {
                m_digestEngine.Dispose();
                m_digestEngine = null;
            }
            if (m_seedGenerator != null)
            {
                m_seedGenerator.Dispose();
                m_seedGenerator = null;
            }

            m_digestEngine = GetDigest(m_digestType);
            m_rngGenerator = new DGC(m_digestEngine);

            if (m_stateSeed != null)
            {
                m_rngGenerator.Initialize(m_stateSeed);
            }
            else
            {
                m_seedGenerator = GetSeedGenerator(m_seedType);
                m_rngGenerator.Initialize(m_seedGenerator.GetBytes((m_digestEngine.BlockSize * 2) + 8));   // 2 * block + counter (2*bsz+8)
            }

            m_rngGenerator.Generate(m_byteBuffer);
            m_bufferIndex = 0;
        }
Beispiel #10
0
 private void Dispose(bool Disposing)
 {
     if (!m_isDisposed && Disposing)
     {
         try
         {
             if (m_msgDigest != null && m_disposeEngine)
             {
                 m_msgDigest.Dispose();
                 m_msgDigest = null;
             }
             if (m_inputPad != null)
             {
                 Array.Clear(m_inputPad, 0, m_inputPad.Length);
                 m_inputPad = null;
             }
             if (m_outputPad != null)
             {
                 Array.Clear(m_outputPad, 0, m_outputPad.Length);
                 m_outputPad = null;
             }
         }
         finally
         {
             m_isDisposed = true;
         }
     }
 }
Beispiel #11
0
        private void Dispose(bool Disposing)
        {
            if (!m_isDisposed && Disposing)
            {
                try
                {
                    if (m_dgtEngine != null)
                    {
                        m_dgtEngine.Dispose();
                        m_dgtEngine = null;
                    }
                    if (m_rndEngine != null)
                    {
                        m_rndEngine.Dispose();
                        m_rndEngine = null;
                    }
                    m_K = 0;
                    m_N = 0;
                    m_T = 0;
                }
                catch { }

                m_isDisposed = true;
            }
        }
Beispiel #12
0
 private void Dispose(bool Disposing)
 {
     if (!_isDisposed && Disposing)
     {
         try
         {
             if (_msgDigest != null && _disposeEngine)
             {
                 _msgDigest.Dispose();
                 _msgDigest = null;
             }
             if (_dgtSeed != null)
             {
                 Array.Clear(_dgtSeed, 0, _dgtSeed.Length);
                 _dgtSeed = null;
             }
             if (_dgtState != null)
             {
                 Array.Clear(_dgtState, 0, _dgtState.Length);
                 _dgtState = null;
             }
         }
         finally
         {
             _isDisposed = true;
         }
     }
 }
Beispiel #13
0
 private void Dispose(bool Disposing)
 {
     if (!m_isDisposed && Disposing)
     {
         try
         {
             if (m_disposeEngine)
             {
                 if (m_digestEngine != null)
                 {
                     m_digestEngine.Dispose();
                     m_digestEngine = null;
                 }
             }
             if (m_disposeStream)
             {
                 if (m_inStream != null)
                 {
                     m_inStream.Dispose();
                     m_inStream = null;
                 }
             }
         }
         finally
         {
             m_isDisposed = true;
         }
     }
 }
Beispiel #14
0
 private void Dispose(bool Disposing)
 {
     if (!_isDisposed && Disposing)
     {
         try
         {
             if (_keyEngine != null)
             {
                 _keyEngine.Dispose();
                 _keyEngine = null;
             }
             if (_expKey != null)
             {
                 Array.Clear(_expKey, 0, _expKey.Length);
                 _expKey = null;
             }
             if (_sprBox != null)
             {
                 Array.Clear(_sprBox, 0, _sprBox.Length);
                 _sprBox = null;
             }
             if (_hkdfInfo != null)
             {
                 Array.Clear(_hkdfInfo, 0, _hkdfInfo.Length);
                 _hkdfInfo = null;
             }
         }
         finally
         {
             _isDisposed = true;
         }
     }
 }
Beispiel #15
0
        private void Dispose(bool Disposing)
        {
            if (!m_isDisposed && Disposing)
            {
                try
                {
                    if (_msgDigestOTS != null)
                    {
                        _msgDigestOTS.Dispose();
                        _msgDigestOTS = null;
                    }
                    if (_privateKeyOTS != null)
                    {
                        Array.Clear(_privateKeyOTS, 0, _privateKeyOTS.Length);
                        _privateKeyOTS = null;
                    }
                    if (_msgHash != null)
                    {
                        Array.Clear(_msgHash, 0, _msgHash.Length);
                        _msgHash = null;
                    }
                    if (_sgnCode != null)
                    {
                        Array.Clear(_sgnCode, 0, _sgnCode.Length);
                        _sgnCode = null;
                    }
                    if (_gmssRand != null)
                    {
                        _gmssRand.Dispose();
                        _gmssRand = null;
                    }
                    if (_otsSeed != null)
                    {
                        Array.Clear(_otsSeed, 0, _otsSeed.Length);
                        _otsSeed = null;
                    }
                    _mdSize   = 0;
                    m_keySize = 0;
                    _W        = 0;
                    _msgSize  = 0;
                    m_K       = 0;
                    _R        = 0;
                    _testCtr  = 0;
                    _Counter  = 0;
                    _iI       = 0;
                    _test8    = 0;
                    _big8     = 0;
                    _steps    = 0;
                    _chkSum   = 0;
                    _height   = 0;
                }
                catch { }

                m_isDisposed = true;
            }
        }
Beispiel #16
0
        private void Dispose(bool Disposing)
        {
            if (!m_isDisposed && Disposing)
            {
                try
                {
                    if (_msgDigestOTS != null)
                    {
                        _msgDigestOTS.Dispose();
                        _msgDigestOTS = null;
                    }
                    if (_gmssRandom != null)
                    {
                        _gmssRandom.Dispose();
                        _gmssRandom = null;
                    }
                    if (_leaf != null)
                    {
                        Array.Clear(_leaf, 0, _leaf.Length);
                        _leaf = null;
                    }
                    if (_concHashs != null)
                    {
                        Array.Clear(_concHashs, 0, _concHashs.Length);
                        _concHashs = null;
                    }
                    if (_seed != null)
                    {
                        Array.Clear(_seed, 0, _seed.Length);
                        _seed = null;
                    }
                    if (_privateKeyOTS != null)
                    {
                        Array.Clear(_privateKeyOTS, 0, _privateKeyOTS.Length);
                        _privateKeyOTS = null;
                    }
                    _mdsize    = 0;
                    m_keySize  = 0;
                    _ctr1      = 0;
                    _ctr2      = 0;
                    _twoPowerW = 0;
                    _W         = 0;
                    _steps     = 0;
                }
                catch { }

                m_isDisposed = true;
            }
        }
Beispiel #17
0
        private void Dispose(bool Disposing)
        {
            if (!m_isDisposed && Disposing)
            {
                try
                {
                    if (_gmssRand != null)
                    {
                        _gmssRand.Dispose();
                        _gmssRand = null;
                    }
                    if (m_rndEngine != null)
                    {
                        m_rndEngine.Dispose();
                        m_rndEngine = null;
                    }
                    if (_msDigestTree != null)
                    {
                        _msDigestTree.Dispose();
                        _msDigestTree = null;
                    }
                    if (_currentSeeds != null)
                    {
                        Array.Clear(_currentSeeds, 0, _currentSeeds.Length);
                        _currentSeeds = null;
                    }
                    if (_nextNextSeeds != null)
                    {
                        Array.Clear(_nextNextSeeds, 0, _nextNextSeeds.Length);
                        _nextNextSeeds = null;
                    }
                    if (_currentRootSigs != null)
                    {
                        Array.Clear(_currentRootSigs, 0, _currentRootSigs.Length);
                        _currentRootSigs = null;
                    }
                    if (_currentRootSigs != null)
                    {
                        Array.Clear(_currentRootSigs, 0, _currentRootSigs.Length);
                        _currentRootSigs = null;
                    }
                    _mdLength = 0;
                }
                catch { }

                m_isDisposed = true;
            }
        }
Beispiel #18
0
        private void Dispose(bool Disposing)
        {
            if (!m_isDisposed && Disposing)
            {
                try
                {
                    if (_msgDigestTree != null)
                    {
                        _msgDigestTree.Dispose();
                        _msgDigestTree = null;
                    }
                }
                catch { }

                m_isDisposed = true;
            }
        }
Beispiel #19
0
 private void Dispose(bool Disposing)
 {
     if (!_isDisposed && Disposing)
     {
         if (_digest != null && _disposeEngine)
         {
             _digest.Dispose();
             _digest = null;
         }
         if (_rndData != null)
         {
             Array.Clear(_rndData, 0, _rndData.Length);
             _rndData = null;
         }
         _isDisposed = true;
     }
 }
Beispiel #20
0
 private void Dispose(bool Disposing)
 {
     if (!m_isDisposed && Disposing)
     {
         if (m_digest != null && m_disposeEngine)
         {
             m_digest.Dispose();
             m_digest = null;
         }
         if (m_rndData != null)
         {
             Array.Clear(m_rndData, 0, m_rndData.Length);
             m_rndData = null;
         }
         m_isDisposed = true;
     }
 }
Beispiel #21
0
        private void Dispose(bool Disposing)
        {
            if (!m_isDisposed && Disposing)
            {
                try
                {
                    if (_tailStack != null)
                    {
                        _tailStack.Clear();
                        _tailStack = null;
                    }
                    if (_heightOfNodes != null)
                    {
                        _heightOfNodes.Clear();
                        _heightOfNodes = null;
                    }
                    if (_firstNode != null)
                    {
                        Array.Clear(_firstNode, 0, _firstNode.Length);
                        _firstNode = null;
                    }
                    if (_seedActive != null)
                    {
                        Array.Clear(_seedActive, 0, _seedActive.Length);
                        _seedActive = null;
                    }
                    if (_seedNext != null)
                    {
                        Array.Clear(_seedNext, 0, _seedNext.Length);
                        _seedNext = null;
                    }
                    if (_msgDigestTree != null)
                    {
                        _msgDigestTree.Dispose();
                        _msgDigestTree = null;
                    }
                    _maxHeight       = 0;
                    _tailLength      = 0;
                    _firstNodeHeight = 0;
                }
                catch { }

                m_isDisposed = true;
            }
        }
Beispiel #22
0
        private void Dispose(bool Disposing)
        {
            if (!_isDisposed && Disposing)
            {
                try
                {
                    if (_dgtEngine != null)
                    {
                        _dgtEngine.Dispose();
                        _dgtEngine = null;
                    }
                    if (_asyCipher != null)
                    {
                        _asyCipher.Dispose();
                        _asyCipher = null;
                    }
                }
                catch { }

                _isDisposed = true;
            }
        }
Beispiel #23
0
        private void Dispose(bool Disposing)
        {
            if (!m_isDisposed && Disposing)
            {
                try
                {
                    if (_msgDigestTrees != null)
                    {
                        _msgDigestTrees.Dispose();
                        _msgDigestTrees = null;
                    }
                    if (_gmssRandom != null)
                    {
                        _gmssRandom.Dispose();
                        _gmssRandom = null;
                    }
                    if (_index != null)
                    {
                        Array.Clear(_index, 0, _index.Length);
                        _index = null;
                    }
                    if (_currentAuthPaths != null)
                    {
                        Array.Clear(_currentAuthPaths, 0, _currentAuthPaths.Length);
                        _currentAuthPaths = null;
                    }
                    if (_subtreeRootSig != null)
                    {
                        Array.Clear(_subtreeRootSig, 0, _subtreeRootSig.Length);
                        _subtreeRootSig = null;
                    }
                    _mdLength = 0;
                    _numLayer = 0;
                }
                catch { }

                m_isDisposed = true;
            }
        }
Beispiel #24
0
        private void Dispose(bool Disposing)
        {
            if (!m_isDisposed && Disposing)
            {
                try
                {
                    if (m_dgtEngine != null)
                    {
                        m_dgtEngine.Dispose();
                        m_dgtEngine = null;
                    }
                    if (m_asyCipher != null)
                    {
                        m_asyCipher.Dispose();
                        m_asyCipher = null;
                    }
                }
                catch { }

                m_isDisposed = true;
            }
        }
Beispiel #25
0
 private void Dispose(bool Disposing)
 {
     if (!m_isDisposed && Disposing)
     {
         try
         {
             if (m_kdfExtractor != null)
             {
                 m_kdfExtractor.Dispose();
                 m_kdfExtractor = null;
             }
             if (m_expKey != null)
             {
                 Array.Clear(m_expKey, 0, m_expKey.Length);
                 m_expKey = null;
             }
         }
         finally
         {
             m_isDisposed = true;
         }
     }
 }
Beispiel #26
0
        /// <summary>
        /// Reset the seed <see cref="Prngs">PRNG</see> and the <see cref="Digests">Digest</see> engines
        /// </summary>
        public void Reset()
        {
            if (_seedEngine != null)
            {
                _seedEngine.Dispose();
                _seedEngine = null;
            }

            // select the prng
            switch (SeedEngine)
            {
            case Prngs.BBSG:
                _seedEngine = new BBSG();
                break;

            case Prngs.CCG:
                _seedEngine = new CCG();
                break;

            case Prngs.MODEXPG:
                _seedEngine = new MODEXPG();
                break;

            case Prngs.QCG1:
                _seedEngine = new QCG1();
                break;

            case Prngs.QCG2:
                _seedEngine = new QCG2();
                break;

            default:
                _seedEngine = new CSPRng();
                break;
            }

            if (_hashEngine != null)
            {
                _hashEngine.Dispose();
                _hashEngine = null;
            }

            // select the digest
            switch (HashEngine)
            {
            case Digests.Blake256:
                _hashEngine = new Blake256();
                break;

            case Digests.Blake512:
                _hashEngine = new Blake512();
                break;

            case Digests.Keccak256:
                _hashEngine = new Keccak256();
                break;

            case Digests.Keccak512:
                _hashEngine = new Keccak512();
                break;

            case Digests.SHA256:
                _hashEngine = new SHA256();
                break;

            case Digests.Skein256:
                _hashEngine = new Skein256();
                break;

            case Digests.Skein512:
                _hashEngine = new Skein512();
                break;

            case Digests.Skein1024:
                _hashEngine = new Skein1024();
                break;

            default:
                _hashEngine = new SHA512();
                break;
            }
        }