Apple Wallet NFC 加密公钥

Apple Wallet NFC encryptionPublicKey

Apple's documentation for the keys available for a Wallet pass 中,有一个用于 NFC 相关数据的字典选项。我了解使用此密钥需要 Apple 的特别许可。不管...

message 是直截了当的——它是通过 一个 NFC 终端的数据(通常是客户)。

encryptionPublicKey,然而,让我感到困惑。 Apple 声明它是 public 增值服务协议使用的加密密钥。 使用 Base64 编码的 X.509 SubjectPublicKeyInfo 结构包含组 P256 的 ECDH public 密钥。

任何人都可以解释第二句话的意思and/or开发人员必须做什么才能生成这个?从什么可以生成 public/private 密钥?

您需要以下内容来生成 public 和私钥。商户硬件在读取通行证和解码有效负载时使用私钥。

压缩的 public 密钥是进入您的 pass.json 的内容。

openssl ecparam -name prime256v1 -genkey -noout -out nfcKey.pem
openssl ec -in nfcKey.pem -pubout -out nfcPubkey.pem -conv_form compressed
cat nfcPubkey.pem

输出:

-----BEGIN PUBLIC KEY-----
MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgAC/Bu9nyAtG1DQe7t7jszLb+dZ1GbX
oR8G0rIXoak67NM=
-----END PUBLIC KEY---

encryptionPublicKey 字段需要 Base64 密钥(不带换行符)。

例如 MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgAC/Bu9nyAtG1DQe7t7jszLb+dZ1GbXoR8G0rIXoak67NM=