配置文件包安装到 eUICC 上的 ISD-P 期间出现 ConfigureISDPRequest 错误

问题描述 投票:0回答:0

我正在组装以 InitialiseSecureChannelRequest 开头的 SGP.22 GetBoundProfilePackage 响应,为此我获得了 90 00 成功代码。随后的 ConfigureISDPRequest 返回错误原因 8,这是一个 scp03t/BSP 安全错误。

scp03t(现在在 SGP.22 的 v3 中重新标记为 BSP)过程有几个步骤,ConfigureISDPRequest 需要加密和 MACing。错误代码不提供识别哪个步骤包含错误的方法。

第一步是使用之前生成的(用于 InitialiseSecureChannelRequest)smdpOtsk 私钥和 euiccOtpk 公钥生成 ShS 共享密钥。此 ECDH 程序在 NIST SP 800-56Ar3 第 5.7.1.2 节中定义:

  1. 计算点 P = hdAQB.
  2. 如果 P = Ø,销毁尝试计算 P 时使用的所有中间值,然后 输出一个错误指示器,并退出这个过程而不做进一步处理。
  3. 否则,设置 z = xP,其中 xP 是 P 的 x 坐标,并将 z 转换为 Z,使用字段- 附录 C.2 中定义的元素到字节字符串转换例程

我的 Golang 代码,参考了 this post 虽然我注意到我不认为它需要散列之后 - 这似乎是一个 TLS 东西:

calcedX, _ := euiccOtpk.Curve.ScalarMult(euiccOtpk.X, euiccOtpk.Y, smdpOtsk.D.Bytes())

这里我不清楚的是 NIST SP 800-56Ar3 步骤中的第 3 部分 - 使用附录 C.2 中定义的字段元素到字节字符串转换例程将 z 转换为 Z。

我已经将以下代码用于附录 C.2 中指定的字段元素到字节字符串转换,我的问题是这是否正确?

    fixedBytes := make([]byte, 32)
    calcedX.FillBytes(fixedBytes)
    return fixedBytes
javacard globalplatform
© www.soinside.com 2019 - 2024. All rights reserved.