1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef RLZ_LIB_MACHINE_ID_H_ 6#define RLZ_LIB_MACHINE_ID_H_ 7 8#include "base/strings/string16.h" 9 10#include <string> 11 12namespace rlz_lib { 13 14// Gets the unique ID for the machine used for RLZ tracking purposes. On 15// Windows, this ID is derived from the Windows machine SID, and is the string 16// representation of a 20 byte hash + 4 bytes volum id + a 1 byte checksum. 17// Included in financial pings with events, unless explicitly forbidden by the 18// calling application. 19bool GetMachineId(std::string* machine_id); 20 21// Retrieves a raw machine identifier string and a machine-specific 22// 4 byte value. GetMachineId() will SHA1 |data|, append |more_data|, compute 23// the Crc8 of that, and return a hex-encoded string of that data. 24bool GetRawMachineId(base::string16* data, int* more_data); 25 26namespace testing { 27bool GetMachineIdImpl(const base::string16& sid_string, 28 int volume_id, 29 std::string* machine_id); 30} // namespace testing 31 32} // namespace rlz_lib 33 34#endif // RLZ_LIB_MACHINE_ID_H_ 35