summaryrefslogtreecommitdiff
path: root/chromium/components/cryptauth/session_keys.h
blob: c9d0e394de76a2e7145ac8c53f3ba64dc0412021 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_CRYPTAUTH_SESSION_KEYS_H_
#define COMPONENTS_CRYPTAUTH_SESSION_KEYS_H_

#include <string>

#include "base/macros.h"

namespace cryptauth {

// This class contains the secure channel (secure context) session keys. This
// class derives (from the master symmetric key) different keys for encryption
// and decryption. The protocol initiator (i.e. the Chromebook) should use
// |initiator_encode_key()| to encrypt the messages, and the responder should
// use |responder_encode_key()|. This is reversed for decryption.
class SessionKeys {
 public:
  // Create session keys derived from the |master_symmetric_key|.
  explicit SessionKeys(const std::string& master_symmetric_key);

  SessionKeys();

  virtual ~SessionKeys();

  virtual std::string initiator_encode_key() const;
  virtual std::string responder_encode_key() const;

 private:
  // The initiator encoding key.
  std::string initiator_encode_key_;

  // The responder encoding key.
  std::string responder_encode_key_;
};

}  // namespace cryptauth

#endif  // COMPONENTS_CRYPTAUTH_SESSION_KEYS_H_