private async Task <AcmeContext> GetOrCreateAcmeContext(Uri acmeDirectoryUri, string email) { AcmeContext acme = null; string filename = $"account{email}--{acmeDirectoryUri.Host}"; var secret = await this.certificateStore.GetSecret(filename); if (string.IsNullOrEmpty(secret)) { acme = new AcmeContext(acmeDirectoryUri); var account = acme.NewAccount(email, true); // Save the account key for later use var pemKey = acme.AccountKey.ToPem(); await certificateStore.SaveSecret(filename, pemKey); await Task.Delay(10000); //Wait a little before using the new account. acme = new AcmeContext(acmeDirectoryUri, acme.AccountKey, new AcmeHttpClient(acmeDirectoryUri, new HttpClient())); } else { var accountKey = KeyFactory.FromPem(secret); acme = new AcmeContext(acmeDirectoryUri, accountKey, new AcmeHttpClient(acmeDirectoryUri, new HttpClient())); } return(acme); }