- Added: support for controlling generated credential's ID length to passkey-authenticator (#49)
- Added: support for signature counters
- ⚠ BREAKING: Add
update_credential
function toCredentialStore
(#23). - Add
make_credentials_with_signature_counter
toAuthenticator
.
- ⚠ BREAKING: Add
- ⚠ BREAKING: Merge functions in
UserValidationMethod
(#24)- Removed:
UserValidationMethod::check_user_presence
- Removed:
UserValidationMethod::check_user_verification
- Added:
UserValidationMethod::check_user
. This function now performs both user presence and user verification checks. The function now also returns which validations were performed, even if they were not requested.
- Removed:
- Added: Support for discoverable credentials
- ⚠ BREAKING: Added:
CredentialStore::get_info
which returnsStoreInfo
containingDiscoverabilitySupport
. - ⚠ BREAKING: Changed:
CredentialStore::save_credential
now also takesOptions
. - Changed:
Authenticator::make_credentials
now returns an error if a discoverable credential was requested but not supported by the store.
- ⚠ BREAKING: Added:
- Changed: The
Client
no longer hardcodes the UV value sent to theAuthenticator
(#22). - Changed: The
Client
no longer hardcodes the RK value sent to theAuthenticator
(#27). - The client now supports additional user-defined properties in the client data, while also clarifying how the client
handles client data and its hash.
- ⚠ BREAKING: Changed:
register
andauthenticate
takeClientData<E>
instead ofOption<Vec<u8>>
. - ⚠ BREAKING: Changed: Custom client data hashes are now specified using
DefaultClientDataWithCustomHash(Vec<u8>)
instead ofSome(Vec<u8>)
. - Added: Additional fields can be added to the client data using
DefaultClientDataWithExtra(ExtraData)
.
- ⚠ BREAKING: Changed:
- Added: The
Client
now has the ability to adjust the response for quirky relying parties when a fully featured response would break their server side validation. (#31) - ⚠ BREAKING: Added the
Origin
enum which is now the origin parameter for the following methods (#32):Client::register
takes animpl Into<Origin>
instead of a&Url
Client::authenticate
takes animpl Into<Origin>
instead of a&Url
RpIdValidator::assert_domain
takes an&Origin
instead of a&Url
- ⚠ BREAKING: The collected client data will now have the android app signature as the origin when a request comes from an app directly. (#32)
CollectedClientData
is now generic and supports additional strongly typed fields. (#28)- Changed:
CollectedClientData
has changed toCollectedClientData<E = ()>
- Changed:
- The
Client
now returnsCredProps::rk
depending on the authenticator's capabilities. (#29) - ⚠ BREAKING: Rename webauthn extension outputs to be consistent with inputs. (#33)
- ⚠ BREAKING: Create new extension inputs for the CTAP authenticator inputs. (#33)
- ⚠ BREAKING: Add unsigned extension outputs for the CTAP authenticator outputs. (#34)
- ⚠ BREAKING: Add ability for
Passkey
to store associated extension data. (#36) - ⚠ BREAKING: Change version and extension information in
ctap2::get_info
from strings to enums. (#39) - ⚠ BREAKING: Add missing CTAP2.1 fields to
make_credential::Response
andget_assertion::Response
. (#39) - Make the
PublicKeyCredential
outputs equatable in swift. (#39)
Most of these changes are adding fields to structs which are breaking changes due to the current lack of builder methods for these types. Due to this, additions of fields to structs or variants to enums won't be marked as breaking in this release's notes. Other types of breaking changes will be explicitly called out.
- ⚠ BREAKING: Update
bitflags
from v1 to v2. This meansctap2::Flags
no longer implementPartialOrd
,Ord
andHash
as those traits aren't applicable. - Added a
transports
field toctap2::get_info::Response
- Changes in
webauthn::PublicKeyCredential
:- ⚠ BREAKING:
authenticator_attachment
is now optional - ⚠ BREAKING:
client_extension_results
's type has been renamed fromAuthenticationExtensionsClientOutputs
toAuthenticatorExtensionsClientOutputs
- ⚠ BREAKING:
- Changes for
webauthn::PublicKeyCredentialRequestOptions
:timeout
now supports deserializing from a stringified numberuser_verification
will now ignore unknown values instead of returning an error on deserialization- Add
hints
field (#9) - Add
attestation
andattestation_formats
fields
- Changes for
webauthn::AuthenticatorAssertionResponse
- Add
attestation_object
field
- Add
- Changes for
webauthn::PublicKeyCredentialCreationOptions
:timeout
now supports deserializing from a stringified number- Add
hints
field (#9) - Add
attestation_formats
field
- Fix
webauthn::CollectedClientData
JSON serialization to correctly follow the spec. (#6)- Add
unknown_keys
field - Always serializes
cross_origin
with a boolean even if it is set toNone
- ⚠ BREAKING: Remove from
#[typeshare]
generation as#[serde(flatten)]
onunknown_keys
is not supported.
- Add
- Add
webauthn::ClientDataType::PaymentGet
variant. - Make all enums with unit variants
Clone
,Copy
,PartialEq
andEq
- Add support for the
CredProps
extension withauthenticatorDisplayName
- Add
Authenticator::transports(Vec<AuthenticatorTransport>)
builder method for customizing the transports during credential creation. The default isinternal
andhybrid
. - Add
Authenticator:{set_display_name, display_name}
methods for setting a display name for theCredProps
extension'sauthenticatorDisplayName
. - Update
p256
to version0.13
- Update
signature
to version2
- Add
WebauthnError::is_vendor_error()
for verifying if the internal CTAP error was in the range ofpasskey_types::ctap2::VendorError
- Break out Rp Id verification from the
Client
into its ownRpIdVerifier
which it now uses internally. This allows the use ofRpIdVerifier::assert_domain
publicly now instead of it being a private method to client without the need for everything else the client needs. Client::register
now handlesCredProps
extension requests.- Update
idna
to version0.5
- Update the public suffix list