xref: /aosp_15_r20/external/libese/ready_se/google/keymint/KM300/HAL/JavacardSharedSecret.h (revision 5c4dab75aa57366379dce576b1a9e082a44e2b3a)
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