reg

package
v0.0.0-...-454dbe6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 27, 2026 License: EUPL-1.2 Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrAttestationRequired = &ClientError{
	StatusCode:       http.StatusBadRequest,
	ErrorCode:        "attestation_required",
	ErrorDescription: "Attestation is required",
}

Functions

This section is empty.

Types

type AccountEntity

type AccountEntity struct {
	ID      string `json:"id"`
	Subject string `json:"subject"`
	Issuer  string `json:"issuer"`
}

type AttestationEntity

type AttestationEntity struct {
	Format AttestationFormat
	Data   interface{}
}

type AttestationFormat

type AttestationFormat string
const (
	AttestationFormatAndroidKeyID     AttestationFormat = "android-key-id"
	AttestationFormatAppleAttestation AttestationFormat = "apple-attestation"
	AttestationFormatAppleAssertion   AttestationFormat = "apple-assertion"
	AttestationFormatNone             AttestationFormat = "none"
	AttestationFormatGempki           AttestationFormat = "gempki"
)

func ParseAttestationFormat

func ParseAttestationFormat(s string) (AttestationFormat, error)

type AuthSessionEntity

type AuthSessionEntity struct {
	Iss          string `json:"idp"`
	State        string `json:"state"`
	Nonce        string `json:"nonce"`
	CodeVerifier string `json:"codeVerifier"`
}

type ClientDescriptorEntity

type ClientDescriptorEntity struct {
	ID   string `json:"id"`
	Name string `json:"name"`
	Type string `json:"type"`
}

type ClientEntity

type ClientEntity struct {
	ID                    string             `json:"id"`
	Thumbprint            string             `json:"thumbprint"`
	Name                  string             `json:"name"`
	AccountID             string             `json:"accountId"`
	RegistrationTimestamp time.Time          `json:"registrationTimestamp"`
	Platform              ClientPlatform     `json:"platform"`
	Jwk                   *util.Jwk          `json:"jwk"`
	Csr                   []byte             `json:"csr,omitempty"`
	Certificate           []byte             `json:"certificate,omitempty"`
	Attestation           *AttestationEntity `json:"attestation"`
	Posture               interface{}        `json:"posture"`
}

type ClientError

type ClientError struct {
	StatusCode       int    `json:"-"`
	ErrorCode        string `json:"error"`
	ErrorDescription string `json:"error_description"`
}

func (*ClientError) Error

func (e *ClientError) Error() string

type ClientPlatform

type ClientPlatform string
const (
	ClientPlatformAndroid  ClientPlatform = "android"
	ClientPlatformApple    ClientPlatform = "apple"
	ClientPlatformSoftware ClientPlatform = "software"
)

func ParseClientPlatform

func ParseClientPlatform(s string) (ClientPlatform, error)

type MockRegistrationStore

type MockRegistrationStore struct {
	// contains filtered or unexported fields
}

func NewMockRegistrationStore

func NewMockRegistrationStore() *MockRegistrationStore

func (*MockRegistrationStore) FindRegistrationByThumbprint

func (s *MockRegistrationStore) FindRegistrationByThumbprint(thumbprint string) (*RegistrationEntity, error)

func (*MockRegistrationStore) GetClient

func (s *MockRegistrationStore) GetClient(id string) (*ClientEntity, error)

func (*MockRegistrationStore) GetRegistration

func (s *MockRegistrationStore) GetRegistration(id string) (*RegistrationEntity, error)

func (*MockRegistrationStore) PopAuthSession

func (s *MockRegistrationStore) PopAuthSession(state string) (*AuthSessionEntity, error)

func (*MockRegistrationStore) UpsertAccount

func (s *MockRegistrationStore) UpsertAccount(account *AccountEntity) error

func (*MockRegistrationStore) UpsertAuthSession

func (s *MockRegistrationStore) UpsertAuthSession(a *AuthSessionEntity) error

func (*MockRegistrationStore) UpsertClient

