public SecretUpdate.SecretUpdate ToSecretUpdate() { SecretUpdate.SecretUpdate sec = new SecretUpdate.SecretUpdate(); sec.value = this.ToString(); sec.attributes.enabled = "true"; sec.attributes.exp = null; sec.attributes.nbf = null; sec.contentType = null; sec.tags.Area = this.Area; sec.tags.KeyID = this.Id.ToString(); return(sec); }
protected async Task SaveSecret(AzureKeyVault.SecretUpdate.SecretUpdate secret, string secretName) { AuthenticationResult result = await Authenticate(); UriBuilder ub = new UriBuilder(_vaultUri); ub.Path = "/secrets/" + secretName; ub.Query = "api-version=" + _apiVersion; DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(AzureKeyVault.SecretUpdate.SecretUpdate)); using (var stream = new System.IO.MemoryStream()) { serializer.WriteObject(stream, secret); stream.Position = 0; using (StreamContent content = new StreamContent(stream)) using (var client = new HttpClient()) { content.Headers.Add("Content-type", "application/json"); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage response = await client.PutAsync(ub.Uri, content); if (!response.IsSuccessStatusCode) { throw new KeyStoreException(response.ReasonPhrase); } var data = await response.Content.ReadAsStringAsync(); } } }
public uint GenerateKeyPair(int KeySize) { CspParameters CSPParam = new CspParameters(); CSPParam.Flags = CspProviderFlags.UseMachineKeyStore; UInt32 KeyID = 1; if (_keys.Keys.Count > 0) { KeyID = _keys.Keys.Max <UInt32>() + 1; } using (var csp = new RSACryptoServiceProvider(KeySize, CSPParam)) { var privKey = new VaultKeyData(KeyID, csp.ExportCspBlob(true), _area); AzureKeyVault.SecretUpdate.SecretUpdate privSecret = privKey.ToSecretUpdate(); SaveSecret(privSecret, (Guid.NewGuid().ToString())).Wait(); _keys.Add(KeyID, privKey); return(KeyID); } }