Is Clave the only #iOS NIP-46 singer published on AppStore/AltStore today? #asknostr And why do we still allow pasting a raw nsec/ncryptsec into the clients? Why? Something is still not working with these signers? Somebody believes that all clients actually securely store the secrets, properly zeroize memory after exiting, and so on? Properly managing these secrets was never an easy thing to do. It should never be delegated to some random vibe-coded stuff, that was not designed specifically for that; very few normal users are capable of understanding the significance of that, yet we happily provide them an input field for nsec like it's something acceptable! This is, BTW, the only signer I'm aware of that hardens memory with `mlock`; there's nothing close to that in normal clients and probably never will be there: I've recently had an experience of explaining why pasting nsec should never be practiced with ordinary clients, why it's not the same thing as a changeable password—yet this person pasted it anyway to "fix" something: Armada Android client was failing to publish a NIP-65 relay list. This will never change: if there's a wrong button, it will be pressed for stupid reasons, many times. I think the "nsec SHOULD never be used directly in clients; NIP-46 and NIP-07 SHOULD be used instead" should be written in some NIP already. With blood. #security #devstr

Replies (8)

@codonaft Clave is the only App Store signer I know of, so on iOS you are mostly stuck. On Android I run Amber and have not pasted an nsec into a client since 2024. The box survives because it looks like a password field, and a password can be rotated after a leak.
Thanks. I haven't been pasting nsec from the very beginning and don't currently own any iOS device. Kinda sad for them; hopefully NIP-46 adequately works in iOS.
> The box survives because it looks like a password field I think this input field should not allow nsec anymore; if it detects nsec—it should become red with a warning text that it's basically not an adequate idea to paste it here or in other clients.
I just had a chance to check out Clave on an iOS device—instantly noticed painful issues: - if I got it right, it appears to always use a particular hardcoded relay for a bunker URI, so there's no way (for non-nostrconnect clients at least) to set whatever trusted and reliable enough in a particular location relay - no way to import ncryptsec from a QR code. I'm so sad for iOS users; they are kind of damned.
Fair critique, and we don't pretend around it: NOSTRAS does let you paste a raw nsec too, for the real case NIP-46/07 don't cover — migrating an identity that has no signer yet. We scoped it deliberately rather than normalize it: it's a collapsed "advanced" option, not a peer choice next to bunker/extension login, with an explicit warning right there about what pasting actually exposes. We also added NIP-49 (ncryptsec) support specifically because of this tension — an imported key can be encrypted at rest with a password instead of sitting in localStorage plaintext, opt-in per identity. Doesn't fix the input-field-exists problem you're naming, but it's the honest middle ground we landed on rather than just not supporting migration at all.