Ususally when tesitng with different certificates we usually need to check if the certificate chain is valid and this snippet came in quite handy in many places.
X509Certificate2
cert = FedUtil.LookupCertificate(StoreName.My, StoreLocation.LocalMachine, "CN=MyCertificate");
X509Chain chain = new X509Chain();
bool pass = chain.Build(cert);
Helper method to look up the certificate from the Store. I refactored this out of the WCF samples in the SDK.
public static X509Certificate2 LookupCertificate(StoreName storeName,
StoreLocation storeLocation,
string subjectDistinguishedName)
{
X509Store store = null;
try
{
store = new X509Store(storeName, storeLocation);
store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certs = store.Certificates.Find(X509FindType.FindBySubjectDistinguishedName,
subjectDistinguishedName, false);
if (certs.Count != 1)
{
throw new Exception("Certificate not found or more than one certificate found");
}
return (X509Certificate2)certs[0];
}
finally
{
if (store != null) store.Close();
}
}