• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright (C) 2014 The Android Open Source Project
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 //      http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //
16 
17 #ifndef TRUNKS_TRUNKS_FACTORY_H_
18 #define TRUNKS_TRUNKS_FACTORY_H_
19 
20 #include <string>
21 
22 #include <base/macros.h>
23 #include <base/memory/scoped_ptr.h>
24 
25 #include "trunks/trunks_export.h"
26 
27 namespace trunks {
28 
29 class AuthorizationDelegate;
30 class BlobParser;
31 class CommandTransceiver;
32 class HmacSession;
33 class PolicySession;
34 class SessionManager;
35 class Tpm;
36 class TpmState;
37 class TpmUtility;
38 
39 // TrunksFactory is an interface to act as a factory for trunks objects. This
40 // mechanism assists in injecting mocks for testing. This class is not
41 // thread-safe.
42 class TRUNKS_EXPORT TrunksFactory {
43  public:
TrunksFactory()44   TrunksFactory() {}
~TrunksFactory()45   virtual ~TrunksFactory() {}
46 
47   // Returns a Tpm instance. The caller does not take ownership.
48   virtual Tpm* GetTpm() const = 0;
49 
50   // Returns an uninitialized TpmState instance. The caller takes ownership.
51   virtual scoped_ptr<TpmState> GetTpmState() const = 0;
52 
53   // Returns a TpmUtility instance. The caller takes ownership.
54   virtual scoped_ptr<TpmUtility> GetTpmUtility() const = 0;
55 
56   // Returns an AuthorizationDelegate instance for basic password authorization.
57   // The caller takes ownership.
58   virtual scoped_ptr<AuthorizationDelegate> GetPasswordAuthorization(
59       const std::string& password) const = 0;
60 
61   // Returns a SessionManager instance. The caller takes ownership.
62   virtual scoped_ptr<SessionManager> GetSessionManager() const = 0;
63 
64   // Returns a HmacSession instance. The caller takes ownership.
65   virtual scoped_ptr<HmacSession> GetHmacSession() const = 0;
66 
67   // Returns a PolicySession instance. The caller takes ownership.
68   virtual scoped_ptr<PolicySession> GetPolicySession() const = 0;
69 
70   // Returns a TrialSession instance. The caller takes ownership.
71   virtual scoped_ptr<PolicySession> GetTrialSession() const = 0;
72 
73   // Returns a BlobParser instance. The caller takes ownership.
74   virtual scoped_ptr<BlobParser> GetBlobParser() const = 0;
75 
76  private:
77   DISALLOW_COPY_AND_ASSIGN(TrunksFactory);
78 };
79 
80 }  // namespace trunks
81 
82 #endif  // TRUNKS_TRUNKS_FACTORY_H_
83