blob: 5be4252e58c11fb257763ecf4ef164d95c77fc64 [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/os_crypt/key_storage_util_linux.h"
#include "base/logging.h"
namespace os_crypt {
SelectedLinuxBackend SelectBackend(const std::string& type,
base::nix::DesktopEnvironment desktop_env) {
if (type == "kwallet")
return SelectedLinuxBackend::KWALLET;
if (type == "kwallet5")
return SelectedLinuxBackend::KWALLET5;
if (type == "gnome")
return SelectedLinuxBackend::GNOME_ANY;
if (type == "gnome-keyring")
return SelectedLinuxBackend::GNOME_KEYRING;
if (type == "gnome-libsecret")
return SelectedLinuxBackend::GNOME_LIBSECRET;
if (type == "basic")
return SelectedLinuxBackend::BASIC_TEXT;
const char* name = base::nix::GetDesktopEnvironmentName(desktop_env);
VLOG(1) << "Password storage detected desktop environment: "
<< (name ? name : "(unknown)");
// Detect the store to use automatically.
switch (desktop_env) {
case base::nix::DESKTOP_ENVIRONMENT_KDE4:
return SelectedLinuxBackend::KWALLET;
case base::nix::DESKTOP_ENVIRONMENT_KDE5:
return SelectedLinuxBackend::KWALLET5;
case base::nix::DESKTOP_ENVIRONMENT_GNOME:
case base::nix::DESKTOP_ENVIRONMENT_UNITY:
case base::nix::DESKTOP_ENVIRONMENT_XFCE:
return SelectedLinuxBackend::GNOME_ANY;
// KDE3 didn't use DBus, which our KWallet store uses.
case base::nix::DESKTOP_ENVIRONMENT_KDE3:
case base::nix::DESKTOP_ENVIRONMENT_OTHER:
return SelectedLinuxBackend::BASIC_TEXT;
}
NOTREACHED();
return SelectedLinuxBackend::BASIC_TEXT;
}
} // namespace os_crypt