public void Write(Stream stream, AndroidApkSigningTool.HashAlgorithmInfo hashAlgorithmInfo) { using (var manifestHasher = hashAlgorithmInfo.HashAlgorithmFactory()) { manifestHasher.Initialize(); MainSection.Write(stream, manifestHasher, hashAlgorithmInfo); foreach (var section in AdditionalSections.Values) { section.Write(stream, manifestHasher, hashAlgorithmInfo); } //stream.Write(NewLineBytes,0, NewLineBytes.Length); manifestHasher.TransformFinalBlock(new byte[0], 0, 0); Digest = Convert.ToBase64String(manifestHasher.Hash); } }
public void Write(Stream target, HashAlgorithm manifestHasher, AndroidApkSigningTool.HashAlgorithmInfo hashAlgorithmInfo) { using (var sectionHasher = hashAlgorithmInfo.HashAlgorithmFactory()) { sectionHasher.Initialize(); byte[] writtenData = target.WriteManifestLine($"{Name}: {Value}"); manifestHasher.TransformBlock(writtenData, 0, writtenData.Length, null, 0); sectionHasher.TransformBlock(writtenData, 0, writtenData.Length, null, 0); foreach (var entry in this) { writtenData = target.WriteManifestLine($"{entry.Key}: {entry.Value}"); manifestHasher.TransformBlock(writtenData, 0, writtenData.Length, null, 0); sectionHasher.TransformBlock(writtenData, 0, writtenData.Length, null, 0); } target.Write(Manifest.NewLineBytes, 0, Manifest.NewLineBytes.Length); manifestHasher.TransformFinalBlock(Manifest.NewLineBytes, 0, Manifest.NewLineBytes.Length); sectionHasher.TransformFinalBlock(Manifest.NewLineBytes, 0, Manifest.NewLineBytes.Length); Digest = Convert.ToBase64String(sectionHasher.Hash); } }