All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- CBOR library major version update to v2
- Extension implementations for
txAuthSimple
andtxAuthGeneric
.
RegistrationValidator
andAuthenticationValidator
function type for passing additional validations into theFinish...
functions. These functions take pointerl to the ceremonies' respective options and credential structs as arguments, and as such can modify those values as needed. If the functions return an error, the ceremony ends in error. TheFinish...
functions will continue to have all validations required by the specification implemented.- Added
ValidateAppID
function conforming toAuthenticationValidator
which replacesVerifyAppID
andEffectiveRPID
FinishRegistration
andFinishAuthentication
now accept zero or moreRegistrationValidator
orAuthenticationValidator
functions respectively as variable arguments. Any provided validators are run BEFORE any of the required validation checks, and end the ceremony if they return an error. Note that this is NOT a breaking change as zero of these arguments may be provided.
- [BREAKING] Removed the
ExtensionValidator
type in favor of the new generalRegistrationValidator
andAuthenticationValidator
types. - [BREAKING] Removed the
EffectiveRPID
function in favor of updating the RPID via a validator function - [BREAKING] Removed the
VerifyAppID
function in favor ofValidateAppID
(noted above)
- Attestation verification for the packed format has been added, continuing the previous guidance for trust chain validation. ECDAA attestation type is not supported due to lack of ECDAA support in Go standard library.
- Attestation verification for the fido-u2f format has been added. The attestation type and trust path are not validated, only the signature against the provided certificate. It is up to the implementor to verify the trust chain using the
*AttestationObject
returned fromFinishRegistration
.
- Minor changes to fix static analysis deficiencies discovered with
staticcheck
- Added contributing instructions
- Added contributors list
- Documentation updates as needed in order to CII self-certify
- Updated CI pipeline with additional checks
UnmarshalBinary
andMarshalBinary
methods onAttestationObject
andAuthenticatorData
, implementing theBinaryMarshaler
andBinaryUnmarshaler
interfacesEncode
method onAuthenticatorData
to facilitate encodingAttestationObject
for storage
- [BREAKING]
FinishRegistration
now returns(*AttestationObject, error)
instead of(string, []byte, error)
, to allow the implementor to choose how much or little of the authenticator data to save. - [BREAKING]
FinishAuthentication
now returns(*AuthenticatorData, error)
instead of(uint, error)
, to allow the implementor full access to the authenticator data for other uses - [BREAKING] AttestationObject now holds the parsed AuthenticatorData instead of the raw bytes
- [BREAKING] Rename methods on
RelyingParty
,User
, andCredential
interfaces to reduce the risk of conflicts with lower-order data members - [BREAKING] Change
EntityID()
(formerlyID()
) method onCredential
interface to return[]byte
instead ofstring
- [BREAKING] Change
CredFinder
function type to accept argument of type[]byte
instead ofstring
- [BREAKING]
AttestedCredentialData
CredentialPublicKey
member is now the rawcbor.RawMessage
instead of the parsedCOSEKey
- Changed
verifyAttestationStatement
to take theAttestationObject
instead of its separated components. - Updated github.com/fxamacker/cbor to version 1.5.0 and changed encoding options on all calls to the new convenience functions
- Updated the demo app to reflect breaking changes
- Initial implementation