Esempio n. 1
0
        /// <summary>
        /// 지정한 <paramref name="stream"/>을 비동기적으로 압축복원하는 Task를 빌드합니다.
        /// </summary>
        /// <param name="compressor">Compressor</param>
        /// <param name="stream">압축 해제할 스트림</param>
        /// <returns>압축해제된 스트림을 결과로 제공하는 <see cref="Task{Stream}"/></returns>
        public static Task<Stream> DecompressTask(this ICompressor compressor, Stream stream) {
            compressor.ShouldNotBeNull("compressor");
            stream.ShouldNotBeNull("stream");

            // GZipStream, DeflateStream의 비동기 함수인 BeginRead, BeginWrite 등은 실제로는 StreamExtensions 에서 처리해주고, 
            // 메모리에 다 올라온 byte[]에 대해서 Computed-bound 비동기 방식으로 압축 해제를 수행한다.

            return
                stream.ReadAllBytesAsync()
                    .ContinueWith<Stream>(antecedent => new MemoryStream(compressor.DecompressTask(antecedent.Result).Result),
                                          TaskContinuationOptions.ExecuteSynchronously);
        }
Esempio n. 2
0
 /// <summary>
 /// 대칭형 암호화 알고리즘을 이용하여, <paramref name="plainStream"/>을 암호화하여 스트림으로 반환합니다.
 /// </summary>
 /// <param name="encryptor">대칭형 암호화 인스턴스</param>
 /// <param name="plainStream">원본 스트림</param>
 /// <returns>암호화된 스트림</returns>
 public static Stream EncryptStream(this ISymmetricEncryptor encryptor, Stream plainStream) {
     plainStream.ShouldNotBeNull("plainStream");
     return new MemoryStream(encryptor.Encrypt(plainStream.ToBytes()));
 }
Esempio n. 3
0
 /// <summary>
 /// 대칭형 암호화 알고리즘을 이용하여, <paramref name="cipherStream"/>을 복호화한 스트림을 반환합니다.
 /// </summary>
 /// <param name="encryptor">대칭형 암호화 인스턴스</param>
 /// <param name="cipherStream">암호화된 정보를 가진 스트림</param>
 /// <returns>복호화된 정보를 가진 스트림</returns>
 public static Stream DecryptString(this ISymmetricEncryptor encryptor, Stream cipherStream) {
     cipherStream.ShouldNotBeNull("cipherStream");
     return new MemoryStream(encryptor.Decrypt(cipherStream.ToBytes()));
 }