Exemplo n.º 1
0
        private HashAlgorithm CreateHashAlgorithm(FileHashAlgorithm hashAlgorithm)
        {
            switch (hashAlgorithm)
            {
            case FileHashAlgorithm.MD5:
                return(MD5.Create());

            case FileHashAlgorithm.SHA1:
                return(SHA1.Create());

            case FileHashAlgorithm.SHA256:
                return(SHA256.Create());

            case FileHashAlgorithm.SHA384:
                return(SHA384.Create());

            case FileHashAlgorithm.SHA512:
                return(SHA512.Create());

            case FileHashAlgorithm.CRC32:
                return(new Crc32Algorithm());

            default:
                throw new ArgumentOutOfRangeException(nameof(hashAlgorithm), hashAlgorithm, null);
            }
        }
Exemplo n.º 2
0
 public Task <byte[]> ComputeAsync(string path, FileHashAlgorithm hashAlgorithm)
 {
     try
     {
         using (var fileStream = System.IO.File.OpenRead(path))
             using (var progressingStream = new ProgressingReadStream(fileStream, OnProgressChanged))
                 using (var hash = CreateHashAlgorithm(hashAlgorithm))
                     using (_cancellationTokenSource.Token.Register(() => fileStream.Dispose()))
                     {
                         var result = hash.ComputeHash(progressingStream);
                         return(Task.FromResult(result));
                     }
     }
     catch (Exception) when(_cancellationTokenSource.IsCancellationRequested)
     {
         return(null);
     }
 }
Exemplo n.º 3
0
        public static HashAlgorithm CreateHashAlgorithm(this FileHashAlgorithm algorithm)
        {
            switch (algorithm)
            {
            case FileHashAlgorithm.SHA256:
                return(SHA256.Create());

            case FileHashAlgorithm.SHA512:
                return(SHA512.Create());

            case FileHashAlgorithm.SHA1:
                return(SHA1.Create());

            case FileHashAlgorithm.MD5:
                return(MD5.Create());

            case FileHashAlgorithm.CRC32:
                return(new Crc32Algorithm());

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Exemplo n.º 4
0
 public ComputeHashViewModel(string path, FileHashAlgorithm hashAlgorithm, ITargetedRestClient restClient)
 {
     _path         = path;
     HashAlgorithm = hashAlgorithm;
     _restClient   = restClient;
 }