private void btnSign_Click(object sender, EventArgs e)
        {
            var csr        = _manager.buildCsr();
            var myCallback = new SezameSignCallbackType(signCallback);

            MessageBox.Show(csr);
            _manager.sign(csr, myCallback);
        }
        public async Task sign(string pemCertificationRequest, SezameSignCallbackType callback)
        {
            var invoker  = new SezameRegistrationServiceInvoker();
            var response = await invoker.SignAsync(pemCertificationRequest, sharedsecret);

            pemCertificate = response.GetParameter(SezameResultKey.Certificate);

            pemCertificate = Regex.Replace(pemCertificate, "-----BEGIN CERTIFICATE-----", "");
            pemCertificate = Regex.Replace(pemCertificate, "-----END CERTIFICATE-----", "");
            var certificateByteData = Convert.FromBase64String(pemCertificate);

            AsymmetricKeyParameter privateKey = keyPair.Private;

            // http://paulstovell.com/blog/x509certificate2
            // Convert X509Certificate to X509Certificate2
            certificate = new X509Certificate2(certificateByteData, "test", X509KeyStorageFlags.Exportable);

            // Convert BouncyCastle Private Key to RSA
            var rsaPriv = DotNetUtilities.ToRSA((RsaPrivateCrtKeyParameters)keyPair.Private);

            // Setup RSACryptoServiceProvider with "KeyContainerName" set

            var csp = new CspParameters();

            csp.KeyContainerName = "KeyContainer";
            var rsaPrivate = new RSACryptoServiceProvider(csp);

            // Import private key from BouncyCastle's rsa
            rsaPrivate.ImportParameters(rsaPriv.ExportParameters(true));

            // Set private key on our X509Certificate2
            certificate.PrivateKey = rsaPrivate;

            var store = new X509Store(StoreName.My, StoreLocation.CurrentUser);

            store.Open(OpenFlags.ReadWrite);
            store.Add(certificate);
            store.Close();

            status = "ready";

            callback(certificate);
        }