Я подозреваю, что вы передаете неправильный тип ключа или неправильно выбираете .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
возвращается только в следующем случае из этот код с учетом переданных параметров:
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.