在Apple's documentation for the keys available for a Wallet pass中,可以选择NFC相关数据的字典。我知道使用此密钥需要Apple的特别许可。无论如何......
message
是直截了当的 - 这是通过 传递到 NFC终端的数据(通常是客户的唯一标识符)。
encryptionPublicKey
让我感到困惑。 Apple声明它是增值服务协议使用的公共加密密钥。 使用包含组P256的ECDH公钥的Base64编码的X.509 SubjectPublicKeyInfo结构。
任何人都可以解释这第二句意味着什么和/或开发人员必须做些什么来产生这个?从什么甚至可以生成公钥/私钥?
答案 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=