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

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

Issue 1768383004: Cleanup AuthenticatorMethod usage. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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
OLDNEW
(Empty)
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 #include "remoting/protocol/authentication_method.h"
6
7 #include "base/logging.h"
8 #include "crypto/hmac.h"
9 #include "remoting/protocol/auth_util.h"
10 #include "remoting/protocol/name_value_map.h"
11
12 namespace remoting {
13 namespace protocol {
14
15 const NameMapElement<AuthenticationMethod> kAuthenticationMethodStrings[] = {
16 {AuthenticationMethod::SPAKE2_SHARED_SECRET_PLAIN, "spake2_plain"},
17 {AuthenticationMethod::SPAKE2_SHARED_SECRET_HMAC, "spake2_hmac"},
18 {AuthenticationMethod::SPAKE2_PAIR, "spake2_pair"},
19 {AuthenticationMethod::THIRD_PARTY, "third_party"}};
20
21 AuthenticationMethod ParseAuthenticationMethodString(const std::string& value) {
22 AuthenticationMethod result;
23 if (!NameToValue(kAuthenticationMethodStrings, value, &result))
24 return AuthenticationMethod::INVALID;
25 return result;
26 }
27
28 const std::string AuthenticationMethodToString(
29 AuthenticationMethod method) {
30 return ValueToName(kAuthenticationMethodStrings, method);
31 }
32
33 HashFunction GetHashFunctionForAuthenticationMethod(
34 AuthenticationMethod method) {
35 switch (method) {
36 case AuthenticationMethod::INVALID:
37 NOTREACHED();
38 return HashFunction::NONE;
39
40 case AuthenticationMethod::SPAKE2_SHARED_SECRET_PLAIN:
41 case AuthenticationMethod::THIRD_PARTY:
42 return HashFunction::NONE;
43
44 case AuthenticationMethod::SPAKE2_SHARED_SECRET_HMAC:
45 case AuthenticationMethod::SPAKE2_PAIR:
46 return HashFunction::HMAC_SHA256;
47 }
48
49 NOTREACHED();
50 return HashFunction::NONE;
51 }
52
53 std::string ApplySharedSecretHashFunction(HashFunction hash_function,
54 const std::string& tag,
55 const std::string& shared_secret) {
56 switch (hash_function) {
57 case HashFunction::NONE:
58 return shared_secret;
59
60 case HashFunction::HMAC_SHA256: {
61 crypto::HMAC response(crypto::HMAC::SHA256);
62 if (!response.Init(tag)) {
63 LOG(FATAL) << "HMAC::Init failed";
64 }
65
66 unsigned char out_bytes[kSharedSecretHashLength];
67 if (!response.Sign(shared_secret, out_bytes, sizeof(out_bytes))) {
68 LOG(FATAL) << "HMAC::Sign failed";
69 }
70
71 return std::string(out_bytes, out_bytes + sizeof(out_bytes));
72 }
73 }
74
75 NOTREACHED();
76 return shared_secret;
77 }
78
79 } // namespace protocol
80 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/protocol/authentication_method.h ('k') | remoting/protocol/me2me_host_authenticator_factory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698