15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef RLZ_LIB_MACHINE_ID_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define RLZ_LIB_MACHINE_ID_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/string16.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace rlz_lib {
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Gets the unique ID for the machine used for RLZ tracking purposes. On
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Windows, this ID is derived from the Windows machine SID, and is the string
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// representation of a 20 byte hash + 4 bytes volum id + a 1 byte checksum.
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Included in financial pings with events, unless explicitly forbidden by the
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// calling application.
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool GetMachineId(std::string* machine_id);
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Retrieves a raw machine identifier string and a machine-specific
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 4 byte value. GetMachineId() will SHA1 |data|, append |more_data|, compute
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// the Crc8 of that, and return a hex-encoded string of that data.
245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)bool GetRawMachineId(base::string16* data, int* more_data);
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace testing {
275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)bool GetMachineIdImpl(const base::string16& sid_string,
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      int volume_id,
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      std::string* machine_id);
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace testing
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace rlz_lib
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // RLZ_LIB_MACHINE_ID_H_
35