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