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