Skip to content

Commit db06bfa

Browse files
committed
github #83 - correct digest name fetch to check enc oid
1 parent 0ad3e3a commit db06bfa

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

crypto/src/cms/SignerInformation.cs

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -319,11 +319,16 @@ public byte[] GetEncodedSignedAttributes()
319319
private bool DoVerify(
320320
AsymmetricKeyParameter key)
321321
{
322-
string digestName = Helper.GetDigestAlgName(this.DigestAlgOid);
323-
IDigest digest = Helper.GetDigestInstance(digestName);
324-
325-
DerObjectIdentifier sigAlgOid = this.encryptionAlgorithm.Algorithm;
322+
DerObjectIdentifier sigAlgOid = this.encryptionAlgorithm.Algorithm;
326323
Asn1Encodable sigParams = this.encryptionAlgorithm.Parameters;
324+
string digestName = Helper.GetDigestAlgName(this.EncryptionAlgOid);
325+
326+
if (digestName.Equals(sigAlgOid.Id))
327+
{
328+
digestName = Helper.GetDigestAlgName(this.DigestAlgOid);
329+
}
330+
331+
IDigest digest = Helper.GetDigestInstance(digestName);
327332
ISigner sig;
328333

329334
if (sigAlgOid.Equals(Asn1.Pkcs.PkcsObjectIdentifiers.IdRsassaPss))
@@ -374,10 +379,10 @@ private bool DoVerify(
374379
else
375380
{
376381
// TODO Probably too strong a check at the moment
377-
// if (sigParams != null)
378-
// throw new CmsException("unrecognised signature parameters provided");
382+
// if (sigParams != null)
383+
// throw new CmsException("unrecognised signature parameters provided");
379384

380-
string signatureName = digestName + "with" + Helper.GetEncryptionAlgName(this.EncryptionAlgOid);
385+
string signatureName = digestName + "with" + Helper.GetEncryptionAlgName(this.EncryptionAlgOid);
381386

382387
sig = Helper.GetSignatureInstance(signatureName);
383388

0 commit comments

Comments
 (0)