Apple Wallet NFC encryptionPublicKey

时间:2018-01-25 08:41:05

标签: ios nfc passbook applepay passkit

Apple's documentation for the keys available for a Wallet pass中,可以选择NFC相关数据的字典。我知道使用此密钥需要Apple的特别许可。无论如何......

message是直截了当的 - 这是通过 传递到 NFC终端的数据(通常是客户的唯一标识符)。

然而,

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

任何人都可以解释这第二句意味着什么和/或开发人员必须做些什么来产生这个?从什么甚至可以生成公钥/私钥?

1 个答案:

答案 0 :(得分:5)

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

压缩的公钥是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密钥(不带换行符)。

E.g。         MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgAC/Bu9nyAtG1DQe7t7jszLb+dZ1GbXoR8G0rIXoak67NM=