首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jose Encrypter返回零

Jose Encrypter返回零
EN

Stack Overflow用户
提问于 2020-01-24 23:01:17
回答 1查看 154关注 0票数 1

我正在使用JOSESwift。当我使用Encrypter方法时,它返回nil,没有任何错误的细节。下面是我的代码示例。谁能帮帮忙,为什么Encrypter方法返回nil

意图:我正在尝试为我的JWE对象设置包装密钥,从JOSESwift我可以理解Encrypter接受该cek密钥。

代码语言:javascript
复制
// Jose implementation.
        let joseHeader = JWEHeader(algorithm: .direct,
                                   encryptionAlgorithm: .A128CBCHS256)
        let joseEncrypter = Encrypter(keyEncryptionAlgorithm: .RSAOAEP,
                                      encryptionKey: cekKeyData,
                                      contentEncyptionAlgorithm: .A128CBCHS256)!
        let josePayload = Payload(Data(base64Encoded: jsonString)!)

        let joseJWE = try? JWE(header: joseHeader, payload: josePayload, encrypter: joseEncrypter)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-25 01:47:22

我怀疑您传递了错误类型的密钥,或者错误地选择了.RSAOAEP作为您的算法并表示为.direct

代码语言:javascript
复制
///   - key: The key used to perform the encryption. If the `keyEncryptionAlgorithm` is `.direct`, the
///          `encryptionKey` is the shared symmetric content encryption key. Otherwise the `encryptionKey` is the
///           public key of the receiver. See [RFC-7516](https://tools.ietf.org/html/rfc7516#section-5.1) for
///           details.

在给定传入参数的情况下,仅在以下情况下从that code返回nil

代码语言:javascript
复制
switch (keyEncryptionAlgorithm, contentEncyptionAlgorithm) {
case (.RSA1_5, .A256CBCHS512), (.RSAOAEP, .A256CBCHS512), (.RSAOAEP256, .A256CBCHS512), (.RSA1_5, .A128CBCHS256), (.RSAOAEP, .A128CBCHS256), (.RSAOAEP256, .A128CBCHS256):
    guard type(of: key) is RSAEncrypter.KeyType.Type else {
        return nil
    }
    // ...

这表明cekKeyData不是RSAEncrypter.KeyType类型。我怀疑它是一个生成的AES密钥。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59898973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档