Documentation
¶
Index ¶
- Constants
- type CredentialSchema
- type CredentialSubject
- type DefaultCredentialStatus
- type Prohibition
- type RefreshService
- type TermsOfUse
- type VerifiableCredential
- type VerifiableCredentialBuilder
- func (vcb *VerifiableCredentialBuilder) AddContext(context any) error
- func (vcb *VerifiableCredentialBuilder) AddType(t any) error
- func (vcb *VerifiableCredentialBuilder) Build() (*VerifiableCredential, error)
- func (vcb *VerifiableCredentialBuilder) IsEmpty() bool
- func (vcb *VerifiableCredentialBuilder) SetCredentialSchema(schema CredentialSchema) error
- func (vcb *VerifiableCredentialBuilder) SetCredentialStatus(status any) error
- func (vcb *VerifiableCredentialBuilder) SetCredentialSubject(subject CredentialSubject) error
- func (vcb *VerifiableCredentialBuilder) SetEvidence(evidence []any) error
- func (vcb *VerifiableCredentialBuilder) SetExpirationDate(dateTime string) error
- func (vcb *VerifiableCredentialBuilder) SetID(id string) error
- func (vcb *VerifiableCredentialBuilder) SetIssuanceDate(dateTime string) error
- func (vcb *VerifiableCredentialBuilder) SetIssuer(issuer any) error
- func (vcb *VerifiableCredentialBuilder) SetRefreshService(refreshService RefreshService) error
- func (vcb *VerifiableCredentialBuilder) SetTermsOfUse(terms []TermsOfUse) error
- type VerifiablePresentation
- type VerifiablePresentationBuilder
- func (vpb *VerifiablePresentationBuilder) AddContext(context any) error
- func (vpb *VerifiablePresentationBuilder) AddType(t any) error
- func (vpb *VerifiablePresentationBuilder) AddVerifiableCredentials(creds ...any) error
- func (vpb *VerifiablePresentationBuilder) Build() (*VerifiablePresentation, error)
- func (vpb *VerifiablePresentationBuilder) IsEmpty() bool
- func (vpb *VerifiablePresentationBuilder) SetHolder(holder string) error
- func (vpb *VerifiablePresentationBuilder) SetID(id string) error
- func (vpb *VerifiablePresentationBuilder) SetPresentationSubmission(ps any) error
Constants ¶
const ( VerifiableCredentialsLinkedDataContext string = "https://www.w3.org/2018/credentials/v1" VerifiableCredentialType string = "VerifiableCredential" VerifiableCredentialIDProperty string = "id" // VerifiableCredentialJSONSchemaProperty as defined by https://www.w3.org/TR/vc-json-schema/#jsonschemacredential VerifiableCredentialJSONSchemaProperty string = "jsonSchema" VerifiablePresentationType string = "VerifiablePresentation" BuilderEmptyError string = "builder cannot be empty" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CredentialSchema ¶
type CredentialSubject ¶
func (CredentialSubject) GetID ¶
func (cs CredentialSubject) GetID() string
func (CredentialSubject) GetJSONSchema ¶
func (cs CredentialSubject) GetJSONSchema() map[string]any
type DefaultCredentialStatus ¶
type DefaultCredentialStatus struct {
ID string `json:"id" validate:"required"`
Type string `json:"type" validate:"required"`
}
DefaultCredentialStatus https://www.w3.org/TR/2021/REC-vc-data-model-20211109/#status
type Prohibition ¶
type RefreshService ¶
type TermsOfUse ¶
type TermsOfUse struct {
Type string `json:"type,omitempty"`
ID string `json:"id,omitempty"`
Profile string `json:"profile,omitempty"`
Prohibition []Prohibition `json:"prohibition,omitempty"`
}
TermsOfUse In the current version of the specification TOU isn't well-defined; these fields are subject to change https://www.w3.org/TR/2021/REC-vc-data-model-20211109/#terms-of-use
type VerifiableCredential ¶
type VerifiableCredential struct {
// Either a string or set of strings
Context any `json:"@context" validate:"required"`
ID string `json:"id,omitempty"`
// Either a string or a set of strings https://www.w3.org/TR/2021/REC-vc-data-model-20211109/#types
Type any `json:"type" validate:"required"`
// either a URI or an object containing an `id` property.
Issuer any `json:"issuer,omitempty" validate:"required"`
// https://www.w3.org/TR/xmlschema11-2/#dateTimes
IssuanceDate string `json:"issuanceDate,omitempty" validate:"required"`
ExpirationDate string `json:"expirationDate,omitempty"`
CredentialStatus any `json:"credentialStatus,omitempty" validate:"omitempty,dive"`
// This is where the subject's ID *may* be present
CredentialSubject CredentialSubject `json:"credentialSubject" validate:"required"`
CredentialSchema *CredentialSchema `json:"credentialSchema,omitempty" validate:"omitempty,dive"`
RefreshService *RefreshService `json:"refreshService,omitempty" validate:"omitempty,dive"`
TermsOfUse []TermsOfUse `json:"termsOfUse,omitempty" validate:"omitempty,dive"`
Evidence []any `json:"evidence,omitempty" validate:"omitempty,dive"`
// For embedded proof support
// Proof is a digital signature over a credential https://www.w3.org/TR/2021/REC-vc-data-model-20211109/#proofs-signatures
Proof *crypto.Proof `json:"proof,omitempty"`
}
VerifiableCredential is the verifiable credential model outlined in the vc-data-model spec https://www.w3.org/TR/2021/REC-vc-data-model-20211109/#basic-concepts
func (*VerifiableCredential) GetProof ¶
func (v *VerifiableCredential) GetProof() *crypto.Proof
func (*VerifiableCredential) IsEmpty ¶
func (v *VerifiableCredential) IsEmpty() bool
func (*VerifiableCredential) IsValid ¶
func (v *VerifiableCredential) IsValid() error
func (*VerifiableCredential) IssuerID ¶
func (v *VerifiableCredential) IssuerID() string
func (*VerifiableCredential) SetProof ¶
func (v *VerifiableCredential) SetProof(p *crypto.Proof)
type VerifiableCredentialBuilder ¶
type VerifiableCredentialBuilder struct {
*VerifiableCredential
// contains filtered or unexported fields
}
VerifiableCredentialBuilder uses the builder pattern to construct a verifiable credential
func NewVerifiableCredentialBuilder ¶
func NewVerifiableCredentialBuilder() VerifiableCredentialBuilder
NewVerifiableCredentialBuilder returns an initialized credential builder with some default fields populated
func (*VerifiableCredentialBuilder) AddContext ¶
func (vcb *VerifiableCredentialBuilder) AddContext(context any) error
func (*VerifiableCredentialBuilder) AddType ¶
func (vcb *VerifiableCredentialBuilder) AddType(t any) error
func (*VerifiableCredentialBuilder) Build ¶
func (vcb *VerifiableCredentialBuilder) Build() (*VerifiableCredential, error)
Build attempts to turn a builder into a valid verifiable credential, doing some object model validation. Schema validation and proof generation must be done separately.
func (*VerifiableCredentialBuilder) IsEmpty ¶
func (vcb *VerifiableCredentialBuilder) IsEmpty() bool
func (*VerifiableCredentialBuilder) SetCredentialSchema ¶
func (vcb *VerifiableCredentialBuilder) SetCredentialSchema(schema CredentialSchema) error
func (*VerifiableCredentialBuilder) SetCredentialStatus ¶
func (vcb *VerifiableCredentialBuilder) SetCredentialStatus(status any) error
func (*VerifiableCredentialBuilder) SetCredentialSubject ¶
func (vcb *VerifiableCredentialBuilder) SetCredentialSubject(subject CredentialSubject) error
func (*VerifiableCredentialBuilder) SetEvidence ¶
func (vcb *VerifiableCredentialBuilder) SetEvidence(evidence []any) error
func (*VerifiableCredentialBuilder) SetExpirationDate ¶
func (vcb *VerifiableCredentialBuilder) SetExpirationDate(dateTime string) error
func (*VerifiableCredentialBuilder) SetID ¶
func (vcb *VerifiableCredentialBuilder) SetID(id string) error
func (*VerifiableCredentialBuilder) SetIssuanceDate ¶
func (vcb *VerifiableCredentialBuilder) SetIssuanceDate(dateTime string) error
func (*VerifiableCredentialBuilder) SetIssuer ¶
func (vcb *VerifiableCredentialBuilder) SetIssuer(issuer any) error
func (*VerifiableCredentialBuilder) SetRefreshService ¶
func (vcb *VerifiableCredentialBuilder) SetRefreshService(refreshService RefreshService) error
func (*VerifiableCredentialBuilder) SetTermsOfUse ¶
func (vcb *VerifiableCredentialBuilder) SetTermsOfUse(terms []TermsOfUse) error
type VerifiablePresentation ¶
type VerifiablePresentation struct {
// Either a string or set of strings
Context any `json:"@context,omitempty"`
ID string `json:"id,omitempty"`
Holder string `json:"holder,omitempty"`
Type any `json:"type" validate:"required"`
// an optional field as a part of https://identity.foundation/presentation-exchange/#embed-targets
PresentationSubmission any `json:"presentation_submission,omitempty"`
// Verifiable credential could be our object model, a JWT, or any other valid credential representation
VerifiableCredential []any `json:"verifiableCredential,omitempty"`
Proof *crypto.Proof `json:"proof,omitempty"`
}
VerifiablePresentation https://www.w3.org/TR/2021/REC-vc-data-model-20211109/#presentations-0
func (*VerifiablePresentation) GetProof ¶
func (v *VerifiablePresentation) GetProof() *crypto.Proof
func (*VerifiablePresentation) IsEmpty ¶
func (v *VerifiablePresentation) IsEmpty() bool
func (*VerifiablePresentation) IsValid ¶
func (v *VerifiablePresentation) IsValid() error
func (*VerifiablePresentation) SetProof ¶
func (v *VerifiablePresentation) SetProof(p *crypto.Proof)
type VerifiablePresentationBuilder ¶
type VerifiablePresentationBuilder struct {
*VerifiablePresentation
// contains filtered or unexported fields
}
VerifiablePresentationBuilder uses the builder pattern to construct a verifiable presentation
func NewVerifiablePresentationBuilder ¶
func NewVerifiablePresentationBuilder() VerifiablePresentationBuilder
NewVerifiablePresentationBuilder returns an initialized credential builder with some default fields populated
func (*VerifiablePresentationBuilder) AddContext ¶
func (vpb *VerifiablePresentationBuilder) AddContext(context any) error
func (*VerifiablePresentationBuilder) AddType ¶
func (vpb *VerifiablePresentationBuilder) AddType(t any) error
func (*VerifiablePresentationBuilder) AddVerifiableCredentials ¶
func (vpb *VerifiablePresentationBuilder) AddVerifiableCredentials(creds ...any) error
AddVerifiableCredentials appends the given credentials to the verifiable presentation. It does not check for duplicates.
func (*VerifiablePresentationBuilder) Build ¶
func (vpb *VerifiablePresentationBuilder) Build() (*VerifiablePresentation, error)
Build attempts to turn a builder into a valid verifiable credential, doing some object model validation. Schema validation and proof generation must be done separately.
func (*VerifiablePresentationBuilder) IsEmpty ¶
func (vpb *VerifiablePresentationBuilder) IsEmpty() bool
func (*VerifiablePresentationBuilder) SetHolder ¶
func (vpb *VerifiablePresentationBuilder) SetHolder(holder string) error
func (*VerifiablePresentationBuilder) SetID ¶
func (vpb *VerifiablePresentationBuilder) SetID(id string) error
func (*VerifiablePresentationBuilder) SetPresentationSubmission ¶
func (vpb *VerifiablePresentationBuilder) SetPresentationSubmission(ps any) error