linux-credentials / linux-credentials/libwebauthn
[Extensions] Implement Extension trait
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 579
- Forks
- 27
- Avg merge
- 4d 6h
- Merged PRs (30d)
- 1
Description
I think it may make sense to define a traits for *client extension processing*, where each extension implements the trait including at least two methods - equivalent to `create()` and `get()` from the CTAP 2.2 spec, for processing on MakeCredential and GetAssertion respectively. In turn, this could be generic over the respective extension's *client extension input*, eg.
> [12.2.1. Client extension input](https://fidoalliance.org/specs/fido-v2.2-rd-20230321/fido-client-to-authenticator-protocol-v2.2-rd-20230321.html#credBlobFeatureDetection)
> > [create()](https://w3c.github.io/webappsec-credential-management/#dom-credentialscontainer-create) : ArrayBuffer containing opaque data in an RP-specific format.
> > ```javascript
> > partial dictionary AuthenticationExtensionsClientInputs {
> > ArrayBuffer credBlob;
> > };
> > ```
> > [get()](https://w3c.github.io/webappsec-credential-management/#dom-credentialscontainer-get) : A boolean value to indicate that this extension is requested by the Relying Party.
> > ```
> > partial dictionary AuthenticationExtensionsClientInputs {
> > boolean getCredBlob;
> > };
> > ```
_Originally posted by @AlfioEmanueleFresta in https://github.com/linux-credentials/libwebauthn/issues/77#issuecomment-2674105649_
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
No files or tests are identified; start by locating the existing extension handling for MakeCredential and GetAssertion, then compare it with the CTAP 2.2 create() and get() extension operations. Done means defining an Extension trait with those operations and generic client extension inputs, with the integration scope and behavior resolved.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- authentication, security
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100