public async Task <IActionResult> GenerateDeviceKeys([FromBody] DeviceSecretKeysCreationModel deviceSecretKeysCreationRequest) { var result = await _keyVaultManager.SetSecretForDevice(deviceSecretKeysCreationRequest); if (result != null) { return(Ok(result)); } return(StatusCode(StatusCodes.Status500InternalServerError)); }
/// <summary> /// Generate a new set of keys for a particular device, and store it to Azure Key Vault. /// The Previous keys will be erased. /// </summary> /// <param name="deviceId">Device Id</param> /// <returns>DeviceSecretKeysModel</returns> public async Task <DeviceSecretKeysModel> SetSecretForDevice(DeviceSecretKeysCreationModel deviceSecretKeysCreationRequest) { DeviceSecretKeysModel output = new DeviceSecretKeysModel(); Guid deviceId = deviceSecretKeysCreationRequest.DeviceId; var ssidName = await SetSecret($"{deviceId}-ssidn", deviceSecretKeysCreationRequest.SSIDName); var ssidPassword = await SetSecret($"{deviceId}-ssidp", GenerateSecret(10)); var portalPassword = await SetSecret($"{deviceId}-portal", GenerateSecret(10)); var encryptionKey = await SetSecret($"{deviceId}-cryptkey", GenerateSecret(64)); output.SSIDName = !string.IsNullOrEmpty(ssidName) ? ssidName : _config.DefaultSecrets.SSIDName; output.SSIDPassword = !string.IsNullOrEmpty(ssidPassword) ? ssidPassword : _config.DefaultSecrets.SSIDPassword; output.PortalPassword = !string.IsNullOrEmpty(portalPassword) ? portalPassword : _config.DefaultSecrets.PortalPassword; output.EncryptionKey = !string.IsNullOrEmpty(encryptionKey) ? encryptionKey : _config.DefaultSecrets.EncryptionKey; return(output); }