Example #1
0
        private void Encrypt(byte b)
        {
            //Mix the with arbitrary bytes
            _realBytePosition = _fastRandom.GetInt(0, SaltSize);
            var arbitraryBytes = _fastRandom.GetBytes(SaltSize);

            RuntimeHelper.ExecuteCodeWithGuaranteedCleanup(
                //Action
                () =>
            {
                arbitraryBytes[_realBytePosition] = b;
                //Get key
                _encryptionKey = _fastRandom.GetBytes(KeySize);
                //Encrypt
                var encryptedBuffer = _encryptor.Encrypt(arbitraryBytes, _encryptionKey);
                RuntimeHelper.ExecuteCodeWithGuaranteedCleanup(
                    //Action
                    () =>
                {
                    //Add arbitrary bytes
                    _encryptedByteLength = encryptedBuffer.Length;
                    _encryptedByte       = GetMemoryProtectableSizedBytes(encryptedBuffer);
                },
                    //Cleanup
                    () =>
                {
                    if (encryptedBuffer != null)
                    {
                        Array.Clear(encryptedBuffer, 0, encryptedBuffer.Length);
                    }
                });
            },
                //Cleanup
                () =>
            {
                Array.Clear(arbitraryBytes, 0, arbitraryBytes.Length);
            });
        }
Example #2
0
        private void AddArbitraryByte()
        {
            var safeByte = _safeByteFactory.GetByByte((byte)_fastRandom.GetInt(0, 256));

            _safeByteCollection.Append(safeByte);
        }