Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(217)

Side by Side Diff: remoting/protocol/auth_token_utils.cc

Issue 7048020: Don't use letters in me2mom access code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: - Created 9 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « remoting/host/support_access_verifier.cc ('k') | remoting/webapp/me2mom/remoting.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "remoting/protocol/auth_token_utils.h" 5 #include "remoting/protocol/auth_token_utils.h"
6 6
7 #include "base/base64.h" 7 #include "base/base64.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/string_util.h" 9 #include "base/string_util.h"
10 #include "crypto/sha2.h" 10 #include "crypto/sha2.h"
11 11
12 namespace remoting { 12 namespace remoting {
13 namespace protocol { 13 namespace protocol {
14 14
15 namespace {
16
17 // Normalizes access code. Must be applied on the access code entered
18 // by the user before generating auth token. It (1)converts the string
19 // to upper case, (2) replaces O with 0 and (3) replaces I with 1.
20 std::string NormalizeAccessCode(const std::string& access_code) {
21 std::string normalized = access_code;
22 StringToUpperASCII(&normalized);
23 for (std::string::iterator i = normalized.begin();
24 i != normalized.end(); ++i) {
25 if (*i == 'O') {
26 *i = '0';
27 } else if (*i == 'I') {
28 *i = '1';
29 }
30 }
31 return normalized;
32 }
33
34 } // namespace
35
36 std::string GenerateSupportAuthToken(const std::string& jid, 15 std::string GenerateSupportAuthToken(const std::string& jid,
37 const std::string& access_code) { 16 const std::string& access_code) {
38 std::string sha256 = crypto::SHA256HashString(jid + " " + access_code); 17 std::string sha256 = crypto::SHA256HashString(jid + " " + access_code);
39 std::string sha256_base64; 18 std::string sha256_base64;
40 if (!base::Base64Encode(sha256, &sha256_base64)) { 19 if (!base::Base64Encode(sha256, &sha256_base64)) {
41 LOG(FATAL) << "Failed to encode auth token"; 20 LOG(FATAL) << "Failed to encode auth token";
42 } 21 }
43 return sha256_base64; 22 return sha256_base64;
44 } 23 }
45 24
46 bool VerifySupportAuthToken(const std::string& jid, 25 bool VerifySupportAuthToken(const std::string& jid,
47 const std::string& access_code, 26 const std::string& access_code,
48 const std::string& auth_token) { 27 const std::string& auth_token) {
49 std::string expected_token = 28 std::string expected_token =
50 GenerateSupportAuthToken(jid, NormalizeAccessCode(access_code)); 29 GenerateSupportAuthToken(jid, access_code);
51 return expected_token == auth_token; 30 return expected_token == auth_token;
52 } 31 }
53 32
54 } // namespace protocol 33 } // namespace protocol
55 } // namespace remoting 34 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/host/support_access_verifier.cc ('k') | remoting/webapp/me2mom/remoting.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698