public bool VerifySha512sum(string filePath, out Stream cleartext)
 {
     using (var file = this.filesystemProvider.OpenRead(filePath))
         using (var certificate = this.LoadCertificate())
         {
             return(PgpClearsignUtilities.ReadAndVerifyFile(file, certificate, out cleartext));
         }
 }
Exemple #2
0
        private static void Verify(string[] args)
        {
            if (args.Length < 5)
            {
                ShowHelp();
                return;
            }

            var checksumFileName    = args[1];
            var algorithmName       = args[2];
            var certificateFileName = args[3];
            var inputFileNames      = args.Skip(4).ToArray();

            // Signature first, then hash
            using (var checksumFile = File.OpenRead(checksumFileName))
                using (var certificate = File.OpenRead(certificateFileName))
                {
                    Stream cleartext;
                    var    passed = PgpClearsignUtilities.ReadAndVerifyFile(checksumFile, certificate, out cleartext);
                    using (cleartext)
                    {
                        if (!passed)
                        {
                            throw new Exception("Signature verification failed");
                        }

                        using (var hashAlgorithm = HashAlgorithm.Create(algorithmName))
                        {
                            foreach (var inputFileName in inputFileNames)
                            {
                                using (var inputFile = File.OpenRead(inputFileName))
                                {
                                    var valid = ChecksumFileUtilities.ValidateChecksum(hashAlgorithm, cleartext, Path.GetFileName(inputFileName), inputFile);
                                    if (!valid)
                                    {
                                        throw new Exception($"File {inputFileName} failed checksum");
                                    }
                                }
                            }
                        }
                    }
                }

            Console.WriteLine("All files successfully verified");
        }
Exemple #3
0
        private static void Create(string[] args)
        {
            if (args.Length < 6)
            {
                ShowHelp();
                return;
            }

            var checksumFileName = args[1];
            var algorithmName    = args[2];
            var privateKeyName   = args[3];
            var passphrase       = args[4];
            var inputFileNames   = args.Skip(5).ToArray();

            using (var checksumFileTemp = new MemoryStream())
            {
                using (var hashAlgorithm = HashAlgorithm.Create(algorithmName))
                {
                    foreach (var inputFileName in inputFileNames)
                    {
                        using (var inputFile = File.OpenRead(inputFileName))
                        {
                            ChecksumFileUtilities.WriteChecksumToFile(hashAlgorithm, checksumFileTemp, Path.GetFileName(inputFileName), inputFile);
                        }
                    }
                }

                checksumFileTemp.Position = 0;

                using (var checksumFile = File.Create(checksumFileName))
                    using (var privateKey = File.OpenRead(privateKeyName))
                    {
                        PgpClearsignUtilities.SignFile(checksumFileTemp, checksumFile, privateKey, passphrase.ToCharArray());
                    }
            }

            Console.WriteLine("{0} created", checksumFileName);
        }