问题标签 [seckeyref]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - 从 AnyObject 转换时出错?到 SecKeyRef?在斯威夫特
作为基于 Swift 的 PKI 实现的一部分,我将 SecKeyWrapper.m 移植到 Swift
除了 Swift 实现中的一部分外,Keychain 访问方法(Objective-C 和 Swift)都运行良好。
我从对等方收到 base64 格式的公钥。它被转换为 NSData,然后使用以下方法保存在 Keychain 中:
成功将对等公钥保存在钥匙串中后,我需要将其作为 SecKeyRef 获取。
问题是 SecItemCopyMatching 返回一个 AnyObject 类型的对象?不能转换为 SecKeyRef (或 SecKey 那是别名)
我发现的解决方法是将 peerKeyRef 转换为 NSObject?然后使用 Objective-C 桥接到 SecKey,如下所示:
执行此操作的 Objetive-C 代码如下:
使用此解决方法转换为 SecKey 可以正常工作(没有警告或错误)并具有预期的结果。
你认为 Swift 代码中缺少什么来转换 AnyObject?到 SecKeyRef?
我正在使用 Xcode 7.3.1 和 Swift 2.2
rgds....
objective-c - iOS10 中的 CFRelease 崩溃
下面是我的代码,它在 iOS 9 之前都可以正常工作。
这种方法在 iOS 9.x 之前可以正常工作,但是今天我将 XCode 更新到 8 并在 iOS 10 设备上运行。应用程序在
CFRelease(publicKey)处崩溃。
在下面崩溃之前是来自控制台的日志。
无法加载任何 Objective-C 类信息。这将显着降低可用类型信息的质量
无法准确解决问题。
当我启用 Zombie 并重现崩溃时。以下是来自控制台的日志。
*** -[Not A Type release]:消息发送到释放的实例 0x170225880
提前致谢。
我得到了问题。有一个内部方法 encodedData = [self encryptData:dataToEncrypt withKeyRef:publicKey];
SecKeyRef 对象被释放的地方。
但我想知道这在 iOS9 之前是如何工作的???????
swift - 从 NSData 到 Swift 2 中的 SecKeyRef
我有一个使用 RSACryptor.swift 生成的公钥/私钥对我能够将我的公钥转换为 base64 字符串以存储在我的服务器上。
我想在其他 iOS 设备上检索公钥并使用它来加密消息。
我能够将 base64 密钥转换为 NSData
但是我找不到如何将其转换为a SecKeyRef
,因此我可以轻松使用它。
我发现的答案在 Objective-C 中并且已经过时了。
谢谢你的帮助 !
ios - Swift 3 将 SecKey 导出为字符串
我正在使用 swift 3 开发一个 iOS 应用程序。
我需要将一个SecKey
(这是用户 RSA 公钥引用)导出到一个字符串(例如 base64),以便通过生成的 QRCode 共享它。
它还必须以另一种方式工作,因为扫描QRCode
, 的其他用户将能够SecKey
从从 QRCode 中提取的字符串重建引用。
我找到了一些教程,但我不明白我需要从SecKey
参考中提取什么,而且我不知道如何将它转换为String
.
ios - OSX 生成的密钥无法加密(SecKeyCreateRandomKey & SecKeyCreateEncryptedData)
我基本上是按照本指南生成私钥,复制公钥,然后加密消息。但是,它给了我错误(OSStatus 错误 -67712 - CSSM 异常:-2147415791 CSSMERR_CSP_INVALID_KEY_REFERENCE)。
最初,我以为我错误地设置了属性。但是,如果我通过 SecKeyGeneratePair() 函数创建公钥(具有相同的属性),则一切正常。很奇怪吗?
ios - RSA 公钥生成 - iOS 中字符中的密钥大小不同
根据应用程序的要求,我需要创建大小为 512 的 RSA 公钥。我正在使用以下代码:
我们在 Android 和 .net 上拥有相同的功能。当我们在所有其他平台上计算字符串的长度时,它是 181 个带空格的字符和 174 个不带空格的字符。
但是,在 iOS 中,我们只得到 153 个带空格的字符和 146 个不带空格的字符。
我们的代码有问题吗???还是 iOS 有一些不同的 RSA 长度?
请帮忙。提前致谢。
swift - SecKey (PCKS1) 到 Base64 (PCKS8) 从 p12
我查看了 StackOverflow 上的其他答案,但没有找到我想要的(IOS11)。我有一个 SecKey (privateKey),当我打印时:
SecKeyRef算法id:1,密钥类型:RSAPrivateKey,版本:4,块大小:2048位,地址:0x1d0223f60
我试图将其转换为 Data 并从那里转换为 Base64
苹果文档说 SecKeyCopyExternalRepresentation 返回 PCKS1 数据(https://developer.apple.com/documentation/security/1643698-seckeycopyexternalrepresentation),但我需要 PCKS8。
结果是来自 PCKS1 的 base64,但我必须将其发送到 JAVA 服务器进行处理,并且预期格式是来自 PCKS8 的 base64。
有没有办法从 PCKS1 转换为 PCKS8,然后再转换为 base64?
我发现这篇文章:https ://blog.wingsofhermes.org/?p=42这或多或少是我想要的,但它在objective-c中,我无法将它转换为swift
c++ - SecKeyCreateFromData 在 10.9 上以 -2147415792 失败
我有一个代码,它在安全框架的帮助下在 MacOS 上构造了一个 RSA 公钥。这在 10.11/10.12/10.13 上运行良好,但今天我发现这在 10.9 上失败了。下面是包装密钥的类的构造函数:
我删除了一些检查宏等,但这应该说明调用顺序。在 10.9 上,我得到一个空指针,SecKeyCreateFromData
错误代码为 -2147415792。我尝试添加kSecAttrKeySizeInBits
但没有帮助。同时SecKeyGeneratePair
,同样的pParameters
工作正常,所以我认为问题出在实际数据上。是否仅从 10.10 或类似版本支持 ASN.1 编码?
更新
我在测试中搞砸了,这实际上在 10.11 上也不起作用,这似乎与 add 相关SecKeyCreateWithData
。
更新 2
查看cssmerr.h这个错误代码似乎是CSSMERR_CSP_INVALID_KEY
。
objective-c - 在没有外部库的情况下验证 iOS 和 OSx 上的签名(-9809 OSStatus 错误)
我使用 SecKeyCreateWithData 创建公钥。剥离标题后从 Pem 创建密钥。
我尝试使用验证签名
- SecKeyRawVerify 返回 -9809 错误 (iOS)
- SecKeyVerifySignature 返回 -67808 “RSA 签名验证失败,不匹配”(iOS)
- SecTransformExecute 返回 false。(操作系统)
我们使用 SHA256 和 Unicode 编码对消息进行签名(C# RSACryptoProvider)。
创建公钥的代码:
验证码 iOS:
验证码 OSx:
我被困住了,任何帮助将不胜感激。
swift - 将私钥从安全飞地链接到配置文件
我需要将存储在安全飞地中的私钥链接到配置文件中的证书。有没有人有这方面的经验,可以帮助我如何做到这一点?
到目前为止,我的知识是这很难实现,因为安全飞地中的私钥只能从创建密钥对的应用程序中访问。但我绝对需要一个解决方案。否则我无法连接到 WPA2 Enterprise 网络并使用我们的 vpn。
对我来说最好的解决方案是,如果有一个用 swift 编写的解决方案,因为我用 swift 创建了我的密钥对,所以我的项目中没有不同的语言。但是如果有人有另一种语言的解决方案,我可以更改我的项目语言。