fix(bunker): validate bunker URI - remote must differ from user pubkey

- Prevents invalid state where Amber remote equals user pubkey
- Show actionable error to generate fresh connect link in Amber
This commit is contained in:
Gigi
2025-10-17 00:42:14 +02:00
parent 11753c4515
commit 680169e312
2 changed files with 11 additions and 1 deletions

View File

@@ -311,7 +311,10 @@ function App() {
// Debug: log publish/subscription calls made by signer (decrypt/sign requests)
const originalPublish = (recreatedSigner as any).publishMethod
;(recreatedSigner as any).publishMethod = (relays: string[], event: any) => {
try { console.log('[bunker] publish via signer:', { relays, kind: event?.kind, tags: event?.tags?.length }) } catch {}
try {
const pTag = Array.isArray(event?.tags) ? event.tags.find((t: any) => t?.[0] === 'p')?.[1] : undefined
console.log('[bunker] publish via signer:', { relays, kind: event?.kind, tags: event?.tags, pTag, remote: nostrConnectAccount.signer.remote, userPubkey: nostrConnectAccount.pubkey })
} catch {}
return originalPublish(relays, event)
}
const originalSubscribe = (recreatedSigner as any).subscriptionMethod

View File

@@ -48,6 +48,13 @@ const LoginOptions: React.FC = () => {
// Get pubkey from signer
const pubkey = await signer.getPublicKey()
// Validate: remote (Amber) pubkey must not equal user pubkey
if ((signer as any).remote === pubkey) {
console.error('[bunker] Invalid bunker URI: remote pubkey equals user pubkey')
setError('Invalid bunker URI (remote equals your pubkey). Generate a fresh Connect link in Amber and try again.')
return
}
// Create account from signer
const account = new Accounts.NostrConnectAccount(pubkey, signer)