【问题标题】:Apple Wallet NFC encryptionPublicKeyApple Wallet NFC 加密PublicKey
【发布时间】: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 公钥。

谁能解释第二句话的含义和/或开发人员必须做什么才能生成它?甚至可以从什么生成公钥/私钥?

【问题讨论】:

    标签: ios nfc passbook applepay passkit


    【解决方案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 中成为强制性的。
    猜你喜欢
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多