summaryrefslogtreecommitdiffstats
path: root/dom/media/gmp/rlz/lib/machine_id.h
blob: 5fa343efa3554845fc6f286bd43ab5442997e9d0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// Copyright (c) 2012 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.

#ifndef RLZ_LIB_MACHINE_ID_H_
#define RLZ_LIB_MACHINE_ID_H_

#include <string>
#include <vector>

namespace rlz_lib {

// Gets the unique ID for the machine used for RLZ tracking purposes. On
// Windows, this ID is derived from the Windows machine SID, and is the string
// representation of a 20 byte hash + 4 bytes volum id + a 1 byte checksum.
// Included in financial pings with events, unless explicitly forbidden by the
// calling application.
bool GetMachineId(std::string* machine_id);

// Retrieves a raw machine identifier string and a machine-specific
// 4 byte value. GetMachineId() will SHA1 |data|, append |more_data|, compute
// the Crc8 of that, and return a hex-encoded string of that data.
bool GetRawMachineId(std::vector<uint8_t>* data, int* more_data);

namespace testing {
bool GetMachineIdImpl(const std::vector<uint8_t>& sid_bytes,
                      int volume_id,
                      std::string* machine_id);
}  // namespace testing

}  // namespace rlz_lib

#endif  // RLZ_LIB_MACHINE_ID_H_