public VerifyHash ( byte hash, byte signature, Internal.Cryptography.HashAlgorithmName hashAlgorithm, RSASignaturePadding padding ) : bool | ||
hash | byte | |
signature | byte | |
hashAlgorithm | Internal.Cryptography.HashAlgorithmName | |
padding | RSASignaturePadding | |
return | bool |
public override bool VerifyHash(byte[] hash, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding) { if (signature == null) throw new ArgumentNullException(nameof(signature)); if (padding != RSASignaturePadding.Pkcs1) throw PaddingModeNotSupported(); // _impl does remaining parameter validation return _impl.VerifyHash(hash, signature, hashAlgorithm, padding); }
[System.Security.SecuritySafeCritical] // auto-generated public override bool VerifySignature(byte[] rgbHash, byte[] rgbSignature) { if (rgbHash == null) { throw new ArgumentNullException("rgbHash"); } if (rgbSignature == null) { throw new ArgumentNullException("rgbSignature"); } Contract.EndContractBlock(); if (_strOID == null) { throw new CryptographicUnexpectedOperationException(Environment.GetResourceString("Cryptography_MissingOID")); } if (_rsaKey == null) { throw new CryptographicUnexpectedOperationException(Environment.GetResourceString("Cryptography_MissingKey")); } // Two cases here -- if we are talking to the CSP version or if we are talking to some other RSA provider. if (_rsaKey is RSACryptoServiceProvider) { // This path is kept around for desktop compat: in case someone is using this with a hash algorithm that's known to GetAlgIdFromOid but // not from OidToHashAlgorithmName. int calgHash = X509Utils.GetAlgIdFromOid(_strOID, OidGroup.HashAlgorithm); return(((RSACryptoServiceProvider)_rsaKey).VerifyHash(rgbHash, calgHash, rgbSignature)); } else if (OverridesVerifyHash) { HashAlgorithmName hashAlgorithmName = Utils.OidToHashAlgorithmName(_strOID); return(_rsaKey.VerifyHash(rgbHash, rgbSignature, hashAlgorithmName, RSASignaturePadding.Pkcs1)); } else { // Fallback compat path for 3rd-party RSA classes that don't override VerifyHash() byte[] pad = Utils.RsaPkcs1Padding(_rsaKey, CryptoConfig.EncodeOID(_strOID), rgbHash); // Apply the public key to the signature data to get back the padded buffer actually signed. // Compare the two buffers to see if they match; ignoring any leading zeros return(Utils.CompareBigIntArrays(_rsaKey.EncryptValue(rgbSignature), pad)); } }
public override bool VerifySignature(byte[] rgbHash, byte[] rgbSignature) { if (rgbHash == null) { throw new ArgumentNullException(nameof(rgbHash)); } if (rgbSignature == null) { throw new ArgumentNullException(nameof(rgbSignature)); } if (_algName == null) { throw new CryptographicUnexpectedOperationException(SR.Cryptography_MissingOID); } if (_rsaKey == null) { throw new CryptographicUnexpectedOperationException(SR.Cryptography_MissingKey); } return(_rsaKey.VerifyHash(rgbHash, rgbSignature, new HashAlgorithmName(_algName), RSASignaturePadding.Pkcs1)); }