@override String getPublicKey() { if (cachedPublicKey != null) return cachedPublicKey!; throw Exception('Use getPublicKeyAsync() first to cache the user pubkey'); }