linux-credentials / linux-credentials/libwebauthn

[Extensions] Implement Extension trait

Open
#78 0 comments 0 reactions 0 assignees View on GitHub

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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.