// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_ASH_SMB_CLIENT_SMB_SERVICE_HELPER_H_
#define CHROME_BROWSER_ASH_SMB_CLIENT_SMB_SERVICE_HELPER_H_
#include <string>
#include <vector>
#include "base/logging.h"
namespace ash::smb_client {
// Parse a user principal name into the user name and domain.
// The format is "[email protected]", following RFC-822.
bool ParseUserPrincipalName(const std::string& user_principal_name,
std::string* user_name,
std::string* workgroup);
// Parse a down-level logon name into the user name and domain.
// The format is "DOMAIN\user". Note, this format has additional restrictions
// such as the domain is a NetBIOS domain (upper case, no .). However, these
// restrictions are not enforced.
bool ParseDownLevelLogonName(const std::string& logon_name,
std::string* user_name,
std::string* workgroup);
// Parse a user name, which can be in one of three formats:
// 1. Plain user name. i.e. "username"
// 2. User principal name. i.e. "[email protected]"
// 3. Down-level logon name. i.e. "DOMAIN\username"
// The format is automatically detected. User principal and down-level logon
// names are documented at:
// https://docs.microsoft.com/en-au/windows/desktop/SecAuthN/user-name-formats
bool ParseUserName(const std::string& name,
std::string* user_name,
std::string* workgroup);
} // namespace ash::smb_client
#endif // CHROME_BROWSER_ASH_SMB_CLIENT_SMB_SERVICE_HELPER_H_