xref: /aosp_15_r20/system/keymaster/ng/include/AndroidRemotelyProvisionedComponentDevice.h (revision 789431f29546679ab5188a97751fb38e3018d44d)
1*789431f2SAndroid Build Coastguard Worker /*
2*789431f2SAndroid Build Coastguard Worker  * Copyright 2021, The Android Open Source Project
3*789431f2SAndroid Build Coastguard Worker  *
4*789431f2SAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*789431f2SAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*789431f2SAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*789431f2SAndroid Build Coastguard Worker  *
8*789431f2SAndroid Build Coastguard Worker  *     http://www.apache.org/licenses/LICENSE-2.0
9*789431f2SAndroid Build Coastguard Worker  *
10*789431f2SAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*789431f2SAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*789431f2SAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*789431f2SAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*789431f2SAndroid Build Coastguard Worker  * limitations under the License.
15*789431f2SAndroid Build Coastguard Worker  */
16*789431f2SAndroid Build Coastguard Worker 
17*789431f2SAndroid Build Coastguard Worker #pragma once
18*789431f2SAndroid Build Coastguard Worker 
19*789431f2SAndroid Build Coastguard Worker #include <AndroidKeyMintDevice.h>
20*789431f2SAndroid Build Coastguard Worker #include <aidl/android/hardware/security/keymint/BnRemotelyProvisionedComponent.h>
21*789431f2SAndroid Build Coastguard Worker #include <aidl/android/hardware/security/keymint/RpcHardwareInfo.h>
22*789431f2SAndroid Build Coastguard Worker #include <aidl/android/hardware/security/keymint/SecurityLevel.h>
23*789431f2SAndroid Build Coastguard Worker #include <cppbor.h>
24*789431f2SAndroid Build Coastguard Worker #include <keymaster/UniquePtr.h>
25*789431f2SAndroid Build Coastguard Worker #include <keymaster/android_keymaster.h>
26*789431f2SAndroid Build Coastguard Worker 
27*789431f2SAndroid Build Coastguard Worker namespace aidl::android::hardware::security::keymint {
28*789431f2SAndroid Build Coastguard Worker 
29*789431f2SAndroid Build Coastguard Worker class AndroidRemotelyProvisionedComponentDevice : public BnRemotelyProvisionedComponent {
30*789431f2SAndroid Build Coastguard Worker     using ScopedAStatus = ::ndk::ScopedAStatus;
31*789431f2SAndroid Build Coastguard Worker 
32*789431f2SAndroid Build Coastguard Worker   public:
33*789431f2SAndroid Build Coastguard Worker     explicit AndroidRemotelyProvisionedComponentDevice(
34*789431f2SAndroid Build Coastguard Worker         const std::shared_ptr<AndroidKeyMintDevice>& keymint);
35*789431f2SAndroid Build Coastguard Worker     virtual ~AndroidRemotelyProvisionedComponentDevice() = default;
36*789431f2SAndroid Build Coastguard Worker 
37*789431f2SAndroid Build Coastguard Worker     ScopedAStatus getHardwareInfo(RpcHardwareInfo* info) override;
38*789431f2SAndroid Build Coastguard Worker 
39*789431f2SAndroid Build Coastguard Worker     ScopedAStatus generateEcdsaP256KeyPair(bool testMode, MacedPublicKey* macedPublicKey,
40*789431f2SAndroid Build Coastguard Worker                                            std::vector<uint8_t>* privateKeyHandle) override;
41*789431f2SAndroid Build Coastguard Worker 
42*789431f2SAndroid Build Coastguard Worker     ScopedAStatus generateCertificateRequest(bool testMode,
43*789431f2SAndroid Build Coastguard Worker                                              const std::vector<MacedPublicKey>& keysToSign,
44*789431f2SAndroid Build Coastguard Worker                                              const std::vector<uint8_t>& endpointEncCertChain,
45*789431f2SAndroid Build Coastguard Worker                                              const std::vector<uint8_t>& challenge,
46*789431f2SAndroid Build Coastguard Worker                                              DeviceInfo* deviceInfo, ProtectedData* protectedData,
47*789431f2SAndroid Build Coastguard Worker                                              std::vector<uint8_t>* keysToSignMac) override;
48*789431f2SAndroid Build Coastguard Worker 
49*789431f2SAndroid Build Coastguard Worker     ScopedAStatus generateCertificateRequestV2(const std::vector<MacedPublicKey>& keysToSign,
50*789431f2SAndroid Build Coastguard Worker                                                const std::vector<uint8_t>& challenge,
51*789431f2SAndroid Build Coastguard Worker                                                std::vector<uint8_t>* csr) override;
52*789431f2SAndroid Build Coastguard Worker 
53*789431f2SAndroid Build Coastguard Worker   private:
54*789431f2SAndroid Build Coastguard Worker     std::shared_ptr<::keymaster::AndroidKeymaster> impl_;
55*789431f2SAndroid Build Coastguard Worker };
56*789431f2SAndroid Build Coastguard Worker 
57*789431f2SAndroid Build Coastguard Worker }  // namespace aidl::android::hardware::security::keymint
58