lpac/euicc/es10b.h

157 lines
5.7 KiB
C

#pragma once
#include "euicc.h"
enum es10b_profile_management_operation
{
ES10B_PROFILE_MANAGEMENT_OPERATION_NULL = -1,
ES10B_PROFILE_MANAGEMENT_OPERATION_INSTALL = 0x80,
ES10B_PROFILE_MANAGEMENT_OPERATION_ENABLE = 0x40,
ES10B_PROFILE_MANAGEMENT_OPERATION_DISABLE = 0x20,
ES10B_PROFILE_MANAGEMENT_OPERATION_DELETE = 0x10,
ES10B_PROFILE_MANAGEMENT_OPERATION_UNDEFINED = 0xFF,
};
enum es10b_bpp_command_id
{
ES10B_BPP_COMMAND_ID_INITIALISE_SECURE_CHANNEL = 0,
ES10B_BPP_COMMAND_ID_CONFIGURE_ISDP = 1,
ES10B_BPP_COMMAND_ID_STORE_METADATA = 2,
ES10B_BPP_COMMAND_ID_STORE_METADATA2 = 3,
ES10B_BPP_COMMAND_ID_REPLACE_SESSION_KEYS = 4,
ES10B_BPP_COMMAND_ID_LOAD_PROFILE_ELEMENTS = 5,
ES10B_BPP_COMMAND_ID_UNDEFINED = 0xFF,
};
enum es10b_error_reason
{
ES10B_ERROR_REASON_INCORRECT_INPUT_VALUES = 1,
ES10B_ERROR_REASON_INVALID_SIGNATURE = 2,
ES10B_ERROR_REASON_INVALID_TRANSACTION_ID = 3,
ES10B_ERROR_REASON_UNSUPPORTED_CRT_VALUES = 4,
ES10B_ERROR_REASON_UNSUPPORTED_REMOTE_OPERATION_TYPE = 5,
ES10B_ERROR_REASON_UNSUPPORTED_PROFILE_CLASS = 6,
ES10B_ERROR_REASON_SCP03T_STRUCTURE_ERROR = 7,
ES10B_ERROR_REASON_SCP03T_SECURITY_ERROR = 8,
ES10B_ERROR_REASON_INSTALL_FAILED_DUE_TO_ICCID_ALREADY_EXISTS_ON_EUICC = 9,
ES10B_ERROR_REASON_INSTALL_FAILED_DUE_TO_INSUFFICIENT_MEMORY_FOR_PROFILE = 10,
ES10B_ERROR_REASON_INSTALL_FAILED_DUE_TO_INTERRUPTION = 11,
ES10B_ERROR_REASON_INSTALL_FAILED_DUE_TO_PE_PROCESSING_ERROR = 12,
ES10B_ERROR_REASON_INSTALL_FAILED_DUE_TO_ICCID_MISMATCH = 13,
ES10B_ERROR_REASON_TEST_PROFILE_INSTALL_FAILED_DUE_TO_INVALID_NAA_KEY = 14,
ES10B_ERROR_REASON_PPR_NOT_ALLOWED = 15,
ES10B_ERROR_REASON_INSTALL_FAILED_DUE_TO_UNKNOWN_ERROR = 127,
ES10B_ERROR_REASON_UNDEFINED = 0xFF,
};
enum es10b_cancel_session_reason
{
ES10B_CANCEL_SESSION_REASON_ENDUSERREJECTION = 0,
ES10B_CANCEL_SESSION_REASON_POSTPONED = 1,
ES10B_CANCEL_SESSION_REASON_TIMEOUT = 2,
ES10B_CANCEL_SESSION_REASON_PPRNOTALLOWED = 3,
ES10B_CANCEL_SESSION_REASON_METADATAMISMATCH = 4,
ES10B_CANCEL_SESSION_REASON_LOADBPPEXECUTIONERROR = 5,
ES10B_CANCEL_SESSION_REASON_UNDEFINED = 127
};
struct es10b_load_bound_profile_package_result
{
enum es10b_bpp_command_id bppCommandId;
enum es10b_error_reason errorReason;
};
struct es10b_prepare_download_param
{
char *b64_profileMetadata;
char *b64_smdpSigned2;
char *b64_smdpSignature2;
char *b64_smdpCertificate;
};
struct es10b_prepare_download_param_user
{
const char *confirmationCode;
};
struct es10b_notification_metadata_list
{
unsigned long seqNumber;
enum es10b_profile_management_operation profileManagementOperation;
char *notificationAddress;
char *iccid;
struct es10b_notification_metadata_list *next;
};
struct es10b_pending_notification
{
char *notificationAddress;
char *b64_PendingNotification;
};
struct es10b_authenticate_server_param
{
char *b64_serverSigned1;
char *b64_serverSignature1;
char *b64_euiccCiPKIdToBeUsed;
char *b64_serverCertificate;
};
struct es10b_authenticate_server_param_user
{
const char *matchingId;
const char *imei;
};
struct es10b_cancel_session_param
{
const uint8_t *transactionId;
uint8_t transactionIdLen;
enum es10b_cancel_session_reason reason;
};
struct es10b_rat
{
const char **pprIds;
struct es10b_operation_id *allowedOperators;
const char **pprFlags;
struct es10b_rat *next;
};
struct es10b_operation_id
{
char *plmn;
char *gid1;
char *gid2;
struct es10b_operation_id *next;
};
int es10b_prepare_download_r(struct euicc_ctx *ctx, char **b64_PrepareDownloadResponse, struct es10b_prepare_download_param *param, struct es10b_prepare_download_param_user *param_user);
int es10b_load_bound_profile_package_r(struct euicc_ctx *ctx, struct es10b_load_bound_profile_package_result *result, const char *b64_BoundProfilePackage);
int es10b_get_euicc_challenge_r(struct euicc_ctx *ctx, char **b64_euiccChallenge);
int es10b_get_euicc_info_r(struct euicc_ctx *ctx, char **b64_EUICCInfo1);
int es10b_authenticate_server_r(struct euicc_ctx *ctx, uint8_t **transaction_id, uint32_t *transaction_id_len, char **b64_AuthenticateServerResponse, struct es10b_authenticate_server_param *param, struct es10b_authenticate_server_param_user *param_user);
int es10b_cancel_session_r(struct euicc_ctx *ctx, char **b64_CancelSessionResponse, struct es10b_cancel_session_param *param);
void es10b_prepare_download_param_free(struct es10b_prepare_download_param *param);
void es10b_authenticate_server_param_free(struct es10b_authenticate_server_param *param);
int es10b_prepare_download(struct euicc_ctx *ctx, const char *confirmationCode);
int es10b_load_bound_profile_package(struct euicc_ctx *ctx, struct es10b_load_bound_profile_package_result *result);
int es10b_get_euicc_challenge_and_info(struct euicc_ctx *ctx);
int es10b_authenticate_server(struct euicc_ctx *ctx, const char *matchingId, const char *imei);
int es10b_cancel_session(struct euicc_ctx *ctx, enum es10b_cancel_session_reason reason);
int es10b_list_notification(struct euicc_ctx *ctx, struct es10b_notification_metadata_list **notificationMetadataList);
int es10b_retrieve_notifications_list(struct euicc_ctx *ctx, struct es10b_pending_notification *PendingNotification, unsigned long seqNumber);
int es10b_remove_notification_from_list(struct euicc_ctx *ctx, unsigned long seqNumber);
void es10b_notification_metadata_list_free_all(struct es10b_notification_metadata_list *notificationMetadataList);
void es10b_pending_notification_free(struct es10b_pending_notification *PendingNotification);
int es10b_get_rat(struct euicc_ctx *ctx, struct es10b_rat **ratList);
void es10b_rat_list_free_all(struct es10b_rat *ratList);