Repository navigation
sidestr browser signer (window.nostr.sidestr.signTransaction), security-key fixes, 0.0.9 - #27
Merged
Merged
Conversation
…le ceremony options Store the transports a credential reports and pass them in allowCredentials, so unlock goes straight to the security key instead of the generic chooser. Name the failed step and what to do (PIN, touch, keep the window in front); own messages for InvalidStateError, NotSupportedError and SecurityError. Three-minute timeouts; EdDSA and RS256 offered after ES256. UV stays 'required' on both ceremonies (hmac-secret differs with and without UV). creationOptions/assertionOptions/cleanTransports exported and tested. Co-Authored-By: jjohare <github@thedreamlab.uk>
…look and feel - a ?flow= window waits for focus before its ceremony: WebAuthn refused the unfocused new window with NotAllowedError, the main security-key snag - inline passkey status (step 1 of 2 / 2 of 2, errors with Try again) instead of alert(); transports stored in the passkey config - a window opened only to unlock closes once unlocked - [hidden] restored over .btn: 'Unlock with passkey' showed with no passkey - Set up button no longer stuck on 'Waiting…' after a failure - approve prompt says approving also trusts the site; export shows nsec - plainer UK copy; text contrast and a dark-mode primary fill that pass; focus rings on every control; popup debug logging removed Co-Authored-By: jjohare <github@thedreamlab.uk>
Implements sidestr/spec proposals/browser-signer.md: any page on any
sidestr chain can ask Podkey to sign a spend without ever holding the key.
- window.nostr.sidestr { version: 1, name, signTransaction({ chain, tx }) };
refusals carry code: rejected, unsupported, not-yours, invalid, unavailable
- the spend window (popup/spend.*) reads the chain from its id alone
(announcement -> the signer's mirror -> every block validated), refuses
mainnet parents and rules it cannot run, pins each chain's signer on first
spend and refuses a different one, and signs only mature unspent coins
paying 5120<own key>
- it computes every sighash itself (BIP 341 / unified by parent family) and
shows recipients (npub, profile name when found), what comes back, the fee
and the total; assets are read under SPEC 12 (the rule where a chain names
it, the holders' view where not) and a spend that destroys or burns needs
an explicit tick
- every spend asks, whatever trust the origin has; the key stays in the
background, which signs the window's sighashes once per request
- the engine (bitcoin-desktop/schema v0.0.27, sidestr/spec 373d3eb,
sidestr/explorer db5a04e) is vendored by scripts/vendor-sidestr.js with a
SHA-256 per file; the explorer points at the vendored copies and the EVM
rule is stubbed, because MV3 forbids remote code
- provider: request timers are cleared on answer; spends wait 5 minutes
- 0.0.9
Co-Authored-By: jjohare <github@thedreamlab.uk>
…times the site out; docs for sidestr spends - sendMessageToExtension defaults to 180 s: a request that finds Podkey locked waits for the unlock, and a security key's PIN and touch took longer than the old 30 s (the site saw a timeout although the unlock succeeded) - the approval window is tall enough for its trust note - README: window.nostr.sidestr.signTransaction; architecture; CHANGELOG 0.0.9 Co-Authored-By: jjohare <github@thedreamlab.uk>
…loads The spend window imports the vendored sidestr engine, so a package without vendor/ installs but fails on the first spend. The new step reads the manifest, the three pages and vendor/sidestr/PINS.json and fails the build on any file missing from the zip. Co-Authored-By: jjohare <github@thedreamlab.uk>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Podkey as the reference signer for sidestr's browser-signer proposal (sidestr/spec#16), plus fixes for security-key unlock and a look-and-feel pass.
sidestr spends
window.nostr.sidestr { version: 1, name, signTransaction({ chain, tx }) }. Refusals carrycode: rejected, unsupported, not-yours, invalid or unavailable.popup/spend.*,src/sidestr/):scripts/vendor-sidestr.js, withvendor/sidestr/PINS.jsonholding a SHA-256 per file) because MV3 forbids remote code. There are two recorded patches: the explorer's engine paths now point at the local copies, and the EVM rule is a stub. Test networks only for now.sidestr:dreamlaband signed a spend, which was mined at block 431 (7f3a6a63…).Security keys
NotAllowedError, which is the "snag".Look and feel
npm test218/218,npm run lintclean,npm run buildok. Not yet tried with a physical security key or loaded as a packed extension in Chrome; the spend window was exercised as a page, as above.🤖 Generated by Claude Code