blob: 3446c48173ed0b7f87af9ba8ea38eaa76dd44910 [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 Buka41aa8092015-12-09 20:04:34 -080025 virtual std::string CreateAccessToken(const UserInfo& user_info) = 0;
Vitaly Buka7ce499f2015-06-09 08:04:11 -070026
27 // Validates |token| and returns scope and user id parsed from that.
28 virtual UserInfo ParseAccessToken(const std::string& token,
29 base::Time* time) const = 0;
30
31 // Returns list of pairing methods by device.
32 virtual std::set<PairingType> GetPairingTypes() const = 0;
33
34 // Returns list of crypto methods supported by devices.
35 virtual std::set<CryptoType> GetCryptoTypes() const = 0;
36
Vitaly Buka29bc5932015-12-13 22:56:52 -080037 // Returns Root Client Authorization Token.
38 virtual std::string ClaimRootClientAuthToken() = 0;
39
40 // Confirms pending pending token claim or checks that token is valid for the
41 // active secret.
42 virtual bool ConfirmAuthToken(const std::string& token) = 0;
43
Vitaly Buka7ce499f2015-06-09 08:04:11 -070044 // Returns true if |auth_code| provided by client is valid. Client should
45 // obtain |auth_code| during pairing process.
46 virtual bool IsValidPairingCode(const std::string& auth_code) const = 0;
47
48 virtual bool StartPairing(PairingType mode,
49 CryptoType crypto,
50 std::string* session_id,
51 std::string* device_commitment,
Vitaly Buka0801a1f2015-08-14 10:03:46 -070052 ErrorPtr* error) = 0;
Vitaly Buka7ce499f2015-06-09 08:04:11 -070053
54 virtual bool ConfirmPairing(const std::string& session_id,
55 const std::string& client_commitment,
56 std::string* fingerprint,
57 std::string* signature,
Vitaly Buka0801a1f2015-08-14 10:03:46 -070058 ErrorPtr* error) = 0;
Vitaly Buka7ce499f2015-06-09 08:04:11 -070059
60 virtual bool CancelPairing(const std::string& session_id,
Vitaly Buka0801a1f2015-08-14 10:03:46 -070061 ErrorPtr* error) = 0;
Vitaly Buka7ce499f2015-06-09 08:04:11 -070062};
63
Vitaly Bukab6f015a2015-07-09 14:59:23 -070064} // namespace privet
65} // namespace weave
Vitaly Buka7ce499f2015-06-09 08:04:11 -070066
Vitaly Buka912b6982015-07-06 11:13:03 -070067#endif // LIBWEAVE_SRC_PRIVET_SECURITY_DELEGATE_H_