当前位置: 首页 > 知识库问答 >
问题:

SecKeyCreateWithData返回“Nil”,但出现错误

傅啸
2023-03-14

我们正在尝试从一个“SecKey”创建一个“SecKey”。der文件。但是' SecKeyCreateWithData '总是抛出' Nil '错误。


遵循的步骤:

首先,我们创建了一个 ECDSA 私有

用于生成私有命令

OpenSSL EC param-genkey-name prime 256 v1-no out EC-key-pair . PEM

openssl ec-in ec密钥对。pem-pubout-out ec-key-pair.pub

用于生成的命令。删除e::

OpenSSL pkey-out form der-in EC-key-pair . PEM-out EC-key-pair . der

里面的内容。pem文件:

-----BEGIN EC PRIVATE KEY----- MHcCAQEEIKJTc3zI8D07Myh7ZIR wGyQgsjEeKdH0 hSiErK5AjzoAoGCCqGSM49 AwEHoUQDQgAEvbOBrM/D2fX05zKQYuJiTRP6YiUBabImrHb9s OHimxUxX E9jVe oQ6nxSOkfgm0H1OjLfp2xGLqkDTuF38UGQ== -----END EC Private KEY-----

收到错误:

非托管 - _value:错误域=NSOSStatusErrorDomain 代码=-50 “从数据创建 EC 私钥失败” UserInfo={NSDescription=EC 从数据创建私钥失败}

最低部署目标美国ed::

iOS14.0

使用的代码::

    if let certificateData = NSData(contentsOf:Bundle.main.url(forResource: "ec-key-pair", withExtension: "der")! ) {
            var error: Unmanaged<CFError>? = nil
            let privateSecKey = SecKeyCreateWithData(certificateData , [
                   kSecAttrKeyType: kSecAttrKeyTypeEC,
                   kSecAttrKeyClass: kSecAttrKeyClassPrivate] as NSDictionary, &error)
}

共有1个答案

况谦
2023-03-14

看起来您没有以正确的格式传递密钥。您正在传递ASN.1 DER,此处解释了< code > SecKeyCreateWithData 期望的格式:https://developer . apple . com/documentation/security/1643698-seckeycopyexternalresentation

对于椭圆曲线私钥,输出被格式化为与秘密标量的big endian编码连接的公钥,或< code>04 || X || Y || K。

我不知道是否有办法直接从OpenSSL生成所需的格式。您可能需要进行一些解析!

 类似资料:
  • 问题内容: 我创建了一个自定义错误类型来包装错误,以便更轻松地在Golang中进行调试。当有打印错误时它可以工作,但是现在引起了恐慌。 演示版 当我调用一个函数时,它不会返回错误,我仍然应该能够包装该错误。 预期的行为是,如果错误为nil,则应该简单地忽略它,不幸的是,它会做相反的事情。 我希望它能打印出来。而是即使错误为nil也会打印。 问题答案: 正在将err变量与nil进行比较,但实际上它是

  • 问题内容: 我正在使用CIFilters将图像转换为灰度并应用一些图像处理效果。在UIImageView中显示输出有效;图像将显示,并且已按预期进行了修改。 但是,每次调用UIImageJPEGRepresentation似乎都不返回任何数据。它永远都行不通。使用原始彩色图像调用UIImageJPEGRepresentation效果很好。 这里发生了什么?为什么在显示图像时jpeg转换会失败?不会

  • 问题内容: 尽管是有效的类,但以下代码会打印。 文档说方法返回 由 aClassName 命名的类对象,或者如果当前没有加载该名称的类。如果 aClassName 为,则返回。 我也试图获得当前的viewcontroller已加载但仍然得到 可能是什么问题? 更新: 即使尝试这样做,我仍然可以 问题答案: 该函数 确实 适用于(纯和Objective-C派生的)swift类,但是仅当您使用全限定名

  • 我正在尝试使用NSKeyDarchiver在应用程序关闭和运行周期之间存储数据。我试图存储的根对象是一个NSMutableArray,但在这个对象中有基础对象和自定义对象的集合(所有这些都符合NSCoding)。 文件保存代码如下 该文件保存fine并且不会抛出异常。再次启动应用程序时,使用以下代码恢复该文件。 在这一点上,sessionData总是为零,而pData是几千字节长的,因此我知道问题

  • 我在Spring Boot服务中有一个rest控制器,如下所示: 我可以让服务生成八位元组流和application/Json,但我的困惑在于出现错误时字节数组的返回类型,在这种情况下,我希望生成Json而不是字节数组 请给我出主意如何解决这个问题

  • 问题内容: 我刚刚下载并解封了适用于Windows的android SDK。我目前正在使用W8 64x。 问题答案: 该错误消息指出你的Java版本有问题。你是否安装了JDK? 尝试添加以下内容(注意新行): /!\确保该-vm选项位于命令之前-vmargs。之后的所有内容都-vmargs直接传递给JVM。 …指向你的文件,指向要使用的JDK,并检查所需的Java版本是否至少与你的JDK一样新。这