func (s *MockRegistrationStore) UpsertClient(client *ClientEntity) error

func (*MockRegistrationStore) UpsertRegistration

func (s *MockRegistrationStore) UpsertRegistration(r *RegistrationEntity) error

type PostureSoftware

type PostureSoftware struct {
	OS        string `json:"os" validate:"required"`
	OSVersion string `json:"osVersion" validate:"required"`
	Arch      string `json:"arch" validate:"required"`
}

type RegistrationChallengeEntity

type RegistrationChallengeEntity struct {
	Type   RegistrationChallengeType `json:"type"`
	URL    string                    `json:"url"`
	Status string                    `json:"status"`
}

type RegistrationChallengeType

type RegistrationChallengeType string
const (
	RegistrationChallengeTypeOIDC    RegistrationChallengeType = "oidc"
	RegistrationChallengeTypeOIDF    RegistrationChallengeType = "oidf"
	RegistrationChallengeTypeOffband RegistrationChallengeType = "offband"
)

type RegistrationEntity

type RegistrationEntity struct {
	ID            string                         `json:"id"`
	JwkThumbprint string                         `json:"jkt"`
	Iss           string                         `json:"iss,omitempty"`
	Status        RegistrationStatus             `json:"status"`
	Challenges    []*RegistrationChallengeEntity `json:"challenges"`
	Client        *ClientEntity                  `json:"client"`
}

type RegistrationService

type RegistrationService struct {
	NonceService nonce.NonceService
	// contains filtered or unexported fields
}

func NewRegistrationService

func NewRegistrationService(
	nonceService nonce.NonceService,
	store RegistrationStore,
	clientsCA ca.CertificateAuthority,
	opts ...RegistrationServiceOption,
) (*RegistrationService, error)

func (*RegistrationService) AuthCallbackOidc

func (s *RegistrationService) AuthCallbackOidc(state, code string) (*ClientEntity, error)

func (*RegistrationService) AuthCodeURLOidc

func (s *RegistrationService) AuthCodeURLOidc(nonce string) (string, error)

func (*RegistrationService) CreateRegistration

func (s *RegistrationService) CreateRegistration(registration *RegistrationEntity) (*RegistrationEntity, error)

func (*RegistrationService) GetRegistration

func (s *RegistrationService) GetRegistration(id string) (*RegistrationEntity, error)

func (*RegistrationService) UpdateRegistration

func (s *RegistrationService) UpdateRegistration(registration *RegistrationEntity) error

func (*RegistrationService) ValidateMessageAttestation

func (s *RegistrationService) ValidateMessageAttestation(message []byte, format AttestationFormat, data []byte, lastAttestation *AttestationEntity) (*AttestationEntity, error)

type RegistrationServiceOption

type RegistrationServiceOption func(*RegistrationService) error

func WithOIDCClient

func WithOIDCClient(client oidc.Client) RegistrationServiceOption

func WithOIDFRelyingParty

func WithOIDFRelyingParty(rp *oidf.RelyingParty) RegistrationServiceOption

type RegistrationStatus

type RegistrationStatus string
const (
	RegistrationStatusPending  RegistrationStatus = "pending"
	RegisterStatusError        RegistrationStatus = "error"
	RegisterStatusCancelled    RegistrationStatus = "cancelled"
	RegistrationStatusComplete RegistrationStatus = "complete"
)

type RegistrationStore

type RegistrationStore interface {
	UpsertRegistration(*RegistrationEntity) error
	UpsertAuthSession(*AuthSessionEntity) error
	PopAuthSession(state string) (*AuthSessionEntity, error)
	UpsertAccount(*AccountEntity) error
	GetRegistration(id string) (*RegistrationEntity, error)
	FindRegistrationByThumbprint(thumbprint string) (*RegistrationEntity, error)
	UpsertClient(*ClientEntity) error
	GetClient(id string) (*ClientEntity, error)
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL