Advertisement
FoKycHuK

System.Security.dll 4.6.1073.0

Jan 25th, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.08 KB | None | 0 0
  1.         [ComVisible(false)]
  2.         [SecuritySafeCritical]
  3.         public bool CheckSignature(X509Certificate2 certificate, bool verifySignatureOnly) {
  4.             if (!CheckSignature(certificate.PublicKey.Key)) {
  5.                 return false;
  6.             }
  7.  
  8.             if (verifySignatureOnly) {
  9.                 SignedXmlDebugLog.LogVerificationResult(this, certificate, true);
  10.                 return true;
  11.             }
  12.  
  13.             // Check key usages to make sure it is good for signing.
  14.             foreach (X509Extension extension in certificate.Extensions) {
  15.                 if (String.Compare(extension.Oid.Value, CAPI.szOID_KEY_USAGE, StringComparison.OrdinalIgnoreCase) == 0) {
  16.                     X509KeyUsageExtension keyUsage = new X509KeyUsageExtension();
  17.                     keyUsage.CopyFrom(extension);
  18.                     SignedXmlDebugLog.LogVerifyKeyUsage(this, certificate, keyUsage);
  19.  
  20.                     bool validKeyUsage = (keyUsage.KeyUsages & X509KeyUsageFlags.DigitalSignature) != 0 ||
  21.                                          (keyUsage.KeyUsages & X509KeyUsageFlags.NonRepudiation) != 0;
  22.  
  23.                     if (!validKeyUsage) {
  24.                         SignedXmlDebugLog.LogVerificationFailure(this, SecurityResources.GetResourceString("Log_VerificationFailed_X509KeyUsage"));
  25.                         return false;
  26.                     }
  27.                     break;
  28.                 }
  29.             }
  30.  
  31.             // Do the chain verification to make sure the certificate is valid.
  32.             X509Chain chain = new X509Chain();
  33.             chain.ChainPolicy.ExtraStore.AddRange(BuildBagOfCerts());
  34.             bool chainVerified = chain.Build(certificate);
  35.             SignedXmlDebugLog.LogVerifyX509Chain(this, chain, certificate);
  36.  
  37.             if (!chainVerified) {
  38.                 SignedXmlDebugLog.LogVerificationFailure(this, SecurityResources.GetResourceString("Log_VerificationFailed_X509Chain"));
  39.                 return false;
  40.             }
  41.  
  42.             SignedXmlDebugLog.LogVerificationResult(this, certificate, true);
  43.             return true;
  44.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement