Asymmetric cipher decryption using encrypted symmetric key. This is an opposite of OpenSSL.EVP.Open.

- seal :: Cipher -> [SomePublicKey] -> String -> IO (String, [String], String)
- sealBS :: Cipher -> [SomePublicKey] -> ByteString -> IO (ByteString, [String], String)
- sealLBS :: Cipher -> [SomePublicKey] -> ByteString -> IO (ByteString, [String], String)

# Documentation

:: Cipher | symmetric cipher algorithm to use |

-> [SomePublicKey] | A list of public keys to encrypt a symmetric key. At least one public key must be supplied. If two or more keys are given, the symmetric key are encrypted by each public keys so that any of the corresponding private keys can decrypt the message. |

-> String | input string to encrypt |

-> IO (String, [String], String) | (encrypted string, list of encrypted asymmetric keys, IV) |

lazilly encrypts a stream of data. The input string
doesn't necessarily have to be finite.
`seal`

:: Cipher | symmetric cipher algorithm to use |

-> [SomePublicKey] | list of public keys to encrypt a symmetric key |

-> ByteString | input string to encrypt |

-> IO (ByteString, [String], String) | (encrypted string, list of encrypted asymmetric keys, IV) |

strictly encrypts a chunk of data.
`sealBS`

:: Cipher | symmetric cipher algorithm to use |

-> [SomePublicKey] | list of public keys to encrypt a symmetric key |

-> ByteString | input string to encrypt |

-> IO (ByteString, [String], String) | (encrypted string, list of encrypted asymmetric keys, IV) |

lazilly encrypts a stream of data. The input string
doesn't necessarily have to be finite.
`sealLBS`