For unlocked secrets, checks that the secret derives the pubkey
the pubkey is accessible even if the secret is locked
getting the secret can throw WalletLockedException if the wallet is locked
Your decrypt function should throw WalletLockedException if the wallet is locked
You need to serialize and deserialize even if locked