feat: next
This commit is contained in:
49
server/internal/auth/creds.go
Normal file
49
server/internal/auth/creds.go
Normal file
@ -0,0 +1,49 @@
|
||||
package auth
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/go-webauthn/webauthn/protocol"
|
||||
"github.com/go-webauthn/webauthn/webauthn"
|
||||
"github.com/spotdemo4/trevstack/server/internal/sqlc"
|
||||
)
|
||||
|
||||
func NewCreds(creds []sqlc.Credential) []webauthn.Credential {
|
||||
webauthnCreds := []webauthn.Credential{}
|
||||
|
||||
for _, c := range creds {
|
||||
transports := []protocol.AuthenticatorTransport{}
|
||||
if c.Transports != nil {
|
||||
for t := range strings.SplitSeq(*c.Transports, " ") {
|
||||
transports = append(transports, protocol.AuthenticatorTransport(t))
|
||||
}
|
||||
}
|
||||
|
||||
flags := webauthn.CredentialFlags{}
|
||||
if c.UserVerified != nil {
|
||||
flags.UserVerified = *c.UserVerified
|
||||
}
|
||||
if c.BackupEligible != nil {
|
||||
flags.BackupEligible = *c.BackupEligible
|
||||
}
|
||||
if c.BackupState != nil {
|
||||
flags.BackupState = *c.BackupState
|
||||
}
|
||||
|
||||
webauthnCreds = append(webauthnCreds, webauthn.Credential{
|
||||
ID: []byte(c.CredID),
|
||||
PublicKey: c.CredPublicKey,
|
||||
Authenticator: webauthn.Authenticator{
|
||||
SignCount: uint32(c.SignCount),
|
||||
},
|
||||
Transport: transports,
|
||||
Flags: flags,
|
||||
Attestation: webauthn.CredentialAttestation{
|
||||
Object: c.AttestationObject,
|
||||
ClientDataJSON: c.AttestationClientData,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
return webauthnCreds
|
||||
}
|
Reference in New Issue
Block a user