1 //
2 // Copyright (C) 2015 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 ATTESTATION_COMMON_ATTESTATION_INTERFACE_H_
18 #define ATTESTATION_COMMON_ATTESTATION_INTERFACE_H_
19 
20 #include <string>
21 
22 #include <base/callback_forward.h>
23 
24 #include "attestation/common/interface.pb.h"
25 
26 namespace attestation {
27 
28 // The main attestation interface implemented by proxies and services. The
29 // anticipated flow looks like this:
30 //   [APP] -> AttestationInterface -> [IPC] -> AttestationInterface
31 class AttestationInterface {
32  public:
33   virtual ~AttestationInterface() = default;
34 
35   // Performs initialization tasks that may take a long time. This method must
36   // be successfully called before calling any other method. Returns true on
37   // success.
38   virtual bool Initialize() = 0;
39 
40   // Processes a CreateGoogleAttestedKeyRequest and responds with a
41   // CreateGoogleAttestedKeyReply.
42   using CreateGoogleAttestedKeyCallback =
43       base::Callback<void(const CreateGoogleAttestedKeyReply&)>;
44   virtual void CreateGoogleAttestedKey(
45       const CreateGoogleAttestedKeyRequest& request,
46       const CreateGoogleAttestedKeyCallback& callback) = 0;
47 
48   // Processes a GetKeyInfoRequest and responds with a GetKeyInfoReply.
49   using GetKeyInfoCallback = base::Callback<void(const GetKeyInfoReply&)>;
50   virtual void GetKeyInfo(const GetKeyInfoRequest& request,
51                           const GetKeyInfoCallback& callback) = 0;
52 
53   // Processes a GetEndorsementInfoRequest and responds with a
54   // GetEndorsementInfoReply.
55   using GetEndorsementInfoCallback =
56       base::Callback<void(const GetEndorsementInfoReply&)>;
57   virtual void GetEndorsementInfo(
58       const GetEndorsementInfoRequest& request,
59       const GetEndorsementInfoCallback& callback) = 0;
60 
61   // Processes a GetAttestationKeyInfoRequest and responds with a
62   // GetAttestationKeyInfoReply.
63   using GetAttestationKeyInfoCallback =
64       base::Callback<void(const GetAttestationKeyInfoReply&)>;
65   virtual void GetAttestationKeyInfo(
66       const GetAttestationKeyInfoRequest& request,
67       const GetAttestationKeyInfoCallback& callback) = 0;
68 
69   // Processes a ActivateAttestationKeyRequest and responds with a
70   // ActivateAttestationKeyReply.
71   using ActivateAttestationKeyCallback =
72       base::Callback<void(const ActivateAttestationKeyReply&)>;
73   virtual void ActivateAttestationKey(
74       const ActivateAttestationKeyRequest& request,
75       const ActivateAttestationKeyCallback& callback) = 0;
76 
77   // Processes a CreateCertifiableKeyRequest and responds with a
78   // CreateCertifiableKeyReply.
79   using CreateCertifiableKeyCallback =
80       base::Callback<void(const CreateCertifiableKeyReply&)>;
81   virtual void CreateCertifiableKey(
82       const CreateCertifiableKeyRequest& request,
83       const CreateCertifiableKeyCallback& callback) = 0;
84 
85   // Processes a DecryptRequest and responds with a DecryptReply.
86   using DecryptCallback = base::Callback<void(const DecryptReply&)>;
87   virtual void Decrypt(const DecryptRequest& request,
88                        const DecryptCallback& callback) = 0;
89 
90   // Processes a SignRequest and responds with a SignReply.
91   using SignCallback = base::Callback<void(const SignReply&)>;
92   virtual void Sign(const SignRequest& request,
93                     const SignCallback& callback) = 0;
94 
95   // Processes a RegisterKeyWithChapsTokenRequest and responds with a
96   // RegisterKeyWithChapsTokenReply.
97   using RegisterKeyWithChapsTokenCallback =
98       base::Callback<void(const RegisterKeyWithChapsTokenReply&)>;
99   virtual void RegisterKeyWithChapsToken(
100       const RegisterKeyWithChapsTokenRequest& request,
101       const RegisterKeyWithChapsTokenCallback& callback) = 0;
102 };
103 
104 }  // namespace attestation
105 
106 #endif  // ATTESTATION_COMMON_ATTESTATION_INTERFACE_H_
107