SGP.22 v3.1 ES9+ 接口规范

2 阅读4分钟

范围: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。
  • 生成唯一 transactionIdserverChallenge
  • 生成 serverSigned1serverSignature1

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