using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;
using System.Web.Http;
using System.Net.Http;
using System.Diagnostics;
using System.IdentityModel.Selectors;

namespace OwinSample.Controllers
{
    public class ClientCertController: ApiController
    {
        // Voraussetzung:
        //  Es muss SSL verwendet werden
        //  Keine Authentifizierung
        //  System.Net.Http für GetOwinContext() einbinden
        public string Get()
        {
            var cert = Request.GetOwinContext().Get<X509Certificate2>("ssl.ClientCertificate");

            if (cert != null)
            {

                X509CertificateValidator.PeerTrust.Validate(cert); // Löst Exception aus, wenn Cert nicht korrekt validiert werden konnte
                                                                    // Kommt aus System.IdentityModel


                Debug.WriteLine("Certificate.FriendlyName: " + cert.FriendlyName);
                Debug.WriteLine("Certificate.Subject: " + cert.Subject);
                Debug.WriteLine("Certificate.Thumbprint: " + cert.Thumbprint);
                Debug.WriteLine("Certificate.Issuer: " + cert.Issuer);
            }

            return "OK";
        }
    }
}
