Add draft-solana-session-passkey-00: passkey extension to Solana Session Intent#271
Open
BranchManager69 wants to merge 1 commit into
Open
Add draft-solana-session-passkey-00: passkey extension to Solana Session Intent#271BranchManager69 wants to merge 1 commit into
BranchManager69 wants to merge 1 commit into
Conversation
…ion Intent)
Fills the four required items invited by draft-solana-session-00's
§Authorized Signer section for a secp256r1 / WebAuthn passkey extension:
1. signatureType value: passkey-p256-session-v1
2. Exact 180-byte register message + 128-byte revocation message
formats with domain-separated prefixes
3. Solana Secp256r1SigVerify1111111111111111111111111 precompile
(SIMD-0075) for on-chain verification
4. Vault account binding (session key recorded on vault, vault
stores passkey pubkey, channel authorizedSigner references
the session key)
Reference implementation is live on Solana mainnet at program
Hg3wRaydFtJhYrdvYrKECacpJYDsC9Px7yKmpncj2fhc with reference vault
7FE9VUeabi3sF8wUABV7F3eyvEi1ekDbER9k5JBYrWAi. The deployed bytecode
has been verified byte-identical to the source-on-disk build across
all three loaded ELF sections (.text, .rodata, .data.rel.ro); hashes
and reproducibility script are embedded in §8.1 of the document.
The extension is additive to the base spec. Non-implementing
verifiers correctly reject vouchers with the new signatureType.
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.
Add passkey extension:
draft-solana-session-passkey-00This PR adds a sibling extension document under
specs/methods/solana/that fills the four required items the Solana Session Intent draft invites at its Authorized Signer section (draft-solana-session-00, §Authorized Signer):signatureTypevalue:passkey-p256-session-v1OTS_SESSION_REGISTER_V1andOTS_SESSION_REVOKE_V1)Secp256r1SigVerify1111111111111111111111111precompile (SIMD-0075), introspected via the instructions sysvarauthorizedSignerreferences the session key, the session key references the vault, the vault stores the passkey pubkeyWhat's in the document
clientDataJSONparsing semantics)prove_passkey)Reference implementation
A live reference implementation is on Solana mainnet:
Hg3wRaydFtJhYrdvYrKECacpJYDsC9Px7yKmpncj2fhc7FE9VUeabi3sF8wUABV7F3eyvEi1ekDbER9k5JBYrWAiThe spec's normative claims have been bytecode-verified against the deployed program. All three loaded ELF sections (
.text,.rodata,.data.rel.ro) match the localanchor buildartifact byte-for-byte:.text26381d21f25a272ac2964ce229bb0708db15313e0e4acfa85f20f6a4033b6197.rodata6d398fe8ead3cbb97c6b011b1dc9f564c4980c2a4c4d74f459d10120bee0c5db.data.rel.robe7a95d2a266cda44c0d03ceac5a030f5d77039086a0b0a57f68d9becfc4ea14A reproducibility script is included in the spec (Section 8.1) so any reviewer can verify the match with
solana program dump+anchor build+ a 10-line Python check.Why now
The base draft's §Authorized Signer explicitly invites passkey extensions and specifies the four items any such extension must define. The reference implementation has been live on Solana mainnet since 2026-05, and the passkey extension hole in the spec is currently unfilled. Submitting this extension now lets the broader MPP ecosystem reference a concrete, bytecode-audited reference rather than relying on future implementations to converge on compatible wire formats independently.
Relationship to base spec
This extension is additive. Channels opened under the default Ed25519 authority continue to operate without modification. Vouchers under this extension are distinguished by
signatureType == "passkey-p256-session-v1", which non-implementing verifiers correctly reject as fail-safe.The 48-byte voucher Borsh layout from the base spec is unchanged.
Open to feedback on
specs/methods/solana/extensions/or as a sibling atspecs/methods/solana/(current location)passkey-p256-session-v1vs alternatives likewebauthn-session-v1orsecp256r1-session-v1Happy to revise based on review.