public async Task cancel(SezameCancelCallbackType callback) { var webRequestHandler = new WebRequestHandler(); webRequestHandler.ClientCertificates.Add(certificate); // X509Certificate var invoker = new SezameRegistrationServiceInvoker(webRequestHandler, true); await invoker.CancelAsync(); var store = new X509Store(StoreName.My, StoreLocation.CurrentUser); store.Open(OpenFlags.ReadWrite); store.Remove(certificate); store.Close(); status = "new"; clientcode = ""; sharedsecret = ""; email = ""; writeSetting("status", status); writeSetting("clientcode", clientcode); writeSetting("sharedsecret", sharedsecret); writeSetting("email", email); callback(); }
public async Task register(string email, string applicationName, SezameRegisterCallbackType callback) { var invoker = new SezameRegistrationServiceInvoker(); var response = await invoker.RegisterAsync(email, applicationName); clientcode = response.GetParameter(SezameResultKey.ClientCode); sharedsecret = response.GetParameter(SezameResultKey.SharedSecret); this.email = email; writeSetting("status", "register"); writeSetting("clientcode", clientcode); writeSetting("sharedsecret", sharedsecret); writeSetting("email", email); callback(clientcode, sharedsecret); }
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); }