CopyStreamChunk() static private method

static private CopyStreamChunk ( Stream stream, Stream dest_stream, Array buffer, int length ) : void
stream Stream
dest_stream Stream
buffer Array
length int
return void
Esempio n. 1
0
        private static byte[] HashStream(Stream stream, ImageWriter writer, out int strong_name_pointer)
        {
            Section       section                      = writer.text;
            int           headerSize                   = (int)writer.GetHeaderSize();
            int           pointerToRawData             = (int)section.PointerToRawData;
            DataDirectory strongNameSignatureDirectory = writer.GetStrongNameSignatureDirectory();

            if (strongNameSignatureDirectory.Size == 0)
            {
                throw new InvalidOperationException();
            }
            strong_name_pointer = (int)((long)pointerToRawData + (ulong)(strongNameSignatureDirectory.VirtualAddress - section.VirtualAddress));
            int         size        = (int)strongNameSignatureDirectory.Size;
            SHA1Managed sHA1Managed = new SHA1Managed();

            byte[] numArray = new byte[8192];
            using (CryptoStream cryptoStream = new CryptoStream(Stream.Null, sHA1Managed, CryptoStreamMode.Write))
            {
                stream.Seek((long)0, SeekOrigin.Begin);
                CryptoService.CopyStreamChunk(stream, cryptoStream, numArray, headerSize);
                stream.Seek((long)pointerToRawData, SeekOrigin.Begin);
                CryptoService.CopyStreamChunk(stream, cryptoStream, numArray, strong_name_pointer - pointerToRawData);
                stream.Seek((long)size, SeekOrigin.Current);
                CryptoService.CopyStreamChunk(stream, cryptoStream, numArray, (int)(stream.Length - (long)(strong_name_pointer + size)));
            }
            return(sHA1Managed.Hash);
        }
Esempio n. 2
0
        public static byte[] ComputeHash(string file)
        {
            if (!File.Exists(file))
            {
                return(Empty <byte> .Array);
            }
            SHA1Managed sHA1Managed = new SHA1Managed();

            using (FileStream fileStream = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                byte[] numArray = new byte[8192];
                using (CryptoStream cryptoStream = new CryptoStream(Stream.Null, sHA1Managed, CryptoStreamMode.Write))
                {
                    CryptoService.CopyStreamChunk(fileStream, cryptoStream, numArray, (int)fileStream.Length);
                }
            }
            return(sHA1Managed.Hash);
        }