6

Apple 发布了一种在 iOS 14 测试版上证明生成的密钥对的方法,名为 Device Check App Attestation Service ( DCAppAttestService )。

我已经成功生成了一个密钥对,就像苹果记录的那样:

DCAppAttestService.shared.generateKey { keyId, error in
   guard error == nil else { /* Handle the error. */ }

   // Cache keyId for subsequent operations.
}

在这个调用之后,我得到了字符串形式的 keyId。但是现在我不知道我是否遗漏了一些明显的东西,或者只是没有记录:我绝对不知道如何使用这个密钥标识符来检索对关联私钥的引用。

我知道它本身存储在 Secure Enclave 中,我无法直接获取它。但是我应该能够获得它的引用,一个 SecKey 对象,我可以使用它来签署或加密数据,例如

var error: Unmanaged<CFError>?
guard let signature = SecKeyCreateSignature(privateKey, self.algorithm, data as CFData, &error) as Data? else {
   /* Something went wrong */
   return
}

DCAppAttestationService 本身不提供任何使用 keyId 与密钥交互的方法(除了 attestKey 和 generateAssertion 方法)。提到的 attestKey 方法目前也只是返回一个 serverUnavailableError,正如 Apple 自己在发行说明中所说的那样。

有人有这方面的经验吗?如何获得私钥参考以有效使用它?

4

0 回答 0