1 // Copyright 2015 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.
5 #include "components/proximity_auth/cryptauth/cryptauth_enrollment_utils.h"
10 #include "base/sha1.h"
11 #include "components/proximity_auth/cryptauth/base64url.h"
13 namespace proximity_auth
{
15 int64_t HashStringToInt64(const std::string
& string
) {
16 base::MD5Context context
;
17 base::MD5Init(&context
);
18 base::MD5Update(&context
, string
);
20 base::MD5Digest digest
;
21 base::MD5Final(&digest
, &context
);
23 // Fold the digest into an int64 value. |digest.a| is a 16-byte array, so we
24 // sum the two 8-byte halves of the digest to create the hash.
26 for (size_t i
= 0; i
< sizeof(digest
.a
); ++i
) {
27 uint8_t byte
= digest
.a
[i
];
28 hash
+= static_cast<int64_t>(byte
) << (i
% sizeof(int64_t));
34 std::string
CalculateDeviceUserId(const std::string
& device_id
,
35 const std::string
& user_id
) {
36 std::string device_user_id
;
37 Base64UrlEncode(base::SHA1HashString(device_id
+ "|" + user_id
),
39 return device_user_id
;
42 } // namespace proximity_auth