FlexWallet
FlexProject's FlexWallet takes care of the Web3 instance, and provides sessionKeys that are signed by the main address (the coinbase). These session keys can be used to sign other messages, or even decrypt messages. FlexWallet will expose functions for signing + verification and encrypting + decrypting.