blob: 867ff2a5b6ad4b37538fdb75075f3b509621d161 [file] [log] [blame]
Vitaly Buka4615e0d2015-10-14 15:35:12 -07001// Copyright 2015 The Weave Authors. All rights reserved.
Vitaly Buka7ce499f2015-06-09 08:04:11 -07002// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Vitaly Buka912b6982015-07-06 11:13:03 -07005#ifndef LIBWEAVE_SRC_PRIVET_SECURITY_DELEGATE_H_
6#define LIBWEAVE_SRC_PRIVET_SECURITY_DELEGATE_H_
Vitaly Buka7ce499f2015-06-09 08:04:11 -07007
8#include <memory>
9#include <set>
10#include <string>
11
12#include <base/time/time.h>
Vitaly Buka7ce499f2015-06-09 08:04:11 -070013
Stefan Sauer2d16dfa2015-09-25 17:08:35 +020014#include "src/privet/privet_types.h"
Vitaly Buka7ce499f2015-06-09 08:04:11 -070015
Vitaly Bukab6f015a2015-07-09 14:59:23 -070016namespace weave {
17namespace privet {
Vitaly Buka7ce499f2015-06-09 08:04:11 -070018
Vitaly Buka7ce499f2015-06-09 08:04:11 -070019// Interface to provide Security related logic for |PrivetHandler|.
20class SecurityDelegate {
21 public:
Vitaly Buka3bfb13d2015-11-24 14:46:13 -080022 virtual ~SecurityDelegate() {}
Vitaly Buka7ce499f2015-06-09 08:04:11 -070023
24 // Creates access token for the given scope, user id and |time|.
Vitaly Bukafd2ef682015-12-17 20:57:01 -080025 virtual bool CreateAccessToken(AuthType auth_type,
26 const std::string& auth_code,
27 AuthScope desired_scope,
28 std::string* access_token,
29 AuthScope* granted_scope,
30 base::TimeDelta* ttl,
31 ErrorPtr* error) = 0;
Vitaly Buka7ce499f2015-06-09 08:04:11 -070032
Vitaly Bukaa0a81342015-12-17 13:42:13 -080033 // Validates |token| and returns scope, user id parsed from that.
34 virtual bool ParseAccessToken(const std::string& token,
35 UserInfo* user_info,
36 ErrorPtr* error) const = 0;
Vitaly Buka7ce499f2015-06-09 08:04:11 -070037
38 // Returns list of pairing methods by device.
39 virtual std::set<PairingType> GetPairingTypes() const = 0;
40
41 // Returns list of crypto methods supported by devices.
42 virtual std::set<CryptoType> GetCryptoTypes() const = 0;
43
Vitaly Bukaee7322f2015-12-18 16:54:05 -080044 // Returns list of auth methods supported by devices.
45 virtual std::set<AuthType> GetAuthTypes() const = 0;
46
Vitaly Buka29bc5932015-12-13 22:56:52 -080047 // Returns Root Client Authorization Token.
Vitaly Buka4ab50022015-12-14 22:32:24 -080048 virtual std::string ClaimRootClientAuthToken(ErrorPtr* error) = 0;
Vitaly Buka29bc5932015-12-13 22:56:52 -080049
50 // Confirms pending pending token claim or checks that token is valid for the
51 // active secret.
Vitaly Buka305ab612015-12-15 12:02:59 -080052 virtual bool ConfirmClientAuthToken(const std::string& token,
53 ErrorPtr* error) = 0;
Vitaly Buka29bc5932015-12-13 22:56:52 -080054
Vitaly Buka7ce499f2015-06-09 08:04:11 -070055 virtual bool StartPairing(PairingType mode,
56 CryptoType crypto,
57 std::string* session_id,
58 std::string* device_commitment,
Vitaly Buka0801a1f2015-08-14 10:03:46 -070059 ErrorPtr* error) = 0;
Vitaly Buka7ce499f2015-06-09 08:04:11 -070060
61 virtual bool ConfirmPairing(const std::string& session_id,
62 const std::string& client_commitment,
63 std::string* fingerprint,
64 std::string* signature,
Vitaly Buka0801a1f2015-08-14 10:03:46 -070065 ErrorPtr* error) = 0;
Vitaly Buka7ce499f2015-06-09 08:04:11 -070066
67 virtual bool CancelPairing(const std::string& session_id,
Vitaly Buka0801a1f2015-08-14 10:03:46 -070068 ErrorPtr* error) = 0;
Vitaly Buka483d5972015-12-16 13:45:35 -080069
70 virtual std::string CreateSessionId() = 0;
Vitaly Buka7ce499f2015-06-09 08:04:11 -070071};
72
Vitaly Bukab6f015a2015-07-09 14:59:23 -070073} // namespace privet
74} // namespace weave
Vitaly Buka7ce499f2015-06-09 08:04:11 -070075
Vitaly Buka912b6982015-07-06 11:13:03 -070076#endif // LIBWEAVE_SRC_PRIVET_SECURITY_DELEGATE_H_