コード例 #1
0
 internal static ImmutableArray <byte> CalculateChecksum(byte[] buffer, int offset, int count, SourceHashAlgorithm algorithmId)
 {
     using (var algorithm = CryptographicHashProvider.TryGetAlgorithm(algorithmId))
     {
         Debug.Assert(algorithm != null);
         return(ImmutableArray.Create(algorithm.ComputeHash(buffer, offset, count)));
     }
 }
コード例 #2
0
        internal static ImmutableArray <byte> CalculateChecksum(Stream stream, SourceHashAlgorithm algorithmId)
        {
            using (var algorithm = CryptographicHashProvider.TryGetAlgorithm(algorithmId))
            {
                Debug.Assert(algorithm != null);
                if (stream.CanSeek)
                {
                    stream.Seek(0, SeekOrigin.Begin);
                }

                return(ImmutableArray.Create(algorithm.ComputeHash(stream)));
            }
        }
コード例 #3
0
        protected SourceText(ImmutableArray <byte> checksum        = default,
                             SourceHashAlgorithm checksumAlgorithm = SourceHashAlgorithm.Sha1,
                             SourceTextContainer container         = null)
        {
            ValidateChecksumAlgorithm(checksumAlgorithm);
            if (!checksum.IsDefault && checksum.Length != CryptographicHashProvider.GetHashSize(checksumAlgorithm))
            {
                throw new ArgumentException(nameof(checksum));
            }

            ChecksumAlgorithm = checksumAlgorithm;
            _lazyChecksum     = checksum;
            _lazyContainer    = container;
        }