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