iOS:SecRSAPublicKeyCopyPublicSerialization?

标签 ios objective-c security

我正在尝试固定公钥。我有一个 SecKeyRef,我想用 SecRSAPublicKeyCopyPublicSerialization 序列化它。 SecRSAPublicKeyCopyPublicSerialization 将在 PKCS#1 中序列化(即 SubjectPublicKeyInfo),该函数记录在 http://www.opensource.apple.com/source/Security/Security-55163.44/sec/Security/SecRSAKey.c 中.

PKCS#1 是公钥的 ASN.1 编码(即 SubjectPublicKeyInfo)。该格式适合固定。对于那些不熟悉的人来说,固定是主机的预期证书或公钥的白名单。在识别主机时,它们通常可以互换,但在某些情况下它们不能互换。例如,Google 的公钥是静态的(固定的),但 Google 会轮换“外部”X509 证书。在这种情况下,您将锁定公钥,而不是证书。

SecRSAPublicKeyCopyPublicSerialization 的正确 header 和框架是什么?我包含了 Security.framework,但缺少 SecRSAPublicKeyCopyPublicSerialization 的声明,并且在链接期间缺少函数。我确实尝试包含 SecRSAKey.h

对不起那些糟糕的标签。

杰夫

最佳答案

static OSStatus SecRSAPublicKeyCopyPublicSerialization(SecKeyRef key, CFDataRef* serialized)

是安全框架内部使用的静态函数,你不能从框架外调用这个函数。

看看SecItemExport .此函数可以将 SecKeyRef 转换为不同的外部表示形式。

更新:我错过了 在问题中标记。 SecItemExport 仅适用于 OSX 10.7 及更高版本,不适用于 iOS。

在 iOS 上,(我认为)您必须将 key 添加到 KeyChain (SecItemAdd),然后使用 SecItemCopyMatching()(使用 kSecReturnData 设置为 YES) 以检索原始数据。

SecKeyWrapper.m 中的getPublicKeyRef 方法 “CryptoExercise”示例项目可能会有所帮助。

关于iOS:SecRSAPublicKeyCopyPublicSerialization?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14747678/

相关文章:

ios - [iOS] : Run project on sitmulator failed

ios - UIImagePickerControllerDelegate 从 iOS 11 中选取的图像获取日期

php - CSRF token 与多个选项卡冲突

security - Jetty降级攻击防范及其他安全风险

objective-c - 更改控件使用的默认 systemFont

php - 服务器受到攻击网站logs\x80w\x01\x03\x01和HNAP1如何阻止机器人?

ios - 返回数组并检查是否为 nil 的正确方法

ios - 当通话是视频时,在 CallKit 来电屏幕中显示视频按钮

objective-c - objective-c 中 self.myivar 和 self->myivar 的区别

objective-c - 第二次点击后搜索方法不起作用