| // Copyright 2018 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef HERMES_SMDP_INTERFACE_H_ |
| #define HERMES_SMDP_INTERFACE_H_ |
| |
| #include <cstdint> |
| #include <memory> |
| #include <string> |
| #include <vector> |
| |
| #include <base/callback.h> |
| #include <base/values.h> |
| |
| namespace hermes { |
| |
| // Provides an interface through which the LPD can communicate with the SM-DP |
| // server. This is responsible for opening, maintaining, and closing a HTTPS |
| // connection to the server. |
| class SmdpInterface { |
| public: |
| using InitiateAuthenticationCallback = |
| base::Callback<void(const std::string& transaction_id, |
| const std::vector<uint8_t>& server_signed1, |
| const std::vector<uint8_t>& server_signature1, |
| const std::vector<uint8_t>& euicc_ci_pk_id_to_be_used, |
| const std::vector<uint8_t>& server_certificate)>; |
| using AuthenticateClientCallback = |
| base::Callback<void(const std::string& transaction_id, |
| const std::vector<uint8_t>& profile_metadata, |
| const std::vector<uint8_t>& smdp_signed2, |
| const std::vector<uint8_t>& smdp_signature2, |
| const std::vector<uint8_t>& public_key)>; |
| using GetBoundProfilePackageCallback = |
| base::Callback<void(const std::string& transaction_id, |
| const std::vector<uint8_t>& bound_profile_package)>; |
| using ErrorCallback = |
| base::Callback<void(const std::vector<uint8_t>& error_data)>; |
| |
| virtual ~SmdpInterface() = default; |
| |
| // First, establishes a connection to the SM-DP+ server over which |
| // the ES8+ secure channel will be tunneled, then sends server the eSIM |
| // challenge and info1 to begin the Authentication procedure. |callback| is |
| // called upon server's response, or |error_callback| is called on server |
| // error. |
| // |
| // Parameters |
| // challenge - eSIM challenge as returned by Esim.GetEuiccChallenge |
| // info1 - eSIM info1 as returned by Esim.GetEuiccInfo |
| virtual void InitiateAuthentication( |
| const std::vector<uint8_t>& info1, |
| const std::vector<uint8_t>& challenge, |
| const InitiateAuthenticationCallback& data_callback, |
| const ErrorCallback& error_callback) = 0; |
| |
| virtual void AuthenticateClient( |
| const std::string& transaction_id, |
| const std::vector<uint8_t>& data, |
| const AuthenticateClientCallback& data_callback, |
| const ErrorCallback& error_callback) = 0; |
| |
| virtual void GetBoundProfilePackage( |
| const std::string& transaction_id, |
| const std::vector<uint8_t>& data, |
| const GetBoundProfilePackageCallback& data_callback, |
| const ErrorCallback& error_callback) = 0; |
| }; |
| |
| } // namespace hermes |
| |
| #endif // HERMES_SMDP_INTERFACE_H_ |