static void importKeyToVaultx(JwtRsaKey key, string token, string vaultUrl) { var importRequestUrl = $"{vaultUrl}/keys/{kid}?api-version=2016-10-01"; var req = new HttpClient(); req.DefaultRequestHeaders.Add("Authorization", new[] { $"Bearer {token}" }); var content = new ObjectContent <ImportKeyRequest>(new ImportKeyRequest { key = key }, new JsonMediaTypeFormatter()); var result = new HttpClient().PutAsync(importRequestUrl, content).Result; var response = result.Content.ReadAsStringAsync().Result; Console.WriteLine($"Import key result {result.StatusCode} {result.ReasonPhrase}\n===\n{response}\n===\n"); }
static void importKeyToVault(JwtRsaKey key, string token, string vaultUrl) { var client = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(async(authority, resource, scope) => await Task.FromResult(token))); var keyBnd = new Microsoft.Azure.KeyVault.Models.KeyBundle(); keyBnd.Key = new Microsoft.Azure.KeyVault.WebKey.JsonWebKey { Kty = key.kty, Kid = key.kid, E = Encoding.UTF8.GetBytes(key.e), P = Encoding.UTF8.GetBytes(key.p), Q = Encoding.UTF8.GetBytes(key.q), QI = Encoding.UTF8.GetBytes(key.qi), DP = Encoding.UTF8.GetBytes(key.dp), DQ = Encoding.UTF8.GetBytes(key.dq) }; var result = client.ImportKeyAsync(vaultUrl, key.kid, keyBnd).Result; }
public static JwtRsaKey genKey(string kid) { var rsa = RSA.Create(); var rsaParams = rsa.ExportParameters(true); var jwk = new JwtRsaKey { kty = "RSA", use = "enc", kid = kid, e = toB64(rsaParams.Exponent), m = toB64(rsaParams.Modulus), d = toB64(rsaParams.D), p = toB64(rsaParams.P), q = toB64(rsaParams.Q), dp = toB64(rsaParams.DP), dq = toB64(rsaParams.DQ), qi = toB64(rsaParams.InverseQ) }; return(jwk); //Console.WriteLine(JsonConvert.SerializeObject(jwk)); }