У меня есть два приложения.Один подписывает файл, другой проверяет.
Приложение для подписи выполняет следующие действия:
X509Certificate2 certificate = new X509Certificate2(PROJECT_DIR_PATH + "cert.pfx", "password");
using (RSA rsa = certificate.GetRSAPrivateKey())
{
signature = rsa.SignData(exeContent, HashAlgorithmName.SHA1, RSASignaturePadding.Pkcs1);
}
cert.pfx - это самозаверяющий сертификат, созданный с помощью Openssl.
Проверяющее приложение:
X509Certificate2 certificate = new X509Certificate2(PROJECT_DIR_PATH + "cert.pfx", "password");
using (RSA rsa = certificate.GetRSAPublicKey())
{
return rsa.VerifyData(exeContentWithoutSignature, signature, HashAlgorithmName.SHA1, RSASignaturePadding.Pkcs1);
}
Насколько я понимаю, файл .pfx содержит информацию об открытом и закрытом ключах, поэтому я не должен делать его доступным для всех.Насколько мне известно, для проверки требуется только открытый ключ.Как я могу использовать rsa.VerifyData или другие функции для проверки подписи, не раскрывая мой файл pfx?