I had this variant in my fist commit. The problem I encountered: `key.decrypt()` currently decrypts all secret key packets. That's not optimal from a performance perspective. Only the required key packet should be decrypted. That's why I switched to packet level for the method interface. I had the following ideas for alternatives:
- the `decryptMessage` method provides a callback to retrieve the password once the needed secret key packet is determined
- having something like a `unlock` method. You can supply the password to the key without decrypting it. Only inside `decryptMessage` then we could start decryption process. Problem is here that there is the rare case that key and subkey packets don't use the same password. That seems to be possible according to the spec. Not sure if we want to be prepared for this case.