This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
package memory
|
||||
|
||||
import (
|
||||
"github.com/google/uuid"
|
||||
|
||||
"github.com/go-webauthn/webauthn/metadata"
|
||||
)
|
||||
|
||||
// Option describes an optional pattern for this provider.
|
||||
type Option func(provider *Provider) (err error)
|
||||
|
||||
// WithMetadata provides the required metadata for the memory provider.
|
||||
func WithMetadata(mds map[uuid.UUID]*metadata.Entry) Option {
|
||||
return func(provider *Provider) (err error) {
|
||||
provider.mds = mds
|
||||
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
// WithValidateEntry requires that the provided metadata has an entry for the given authenticator to be considered
|
||||
// valid. By default an AAGUID which has a zero value should fail validation if [WithValidateEntryPermitZeroAAGUID] is not
|
||||
// provided with the value of true. Default is true.
|
||||
func WithValidateEntry(require bool) Option {
|
||||
return func(provider *Provider) (err error) {
|
||||
provider.entry = require
|
||||
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
// WithValidateEntryPermitZeroAAGUID is an option that permits a zero'd AAGUID from an attestation statement to
|
||||
// automatically pass metadata validations. Generally helpful to use with [WithValidateEntry]. Default is false.
|
||||
func WithValidateEntryPermitZeroAAGUID(permit bool) Option {
|
||||
return func(provider *Provider) (err error) {
|
||||
provider.entryPermitZero = permit
|
||||
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
// WithValidateTrustAnchor when set to true enables the validation of the attestation statement against the trust anchor
|
||||
// from the metadata. Default is true.
|
||||
func WithValidateTrustAnchor(validate bool) Option {
|
||||
return func(provider *Provider) (err error) {
|
||||
provider.anchors = validate
|
||||
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
// WithValidateStatus when set to true enables the validation of the attestation statements AAGUID against the desired
|
||||
// and undesired [metadata.AuthenticatorStatus] lists. Default is true.
|
||||
func WithValidateStatus(validate bool) Option {
|
||||
return func(provider *Provider) (err error) {
|
||||
provider.status = validate
|
||||
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
// WithValidateAttestationTypes when set to true enables the validation of the attestation statements type against the
|
||||
// known types the authenticator can produce. Default is true.
|
||||
func WithValidateAttestationTypes(validate bool) Option {
|
||||
return func(provider *Provider) (err error) {
|
||||
provider.attestation = validate
|
||||
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
// WithStatusUndesired provides the list of statuses which are considered undesirable for status report validation
|
||||
// purposes. Should be used with [WithValidateStatus] set to true.
|
||||
func WithStatusUndesired(statuses []metadata.AuthenticatorStatus) Option {
|
||||
return func(provider *Provider) (err error) {
|
||||
provider.undesired = statuses
|
||||
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
// WithStatusDesired provides the list of statuses which are considered desired and will be required for status report
|
||||
// validation purposes. Should be used with [WithValidateStatus] set to true.
|
||||
func WithStatusDesired(statuses []metadata.AuthenticatorStatus) Option {
|
||||
return func(provider *Provider) (err error) {
|
||||
provider.desired = statuses
|
||||
|
||||
return nil
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user