c# – Create RSACryptoServiceProvider From CertData And CertChain

I have 2 files CertificateData.cer and CertChain.cer.

CertificateData.cer

-----BEGIN CERTIFICATE-----
MIID0jCCArq....
-----END CERTIFICATE----- 

CertChain.cer

-----BEGIN CERTIFICATE-----
MIID8zCCAt....
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIID/jCCAuagAwIBAgIUQcu35..
-----END CERTIFICATE-----

I am trying to do below code,

var targetCertificate = new X509Certificate2("CertificateData.cer");
var certificates = new X509Certificate2Collection();
certificates.Add(new X509Certificate2("CertChain.cer"));
var chain = new X509Chain();
chain.ChainPolicy.RevocationMode = X509RevocationMode.NoCheck;
chain.ChainPolicy.ExtraStore.AddRange(certificates);
bool isValidCertificate = chain.Build(targetCertificate);

RSACryptoServiceProvider rsa = (RSACryptoServiceProvider)(cert).PublicKey.Key;

But isValidCertificate is false. I need RSA in VerifyXml,

    private static Boolean VerifyXml(XmlDocument Doc, RSA Key)
    {
        // Create a new SignedXml object and pass it
        // the XML document class.
        var signedXml = new System.Security.Cryptography.Xml.SignedXml(Doc);

        // Find the "Signature" node and create a new XmlNodeList object.
        XmlNodeList nodeList = Doc.GetElementsByTagName("Signature");

        // Throw an exception if no signature was found.
        if (nodeList.Count <= 0)
        {
            throw new CryptographicException("Verification failed: No Signature was found in the document.");
        }

        // Though it is possible to have multiple signatures on 
        // an XML document, this app only supports one signature for
        // the entire XML document.  Throw an exception 
        // if more than one signature was found.
        if (nodeList.Count >= 2)
        {
            throw new CryptographicException("Verification failed: More that one signature was found for the document.");
        }

        // Load the first <signature> node.  
        signedXml.LoadXml((XmlElement)nodeList(0));

        // Check the signature and return the result.
        return signedXml.CheckSignature(Key);
    }