Do not try to encrypt unless the public key of the recipient is present

* Let encrypt throw exceptions and handle them in its caller

* Add a docstring about the exceptions that can be thrown
Merge pull request #779 from yagoulas/encrypt_fixup

Do not try to encrypt unless the public key of the recipient is present