SHA1Hash() public static method

public static SHA1Hash ( Stream data ) : string
data System.IO.Stream
return string
        public ObjectCreator(Manifest manifest, InstalledMods mods)
        {
            typeCache = new Cache <string, Type>(FindType);
            ctorCache = new Cache <Type, ConstructorInfo>(GetCtor);

            // Allow mods to load types from the core Game assembly, and any additional assemblies they specify.
            // Assemblies can only be loaded from directories to avoid circular dependencies on package loaders.
            var assemblyList = new List <Assembly>()
            {
                typeof(Game).Assembly
            };

            foreach (var path in manifest.Assemblies)
            {
                var resolvedPath = FileSystem.FileSystem.ResolveAssemblyPath(path, manifest, mods);
                if (resolvedPath == null)
                {
                    throw new FileNotFoundException("Assembly `{0}` not found.".F(path));
                }

                // .NET doesn't provide any way of querying the metadata of an assembly without either:
                //   (a) loading duplicate data into the application domain, breaking the world.
                //   (b) crashing if the assembly has already been loaded.
                // We can't check the internal name of the assembly, so we'll work off the data instead
                var hash = CryptoUtil.SHA1Hash(File.ReadAllBytes(resolvedPath));

                Assembly assembly;
                if (!ResolvedAssemblies.TryGetValue(hash, out assembly))
                {
                    assembly = Assembly.LoadFile(resolvedPath);
                    ResolvedAssemblies.Add(hash, assembly);
                }

                assemblyList.Add(assembly);
            }

            AppDomain.CurrentDomain.AssemblyResolve += ResolveAssembly;
            assemblies = assemblyList.SelectMany(asm => asm.GetNamespaces().Select(ns => Pair.New(asm, ns))).ToArray();
        }