ios SecKeyCopyKeyExchangeResult sharedInfo参数

问题描述

我正在尝试使用SecKeyCopyKeyExchangeResult函数从我的本地私钥和收到的服务器公钥中获取共享密钥。 共享密钥已成功生成,我能够使用AES加密解密传入的消息 不久前,服务器开发人员决定将KDF添加到密钥生成流程中。 我开始研究如何在iOS上做到这一点,并发现有一个特殊的参数static let sharedInfo: SecKeyKeyExchangeParameter 说文档很差,什么也没说... 只有我发现的是标题中的描述

@constant kSecKeyKeyExchangeParameterSharedInfo包含CFDataRef 与其他共享信息 用于KDF(密钥派生功能)。

如果有人为此工作,请帮忙。服务器使用此参数在Scala上生成KDF

private def concatWithKdf(secretKey: SecretKey) = {
    val bytes = new Array[Byte](SECRET_KEY_LENGTH)
    val digest = new SHA256Digest();
    val kdf1BytesGenerator = new KDF1BytesGenerator(digest)
    kdf1BytesGenerator.init(new KDFParameters(secretKey.getEncoded,null))
    kdf1BytesGenerator.generateBytes(bytes,bytes.length)
    new SecretKeySpec(bytes,secretKey.getAlgorithm)
}

iOS端的代码

var keyExchangeError: Unmanaged<CFError>?
let dict = [SecKeyKeyExchangeParameter.requestedSize.rawValue : 32,SecKeyKeyExchangeParameter.sharedInfo.rawValue : ???]
    let secret = SecKeyCopyKeyExchangeResult(privateOwn,SecKeyAlgorithm.ecdhKeyExchangeStandard,publicTheir,dict as CFDictionary,&keyExchangeError)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)