118f27ade48405475ed610ee0067faa773211d598Janis Danisevskis// Copyright 2016 The Android Open Source Project 218f27ade48405475ed610ee0067faa773211d598Janis Danisevskis// 318f27ade48405475ed610ee0067faa773211d598Janis Danisevskis// Licensed under the Apache License, Version 2.0 (the "License"); 418f27ade48405475ed610ee0067faa773211d598Janis Danisevskis// you may not use this file except in compliance with the License. 518f27ade48405475ed610ee0067faa773211d598Janis Danisevskis// You may obtain a copy of the License at 618f27ade48405475ed610ee0067faa773211d598Janis Danisevskis// 718f27ade48405475ed610ee0067faa773211d598Janis Danisevskis// http://www.apache.org/licenses/LICENSE-2.0 818f27ade48405475ed610ee0067faa773211d598Janis Danisevskis// 918f27ade48405475ed610ee0067faa773211d598Janis Danisevskis// Unless required by applicable law or agreed to in writing, software 1018f27ade48405475ed610ee0067faa773211d598Janis Danisevskis// distributed under the License is distributed on an "AS IS" BASIS, 1118f27ade48405475ed610ee0067faa773211d598Janis Danisevskis// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1218f27ade48405475ed610ee0067faa773211d598Janis Danisevskis// See the License for the specific language governing permissions and 1318f27ade48405475ed610ee0067faa773211d598Janis Danisevskis// limitations under the License. 1418f27ade48405475ed610ee0067faa773211d598Janis Danisevskis 1518f27ade48405475ed610ee0067faa773211d598Janis Danisevskis#ifndef KEYSTORE_INCLUDE_KEYSTORE_KEYATTESTATIONAPPLICATIONID_H_ 1618f27ade48405475ed610ee0067faa773211d598Janis Danisevskis#define KEYSTORE_INCLUDE_KEYSTORE_KEYATTESTATIONAPPLICATIONID_H_ 1718f27ade48405475ed610ee0067faa773211d598Janis Danisevskis 1818f27ade48405475ed610ee0067faa773211d598Janis Danisevskis#include <memory> 1918f27ade48405475ed610ee0067faa773211d598Janis Danisevskis#include <vector> 2018f27ade48405475ed610ee0067faa773211d598Janis Danisevskis 218845a098c91d75b3d079e9ee6aafba919f7a9c66Shawn Willden#include <binder/Parcelable.h> 228845a098c91d75b3d079e9ee6aafba919f7a9c66Shawn Willden 23a447b3c9af62540abcc2d01a4d62124838ffe89dDmitry Dementyev#include "KeyAttestationPackageInfo.h" 24a447b3c9af62540abcc2d01a4d62124838ffe89dDmitry Dementyev 2518f27ade48405475ed610ee0067faa773211d598Janis Danisevskisnamespace android { 2618f27ade48405475ed610ee0067faa773211d598Janis Danisevskisnamespace security { 2718f27ade48405475ed610ee0067faa773211d598Janis Danisevskisnamespace keymaster { 2818f27ade48405475ed610ee0067faa773211d598Janis Danisevskis 2918f27ade48405475ed610ee0067faa773211d598Janis Danisevskisclass KeyAttestationApplicationId : public Parcelable { 3018f27ade48405475ed610ee0067faa773211d598Janis Danisevskis public: 3118f27ade48405475ed610ee0067faa773211d598Janis Danisevskis typedef SharedNullableIterator<const KeyAttestationPackageInfo, std::vector> 3218f27ade48405475ed610ee0067faa773211d598Janis Danisevskis ConstKeyAttestationPackageInfoIterator; 33ea47d3f78bd6902e406f5faf84a5477112f10e3eEran Messeri KeyAttestationApplicationId(); 34ea47d3f78bd6902e406f5faf84a5477112f10e3eEran Messeri KeyAttestationApplicationId(std::unique_ptr<KeyAttestationPackageInfo> package); 3518f27ade48405475ed610ee0067faa773211d598Janis Danisevskis 3618f27ade48405475ed610ee0067faa773211d598Janis Danisevskis status_t writeToParcel(Parcel*) const override; 3718f27ade48405475ed610ee0067faa773211d598Janis Danisevskis status_t readFromParcel(const Parcel* parcel) override; 3818f27ade48405475ed610ee0067faa773211d598Janis Danisevskis 3918f27ade48405475ed610ee0067faa773211d598Janis Danisevskis ConstKeyAttestationPackageInfoIterator pinfos_begin() const { 4018f27ade48405475ed610ee0067faa773211d598Janis Danisevskis return ConstKeyAttestationPackageInfoIterator(packageInfos_); 4118f27ade48405475ed610ee0067faa773211d598Janis Danisevskis } 4218f27ade48405475ed610ee0067faa773211d598Janis Danisevskis ConstKeyAttestationPackageInfoIterator pinfos_end() const { 4318f27ade48405475ed610ee0067faa773211d598Janis Danisevskis return ConstKeyAttestationPackageInfoIterator(); 4418f27ade48405475ed610ee0067faa773211d598Janis Danisevskis } 4518f27ade48405475ed610ee0067faa773211d598Janis Danisevskis 4618f27ade48405475ed610ee0067faa773211d598Janis Danisevskis private: 4718f27ade48405475ed610ee0067faa773211d598Janis Danisevskis std::shared_ptr<std::vector<std::unique_ptr<KeyAttestationPackageInfo>>> packageInfos_; 4818f27ade48405475ed610ee0067faa773211d598Janis Danisevskis}; 4918f27ade48405475ed610ee0067faa773211d598Janis Danisevskis 5018f27ade48405475ed610ee0067faa773211d598Janis Danisevskis} // namespace keymaster 5118f27ade48405475ed610ee0067faa773211d598Janis Danisevskis} // namespace security 52a447b3c9af62540abcc2d01a4d62124838ffe89dDmitry Dementyev} // namespace android 5318f27ade48405475ed610ee0067faa773211d598Janis Danisevskis 5418f27ade48405475ed610ee0067faa773211d598Janis Danisevskis#endif // KEYSTORE_INCLUDE_KEYSTORE_KEYATTESTATIONAPPLICATIONID_H_ 55