예제 #1
0
 public static void VerifyFile(byte[] publicKey, string signatureFilePath, string filePath)
 {
     try
     {
         bool validSignature = DigitalSignatures.VerifySignature(signatureFilePath, filePath, publicKey);
         if (!validSignature)
         {
             DisplayMessage.FilePathMessage(filePath, "Bad signature.");
             return;
         }
         DisplayMessage.FilePathMessage(filePath, "Good signature.");
         string comment = DigitalSignatures.GetComment();
         DisplayMessage.Message($"Authenticated comment: {comment}");
     }
     catch (Exception ex) when(ExceptionFilters.Cryptography(ex))
     {
         Logging.LogException(ex.ToString(), Logging.Severity.Error);
         if (ex is ArgumentOutOfRangeException)
         {
             DisplayMessage.Exception(ex.GetType().Name, ex.Message);
             return;
         }
         DisplayMessage.Exception(ex.GetType().Name, "Unable to verify signature.");
     }
 }
예제 #2
0
 public static void SignEachFile(string[] filePaths, string signatureFilePath, string comment, bool preHash, byte[] privateKey)
 {
     privateKey = PrivateKey.Decrypt(privateKey);
     if (privateKey == null)
     {
         return;
     }
     if (string.IsNullOrEmpty(comment))
     {
         comment = _defaultComment;
     }
     foreach (string filePath in filePaths)
     {
         try
         {
             DigitalSignatures.SignFile(filePath, signatureFilePath, comment, preHash, privateKey);
             DisplayMessage.FilePathMessage(filePath, "File signed successfully.");
         }
         catch (Exception ex) when(ExceptionFilters.Cryptography(ex))
         {
             DisplayMessage.FilePathException(filePath, ex.GetType().Name, "Unable to create signature.");
         }
     }
     CryptographicOperations.ZeroMemory(privateKey);
 }
예제 #3
0
 public static void SignEachFile(byte[] privateKey, string comment, bool preHash, string[] filePaths)
 {
     privateKey = PrivateKey.Decrypt(privateKey);
     if (privateKey == null)
     {
         return;
     }
     if (string.IsNullOrEmpty(comment))
     {
         comment = _defaultComment;
     }
     foreach (string filePath in filePaths)
     {
         try
         {
             DigitalSignatures.SignFile(filePath, comment, preHash, privateKey);
             DisplayMessage.FilePathMessage(filePath, "File signed successfully.");
         }
         catch (Exception ex) when(ExceptionFilters.Cryptography(ex))
         {
             Logging.LogException(ex.ToString(), Logging.Severity.Error);
             DisplayMessage.FilePathException(filePath, ex.GetType().Name, "Unable to create signature.");
         }
     }
     Utilities.ZeroArray(privateKey);
 }
예제 #4
0
 public static void VerifyFile(string signatureFilePath, string filePath, byte[] publicKey)
 {
     try
     {
         bool validSignature = DigitalSignatures.VerifySignature(signatureFilePath, filePath, publicKey, out string comment);
         if (!validSignature)
         {
             DisplayMessage.FilePathMessage(filePath, "Bad signature.");
             return;
         }
         DisplayMessage.FilePathMessage(filePath, "Good signature.");
         DisplayMessage.Message($"Authenticated comment: {comment}");
     }
     catch (Exception ex) when(ExceptionFilters.Cryptography(ex))
     {
         if (ex is ArgumentException)
         {
             DisplayMessage.FilePathMessage(signatureFilePath, ex.Message);
             return;
         }
         DisplayMessage.Exception(ex.GetType().Name, "Unable to verify signature.");
     }
 }