feat: mobile Nostr identity — Amber NIP-55 + nsec fallback (Fixes #29)
- Add NostrIdentityContext with SecureStore-backed nsec storage and pure-JS bech32/secp256k1 for nsec→npub derivation; private key never enters React state or logs - Android: NIP-55 Amber deep-link integration (get_public_key + sign_event) with install-prompt fallback to Play Store when Amber is absent; Android queries manifest entry for com.greenart7c3.nostrsigner - iOS/both: manual nsec entry stored exclusively in expo-secure-store - Settings tab (gear icon) added to both NativeTabLayout and ClassicTabLayout showing: connected npub (truncated), signing method badge, Disconnect button (with confirmation + SecureStore wipe) - Root layout wrapped with NostrIdentityProvider - app.json: add expo-secure-store plugin + Android intentFilters for mobile://amber-callback deep-link return path Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -20,7 +20,18 @@
|
||||
"adaptiveIcon": {
|
||||
"foregroundImage": "./assets/images/icon.png",
|
||||
"backgroundColor": "#0A0A12"
|
||||
}
|
||||
},
|
||||
"intentFilters": [
|
||||
{
|
||||
"action": "VIEW",
|
||||
"autoVerify": true,
|
||||
"data": [{ "scheme": "mobile", "host": "amber-callback" }],
|
||||
"category": ["BROWSABLE", "DEFAULT"]
|
||||
}
|
||||
],
|
||||
"queries": [
|
||||
{ "package": "com.greenart7c3.nostrsigner" }
|
||||
]
|
||||
},
|
||||
"web": {
|
||||
"favicon": "./assets/images/icon.png",
|
||||
@@ -34,6 +45,7 @@
|
||||
}
|
||||
],
|
||||
"expo-font",
|
||||
"expo-secure-store",
|
||||
"expo-web-browser"
|
||||
],
|
||||
"extra": {
|
||||
|
||||
Reference in New Issue
Block a user