Ctrl K
ComunidadGuías…

internal/store/passkey.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package store

import (
	"context"
	"time"

	"telesrv/internal/domain"
)

// PasskeyStore persists registered passkey credentials (durable).
type PasskeyStore interface {
	InsertPasskey(ctx context.Context, cred domain.PasskeyCredential) error
	GetPasskeyByCredentialID(ctx context.Context, credentialID []byte) (domain.PasskeyCredential, bool, error)
	ListPasskeysByUser(ctx context.Context, userID int64) ([]domain.PasskeyCredential, error)
	UpdatePasskeyUsage(ctx context.Context, credentialID []byte, signCount uint32, lastUsedAt int64) error
	DeletePasskey(ctx context.Context, userID int64, credentialID []byte) (bool, error)
}

// PasskeyChallengeStore temporarily stores one-time WebAuthn challenges (short TTL, burned after use).
type PasskeyChallengeStore interface {
	SavePasskeyChallenge(ctx context.Context, challenge []byte, c domain.PasskeyChallenge, ttl time.Duration) error
	// ConsumePasskeyChallenge takes out and deletes the challenge; returns found=false when expired or absent.
	ConsumePasskeyChallenge(ctx context.Context, challenge []byte) (domain.PasskeyChallenge, bool, error)
}