/// <summary> /// Verify the signature of the manifest /// </summary> public ManifestSignatureInformation VerifySignature(X509RevocationFlag revocationFlag, X509RevocationMode revocationMode) { XmlElement signatureNode = m_manifestXml.SelectSingleNode("//ds:Signature", m_namespaceManager) as XmlElement; if (signatureNode == null) { return(new ManifestSignatureInformation(m_manifest, null, null)); } LoadXml(signatureNode); StrongNameSignatureInformation strongName = VerifyStrongNameSignature(signatureNode); // Since the Authenticode signature is wrapped in the strong name signature, we do not want to // give a valid AuthenticodeSignatureInformation object for an Authenticode signature which is // contained within a strong name signature with an invalid hash value. AuthenticodeSignatureInformation authenticode = null; if (strongName.VerificationResult != SignatureVerificationResult.BadDigest) { authenticode = VerifyAuthenticodeSignature(signatureNode, revocationFlag, revocationMode); } else { authenticode = new AuthenticodeSignatureInformation(SignatureVerificationResult.ContainingSignatureInvalid); } return(new ManifestSignatureInformation(m_manifest, strongName, authenticode)); }
public ManifestSignatureInformation VerifySignature(X509RevocationFlag revocationFlag, X509RevocationMode revocationMode) { XmlElement element = this.m_manifestXml.SelectSingleNode("//ds:Signature", this.m_namespaceManager) as XmlElement; if (element == null) { return(new ManifestSignatureInformation(this.m_manifest, null, null)); } base.LoadXml(element); StrongNameSignatureInformation strongNameSignature = this.VerifyStrongNameSignature(element); AuthenticodeSignatureInformation authenticodeSignature = null; if (strongNameSignature.VerificationResult != SignatureVerificationResult.BadDigest) { authenticodeSignature = this.VerifyAuthenticodeSignature(element, revocationFlag, revocationMode); } else { authenticodeSignature = new AuthenticodeSignatureInformation(SignatureVerificationResult.ContainingSignatureInvalid); } return(new ManifestSignatureInformation(this.m_manifest, strongNameSignature, authenticodeSignature)); }