0084 XLS-84d: Support for ES256 on the P-256 curve in Passkey Signatures #237
intelliot
started this conversation in
Standard Proposals
Replies: 1 comment
-
Will it be possible to use the P-256 curve with a seed, like you can with secp256k1 and ed25519? |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Abstract
This specification proposes adding support for the COSE algorithms
-7
(ECDSA with SHA-256 over P-256) and-8
(EdDSA with Ed25519) in passkey signatures on the XRP Ledger. Building upon the foundational passkey support introduced in the Passkey Signature Support Specification, this document details the inclusion of these specific algorithms, ensuring compatibility with widely used and secure cryptographic methods. Possible COSE algorithm values include-7
,-8
,-35
, and-36
, but this specification clarifies that algorithms-35
(ECDSA with SHA-384) and-36
(ECDSA with SHA-512) are not supported by this spec. By supporting only-7
and-8
, the protocol achieves security and interoperability with common passkey implementations.1. Overview
We propose adding support for COSE cryptographic algorithms
-7
and-8
for passkey signatures.This feature will require an amendment, tentatively titled
featurePasskeyAlgoSupport
.Dependency: This specification depends on the foundational passkey support introduced in the Passkey Signature Support Specification, which outlines the general framework for supporting passkey-generated signatures.
2. On-Ledger Object:
PasskeyList
The
PasskeyList
ledger object is used to store and manage registered passkey credentials associated with an account.2.1. Fields
LedgerEntryType
string
UInt16
PasskeyList
).Account
string
AccountID
PasskeyList
.Credentials
array
Array
2.1.1.
Credentials
Array ElementsEach element in the
Credentials
array represents a registered passkey credential:CredentialID
string
Blob
PublicKey
string
Blob
SignCount
number
UInt32
AuthenticatorData
, used to prevent replay attacks.Algorithm
number
Int32
-7
or-8
in this spec).Algorithm
:-7
: ECDSA with SHA-256 over the P-256 curve (secp256r1)-8
: EdDSA with Ed25519-35
: ECDSA with SHA-384 over the P-384 curve-36
: ECDSA with SHA-512 over the P-521 curveSignature Verification Process
The signature verification process for algorithms
-7
and-8
MUST follow these steps:CredentialID
corresponds to a registered credential in the account'sPasskeyList
.Algorithm
associated with theCredentialID
from thePasskeyList
. Ensure it is-7
or-8
. If it is-35
or-36
, the transaction MUST fail with atemBAD_SIGNATURE
error.ClientDataJSON
.AuthenticatorData
and theClientDataHash
.Algorithm
value:-7
: ECDSA with SHA-256 over the P-256 curve.-8
: EdDSA with Ed25519.Signature
over the concatenated signed data using thePublicKey
.challenge
inClientDataJSON
matches the transaction hash.SignCount
fromAuthenticatorData
is greater than the storedSignCount
and update it.6. Security Considerations
-7
and-8
, and explicitly not supporting-35
and-36
, the XRP Ledger ensures the use of widely accepted and secure cryptographic methods while avoiding unnecessary complexity.-7
and-8
enables compatibility with most authenticators.7. Compliance with WebAuthn Specification
-7
and-8
are supported.AuthenticatorData
,ClientDataJSON
,CredentialID
) for proper verification.Beta Was this translation helpful? Give feedback.
All reactions