// Copyright (c) 2012 The Chromium OS 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 "shill/wpa_supplicant.h"

namespace shill {

namespace wpa_supplicant {
const char kBSSPropertyBSSID[]      = "BSSID";
const char kBSSPropertyFrequency[]  = "Frequency";
const char kBSSPropertyIEs[]        = "IEs";
const char kBSSPropertyMode[]       = "Mode";
const char kBSSPropertyRates[]      = "Rates";
const char kBSSPropertySSID[]       = "SSID";
const char kBSSPropertySignal[]     = "Signal";
// TODO(gauravsh): Make this path be a configurable option. crosbug.com/25661
// Location of the system root CA certificates.
const char kCaPath[] = "/etc/ssl/certs";
const char kCurrentBSSNull[] = "/";
const char kDBusAddr[]              = "fi.w1.wpa_supplicant1";
const char kDBusPath[]              = "/fi/w1/wpa_supplicant1";
const char kDriverNL80211[]         = "nl80211";
const char kEnginePKCS11[]          = "pkcs11";
const char kErrorInterfaceExists[]  = "fi.w1.wpa_supplicant1.InterfaceExists";
const char kInterfacePropertyConfigFile[] = "ConfigFile";
const char kInterfacePropertyCurrentBSS[] = "CurrentBSS";
const char kInterfacePropertyDriver[] = "Driver";
const char kInterfacePropertyName[] = "Ifname";
const char kInterfacePropertyState[] = "State";
const char kInterfaceState4WayHandshake[]  = "4way_handshake";
const char kInterfaceStateAssociated[]     = "associated";
const char kInterfaceStateAssociating[]    = "associating";
const char kInterfaceStateAuthenticating[] = "authenticating";
const char kInterfaceStateCompleted[]      = "completed";
const char kInterfaceStateDisconnected[]   = "disconnected";
const char kInterfaceStateGroupHandshake[] = "group_handshake";
const char kInterfaceStateInactive[]       = "inactive";
const char kInterfaceStateScanning[]       = "scanning";
const char kKeyManagementMethodSuffixEAP[] = "-eap";
const char kKeyManagementMethodSuffixPSK[] = "-psk";
const char kKeyModeNone[]           = "NONE";
const char kNetworkBgscanMethodLearn[] = "learn";
const char kNetworkBgscanMethodSimple[] = "simple";
const char kNetworkModeInfrastructure[] = "infrastructure";
const char kNetworkModeAdHoc[]       = "ad-hoc";
const char kNetworkModeAccessPoint[] = "ap";
const char kNetworkPropertyBgscan[] = "bgscan";
const char kNetworkPropertyCaPath[] = "ca_path";
const char kNetworkPropertyEapKeyManagement[] = "key_mgmt";
const char kNetworkPropertyEapIdentity[] = "identity";
const char kNetworkPropertyEapEap[] = "eap";
const char kNetworkPropertyEapInnerEap[] = "phase2";
const char kNetworkPropertyEapAnonymousIdentity[] = "anonymous_identity";
const char kNetworkPropertyEapClientCert[] = "client_cert";
const char kNetworkPropertyEapPrivateKey[] = "private_key";
const char kNetworkPropertyEapPrivateKeyPassword[] = "private_key_passwd";
const char kNetworkPropertyEapCaCert[] = "ca_cert";
const char kNetworkPropertyEapCaPassword[] = "password";
const char kNetworkPropertyEapCertId[] = "cert_id";
const char kNetworkPropertyEapKeyId[] = "key_id";
const char kNetworkPropertyEapCaCertId[] = "ca_cert_id";
const char kNetworkPropertyEapPin[] = "pin";
const char kNetworkPropertyEngine[] = "engine";
const char kNetworkPropertyEngineId[] = "engine_id";
const char kNetworkPropertyMode[]   = "mode";
const char kNetworkPropertyScanSSID[] = "scan_ssid";
const char kNetworkPropertySSID[]   = "ssid";
const char kPropertyAuthAlg[]       = "auth_alg";
const char kPropertyPreSharedKey[]  = "psk";
const char kPropertyPrivacy[]       = "Privacy";
const char kPropertyRSN[]           = "RSN";
const char kPropertyScanSSIDs[]     = "SSIDs";
const char kPropertyScanType[]      = "Type";
const char kPropertySecurityProtocol[] = "proto";
const char kPropertyWEPKey[]        = "wep_key";
const char kPropertyWEPTxKeyIndex[] = "wep_tx_keyidx";
const char kPropertyWPA[]           = "WPA";
const char kScanTypeActive[]        = "active";
const char kSecurityAuthAlg[]       = "OPEN SHARED";
const char kSecurityMethodPropertyKeyManagement[] = "KeyMgmt";
const char kSecurityModeRSN[]       = "RSN";
const char kSecurityModeWPA[]       = "WPA";

const uint32_t kDefaultEngine = 1;
const uint32_t kNetworkModeInfrastructureInt = 0;
const uint32_t kNetworkModeAdHocInt          = 1;
const uint32_t kNetworkModeAccessPointInt    = 2;
const uint32_t kScanMaxSSIDsPerScan          = 4;
};

}  // namespace shill
