Apple Wallet NFC 加密PublicKey
Posted
技术标签:
【中文标题】Apple Wallet NFC 加密PublicKey【英文标题】:Apple Wallet NFC encryptionPublicKey 【发布时间】:2018-01-25 08:41:04 【问题描述】:在 Apple's documentation for the keys available for a Wallet pass 中,有一个用于 NFC 相关数据的字典选项。我了解使用此密钥需要获得 Apple 的特别许可。无论如何...
message
直截了当——它是传递到 NFC 终端(通常是客户的唯一标识符)的数据。
encryptionPublicKey
,然而,让我感到困惑。 Apple 声明它是增值服务协议使用的公共加密密钥。 使用 Base64 编码的 X.509 SubjectPublicKeyInfo 结构,其中包含组 P256 的 ECDH 公钥。
谁能解释第二句话的含义和/或开发人员必须做什么才能生成它?甚至可以从什么生成公钥/私钥?
【问题讨论】:
【参考方案1】:您需要以下内容来生成公钥和私钥。商户硬件在读取 pass 和解码 payload 时使用私钥。
压缩后的公钥是进入您的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=
【讨论】:
你将如何解码终端返回的 VAS 数据?除了我们的公钥/私钥之外,我们似乎还需要另一个共享密钥来解码数据。 我相信数据是从通行证发送到终端的,是吗? 公钥不发送到终端,钱包在算法中使用它来加密有效载荷。加密/解密算法受 Apple Pay NDA 约束。您需要直接与您当地的 Apple Pay 联系人联系才能获得它。 如果您有兴趣,我们提供不暴露算法的解密 API。 Apple 停止更新钱包文档。密钥在 ios11 中成为强制性的。以上是关于Apple Wallet NFC 加密PublicKey的主要内容,如果未能解决你的问题,请参考以下文章