Ejemplo n.º 1
0
        private async Task <ISafeBytes> TransformCharToSafeBytesAsync(char c, Encoding encoding)
        {
            var bytes  = _textService.GetBytes(c, encoding);
            var stream = new SafeMemoryStream();
            await stream.WriteAsync(bytes, 0, bytes.Length)
            .ConfigureAwait(false);

            var safeBytes = _safeBytesFactory.Create();
            await safeBytes.AppendManyAsync(stream).ConfigureAwait(false);

            return(safeBytes);
        }
Ejemplo n.º 2
0
 /// <inheritdoc />
 /// <inheritdoc cref="DisposableBase.ThrowIfDisposed"/>
 /// <exception cref="ArgumentNullException"> <paramref name="character" /> is <see langword="null" />. </exception>
 /// <exception cref="ArgumentOutOfRangeException"> <paramref name="character" /> is null or empty. </exception>
 public async Task InsertAsync(int position, ISafeBytes character, Encoding encoding = Encoding.Utf16LittleEndian)
 {
     ThrowIfDisposed();
     if (position < 0 || position > Length)
     {
         throw new ArgumentOutOfRangeException(nameof(position));
     }
     if (SafeBytes.IsNullOrEmpty(character))
     {
         throw new ArgumentNullException(nameof(character));
     }
     if (encoding != InnerEncoding)
     {
         character = await ConvertEncodingAsync(character, encoding, InnerEncoding)
                     .ConfigureAwait(false);
     }
     _charBytesList.Insert(position, character);
 }
Ejemplo n.º 3
0
 /// <inheritdoc />
 /// <exception cref="ArgumentNullException"><paramref name="character" /> is <see langword="null" />. </exception>
 /// <exception cref="ArgumentOutOfRangeException">If position is less than zero or higher than the length.  </exception>
 /// <inheritdoc cref="DisposableBase.ThrowIfDisposed"/>
 public Task AppendAsync(ISafeBytes character, Encoding encoding = Encoding.Utf16LittleEndian)
 {
     return(InsertAsync(Length, character, encoding));
 }
Ejemplo n.º 4
0
        private async Task <char> TransformSafeBytesToCharAsync(IReadOnlySafeBytes safeBytes, Encoding encoding)
        {
            var byteBuffer = await safeBytes.RevealDecryptedBytesAsync().ConfigureAwait(false);

            try
            {
                return(_textService.GetChars(byteBuffer, encoding).First());
            }
            finally
            {
                Array.Clear(byteBuffer, 0, byteBuffer.Length);
            }
        }
Ejemplo n.º 5
0
        private async Task <ISafeBytes> ConvertEncodingAsync(IReadOnlySafeBytes character, Encoding sourceEncoding, Encoding destinationEncoding)
        {
            var buffer = await character.RevealDecryptedBytesAsync().ConfigureAwait(false);

            try
            {
                buffer = _textService.Convert(sourceEncoding, destinationEncoding, buffer);
                var safeBytes = _safeBytesFactory.Create();
                var stream    = new SafeMemoryStream(buffer);
                await safeBytes.AppendManyAsync(stream)
                .ConfigureAwait(false);

                return(safeBytes);
            }
            finally
            {
                Array.Clear(buffer, 0, buffer.Length);
            }
        }