@msdn=http://search.microsoft.com/search/results.aspx?qu=$$$ @pinvoke=http://pinvoke.net/$$$.htm The CryptVerifyMessageSignature function verifies a signed message's signature. !!!!C# Signature: [DllImport("crypt32.dll", SetLastError=true)] static extern bool CryptVerifyMessageSignature( ref CRYPT_VERIFY_MESSAGE_PARA pVerifyPara, int iReciepmentIndex, byte[] pbToBeVerified, int cbToBeVerified, [ In, Out ] byte[] pbVerifiedBlob, ref int pcbVerifiedBlob, IntPtr ppx509CertificateContext); !!!!VB Signature: Declare Function CryptVerifyMessageSignature Lib "crypt32.dll" (TODO) As TODO !!!!User-Defined Types: None. !!!!Notes: None. !!!!Tips & Tricks: Please add some! !!!!Sample Code: public static void VerifyMessage( byte[] pbToBeVerified, int cbToBeVerified, byte[] pbVerifiedBlob, ref int pcbVerifiedBlob, out X509Certificate x509 ) { CRYPT_VERIFY_MESSAGE_PARA cpMessageParams = new CRYPT_VERIFY_MESSAGE_PARA(); cpMessageParams.cbSize = 20; cpMessageParams.dwMsgEncodingType = X509_ASN_ENCODING | PKCS_7_ASN_ENCODING; cpMessageParams.hCryptProv = 0; GCHandle pCertContext = GCHandle.Alloc( IntPtr.Zero, GCHandleType.Pinned ); try { if( !Crypt32.CryptVerifyMessageSignature( ref cpMessageParams, 0, pbToBeVerified, cbToBeVerified, pbVerifiedBlob, ref pcbVerifiedBlob, pCertContext.AddrOfPinnedObject() ) ) { throw new Exception( "Error while encrypting data." ); } try { x509 = new X509Certificate( ( IntPtr )pCertContext.Target ); } finally { Crypt32.CertFreeCertificateContext( ( IntPtr )pCertContext.Target ); } } finally { pCertContext.Free(); } } !!!!Alternative Managed API: Do you know one? Please contribute it! Documentation: CryptVerifyMessageSignature@msdn on MSDN
Edit crypt32.cryptveri...
You do not have permission to change this page. If you feel this is in error, please send feedback with the contact link on the main page.