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))); } }
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))); } }
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; }