范围:5.6.1 ~ 5.6.7(LPA -- SM-DP+)。
目标:用于 ES9+ 服务端/客户端实现、会话管理、错误码对照与联调验收。
1. ES9+ 总体
- ES9+ 位于 LPA(LPDd)与 SM-DP+(Profile Package Delivery)之间。
- LPA 与 SM-DP+ 通过 HTTPS(服务端认证模式)通信,遵循 2.6.6。
- LPA 在 TLS 建链时必须校验证书(CERT.DP.TLS);校验失败必须拒绝连接并使流程失败。
2. InitiateAuthentication(5.6.1)
2.1 用途
- LPA 发起对 SM-DP+ 的认证初始化(承接 eUICC Challenge)。
2.2 关键校验
smdpAddress必须与 SM-DP+ 地址匹配(大小写不敏感)。- 根据
euiccCiPKIdListForSigning(V3)选择可用 eSIM CA RootCA 公钥标识。 - 选择并返回可用
CERT.DPauth.SIG链(兼容证书链变体策略)。 - 如双方支持 CRL stapling,则必须可提供链上证书对应 CRL。
- 生成唯一
transactionId与serverChallenge。 - 生成
serverSigned1与serverSignature1。
2.3 输入输出(核心)
- 输入:
euiccChallenge(M),euiccInfo1(M),smdpAddress(M),lpaRspCapability(C) - 输出:
transactionId(M),serverSigned1(M),serverSignature1(M),serverCertificate(M),otherCertsInChain(C),crlList(C),euiccCiPKIdToBeUsed(C)
2.4 典型错误码
- SM-DP+ Address - Refused
- Security configuration - Unsupported
- SM-DP+ Certificate - Unavailable
3. GetBoundProfilePackage(5.6.2)
3.1 用途
- 请求并获取绑定后的 BPP(Bound Profile Package)。
3.2 关键规则
transactionId必须关联有效会话。- 校验 eUICC 签名。
- 若订单要求确认码,执行确认码哈希校验与重试计数。
- 可复用已有 BPP(otPK 相同)或重新绑定(otPK 变化)。
3.3 输入输出
- 输入:
transactionId(M),prepareDownloadResponse(M) - 输出:
transactionId(M),boundProfilePackage(M)
3.4 典型错误码
- TransactionId - Unknown
- eUICC - Verification Failed
- Confirmation Code - Mandatory Element Missing / Refused / Maximum number of attempts exceeded
- Profile - Unavailable
4. AuthenticateClient(5.6.3)
4.1 用途
- LPA 请求 SM-DP+ 对 eUICC 进行客户端认证,并驱动下载/RPM/设备变更/恢复流程。
4.2 通用校验(必须)
- eUICC 证书链有效且未过期。
- 根证书与前一阶段选定公钥标识一致。
- eUICC 签名有效。
- transactionId 与会话有效。
- serverChallenge 一致。
- 订单未过期、未超最大尝试次数。
- v3 能力字段(eUICC/LPA capability)未发生不一致变化。
4.3 分支处理
- Profile Download 分支:按 EID/MatchingID 关联订单,校验 Released 状态、资格、内存、测试/企业策略,生成
smdpSigned2/smdpSignature2。 - RPM 分支:按 EID/ICCID/MatchingID 关联 RPM 订单,生成
smdpSigned3/smdpSignature3。 - Device Change 分支:可走异步重试(
smdpSigned6/smdpSignature6)或同步准备(调用 ES2+.HandleDeviceChangeRequest,生成smdpSigned4/smdpSignature4,并按需通知 ES2+.HandleNotification)。 - Profile Recovery 分支:基于 Device Change 失败后的恢复条件准备恢复 Profile 并返回相应签名数据。
4.4 输入输出(核心)
-
输入:
transactionId(M),authenticateServerResponse(M),deleteNotificationForDc(O) -
输出(按分支条件返回):
- 下载分支:
profileMetadata,smdpSigned2,smdpSignature2,smdpCertificate - RPM 分支:
smdpSigned3,smdpSignature3 - 设备变更分支:
smdpSigned4,smdpSignature4,serviceProviderMessageForDc - 异步重试:
smdpSigned6,smdpSignature6
- 下载分支:
4.5 典型错误码(节选)
- eUICC Certificate - Verification Failed / Expired
- eUICC - Verification Failed / Insufficient Memory / Value has Changed
- CI Public Key - Unknown
- Profile - Not Allowed
- TransactionId - Unknown
- MatchingID - Refused
- EID/ICCID - Refused
- Profile Type - Stopped on warning
- Download order/RPM Order - Time to Live Expired / Maximum number of attempts exceeded
- Device Change - Not Allowed / Unsupported
- Function - Unsupported
5. HandleNotification(5.6.4)
- 由 LPA 通知 SM-DP+:某 Profile 管理操作在 eUICC 上已成功执行。
- SM-DP+ 按 3.5 处理并回执。
- 输入:
pendingNotification(M) - 输出:无附加输出数据。
6. CancelSession(5.6.5)
6.1 用途
- 终端/用户决定取消正在进行的 RSP Session。
6.2 关键规则
-
transactionId 必须有效。
-
校验
euiccCancelSessionSignature。 -
smdpOid必须与当前会话 SM-DP+ 身份一致。 -
对表 32b 定义的取消原因:
- 触发 ES2+.HandleNotification 通知失败状态
- 终止流程
- 按需执行 Event Deletion
6.3 输入输出
- 输入:
transactionId(M),cancelSessionResponse(M) - 输出:无
6.4 典型错误码
- TransactionId - Unknown
- eUICC - Verification Failed
- SM-DP+ - Invalid Association
7. ConfirmDeviceChange(5.6.6)
7.1 用途
- 接收用户对 Device Change 的确认结果并推进后续准备。
7.2 关键规则
-
transactionId 必须有效。
-
校验
euiccSignature3。 -
若要求确认码:
- 缺失:Mandatory Element Missing
- 哈希计算:
SHA256(SHA256(ConfirmationCode) | TransactionId) - 不匹配/超限:Refused / Maximum number of attempts exceeded
-
成功后执行设备变更数据准备、签名与通知(按配置)。
7.3 输入输出
- 输入:
transactionId(M),prepareDeviceChangeResponse(M) - 输出:
transactionId(M),smdpSigned5(C),smdpSignature5(C)
7.4 典型错误码
- TransactionId - Unknown
- eUICC - Verification Failed
- Confirmation Code - Mandatory Element Missing / Refused / Invalid Match / Maximum number of attempts exceeded
8. CheckProgress(5.6.7)
8.1 用途
- 查询 Device Change 的准备进度。
8.2 关键规则
dcSessionId必须有效并关联进行中的设备变更会话。- 若尚未就绪,返回
retryDelay(分钟)。
8.3 输入输出
- 输入:
dcSessionId(M) - 输出:
retryDelay(O)
8.4 典型错误码
- Device Change Session ID - Unknown