private MultiProtocolIssuer RetrieveMultiProtocolIssuer()
{
var configuration = ConfigurationManager.GetSection("authBridge/multiProtocolIssuer") as MultiProtocolIssuerSection;
if (string.IsNullOrEmpty(configuration.SigningCertificate.FindValue) && string.IsNullOrEmpty(configuration.SigningCertificateFile.PfxFilePath))
throw new ConfigurationErrorsException("Specify either a signing certificate in the machine store or point to a PFX in the file system");
X509Certificate2 cert = null;
if (!string.IsNullOrEmpty(configuration.SigningCertificate.FindValue))
{
cert = CertificateUtil.GetCertificate(
configuration.SigningCertificate.StoreName,
configuration.SigningCertificate.StoreLocation,
configuration.SigningCertificate.FindValue);
}
else
{
var certRawData = File.ReadAllBytes(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, configuration.SigningCertificateFile.PfxFilePath));
cert = new X509Certificate2(certRawData, configuration.SigningCertificateFile.Password, X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet);
}
return new MultiProtocolIssuer
{
Identifier = configuration.Identifier.ReplaceWithLocalhostWhenRelative(),
ReplyUrl = configuration.ResponseEndpoint.ReplaceWithLocalhostWhenRelative(),
SigningCertificate = cert
};
}