1 #pragma once 2 3 #include <memory> 4 #include <vector> 5 6 #include <aidl/android/hardware/security/sharedsecret/BnSharedSecret.h> 7 #include <aidl/android/hardware/security/sharedsecret/SharedSecretParameters.h> 8 9 #include "CborConverter.h" 10 #include "JavacardSecureElement.h" 11 12 namespace aidl::android::hardware::security::sharedsecret { 13 using ::keymint::javacard::CborConverter; 14 using ::keymint::javacard::JavacardSecureElement; 15 using ndk::ScopedAStatus; 16 using std::shared_ptr; 17 using std::vector; 18 19 class JavacardSharedSecret : public BnSharedSecret { 20 public: JavacardSharedSecret(shared_ptr<JavacardSecureElement> card)21 explicit JavacardSharedSecret(shared_ptr<JavacardSecureElement> card) : card_(card) {} ~JavacardSharedSecret()22 virtual ~JavacardSharedSecret() {} 23 24 ScopedAStatus getSharedSecretParameters(SharedSecretParameters* params) override; 25 26 ScopedAStatus computeSharedSecret(const std::vector<SharedSecretParameters>& params, 27 std::vector<uint8_t>* secret) override; 28 29 private: 30 shared_ptr<JavacardSecureElement> card_; 31 CborConverter cbor_; 32 }; 33 34 } // namespace aidl::android::hardware::security::sharedsecret 35