1// Copyright 2014 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#ifndef COMPONENTS_OS_CRYPT_KEYCHAIN_PASSWORD_MAC_H_
6#define COMPONENTS_OS_CRYPT_KEYCHAIN_PASSWORD_MAC_H_
7
8#include <string>
9
10#include "base/macros.h"
11
12namespace crypto {
13class AppleKeychain;
14}
15
16class KeychainPassword {
17 public:
18  explicit KeychainPassword(const crypto::AppleKeychain& keychain)
19      : keychain_(keychain) {
20  }
21
22  // Get the OSCrypt password for this system.  If no password exists
23  // in the Keychain then one is generated, stored in the Mac keychain, and
24  // returned.
25  // If one exists then it is fetched from the Keychain and returned.
26  // If the user disallows access to the Keychain (or an error occurs) then an
27  // empty string is returned.
28  std::string GetPassword() const;
29
30 private:
31  const crypto::AppleKeychain& keychain_;
32
33  DISALLOW_COPY_AND_ASSIGN(KeychainPassword);
34};
35
36#endif  // COMPONENTS_OS_CRYPT_KEYCHAIN_PASSWORD_MAC_H_
37