huysentruitw / pem-utils

Managed .NET (C#) utility library for working with PEM files with DER/ASN.1 encoding

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

VerifyData using loaded PEM fails

sjmorgan81 opened this issue · comments

I used the command-line OpenSSL program to generate the public and private keys and to sign a file but when I try to use RSA.VerifyData to verify the signature, it fails.

I was previously using the .NET Core version of the RSA class which has (slightly) better support for PEM and so didn't need to use PEM-utils and the VerifyData call succeeded.

I'm generating the keys like so:

> openssl version
OpenSSL 1.0.2u  20 Dec 2019
> openssl genpkey -out privkey.pem -algorithm rsa 4096

and the signature like so:

> openssl dgst -sha256 -sign privkey.pem -out test.zip.sig test.zip

and the code for verifying the signature looks like this:

var fileToVerifyStream = new FileStream(fileToVerifyPath, FileMode.Open);
byte[] signatureBytes = File.ReadAllBytes(fileSignaturePath);

RSAParameters publicKey = ReadPemPublicKey(publicKeyPath); // Calls PemReader.ReadRsaKey()
_rsa.ImportParameters(publicKey);
_rsa.VerifyData(fileToVerifyStream, signatureBytes, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);