Jose Encrypter 返回 nil
Jose Encrypter returning nil
我正在使用 JOSESwift。当我使用 Encrypter 方法时,它 returns nil
没有任何错误的详细信息。下面是我的代码示例。任何人都可以帮助为什么 Encrypter 方法 return nil
?
意图:我正在尝试为我的 JWE 对象设置包装密钥,从 JOSESwift 我可以了解到 Encrypter 接受了那个 cek 密钥。
// 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)
我怀疑您传递了错误的密钥类型,或者错误地选择了 .RSAOAEP
作为您的算法并且意味着 .direct
。
/// - 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.
给定传递的参数,nil
仅在以下情况下从 that code 返回:
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 密钥。
我正在使用 JOSESwift。当我使用 Encrypter 方法时,它 returns nil
没有任何错误的详细信息。下面是我的代码示例。任何人都可以帮助为什么 Encrypter 方法 return nil
?
意图:我正在尝试为我的 JWE 对象设置包装密钥,从 JOSESwift 我可以了解到 Encrypter 接受了那个 cek 密钥。
// 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)
我怀疑您传递了错误的密钥类型,或者错误地选择了 .RSAOAEP
作为您的算法并且意味着 .direct
。
/// - 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.
给定传递的参数,nil
仅在以下情况下从 that code 返回:
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 密钥。