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);
        }