did

package
v0.1.6-0...-5c25bcb Latest Latest
Warning

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

Go to latest
Published: Feb 1, 2021 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// Context of the DID document.
	Context = "https://w3id.org/did/v1"
)

Variables

View Source
var ErrDIDDocumentNotExist = errors.New("did document not exists")

ErrDIDDocumentNotExist error did doc not exist.

View Source
var ErrKeyNotFound = errors.New("key not found")

ErrKeyNotFound is returned when key is not found.

View Source
var ErrProofNotFound = errors.New("proof not found")

ErrProofNotFound is returned when proof is not found.

Functions

func CachingJSONLDLoader

func CachingJSONLDLoader() ld.DocumentLoader

CachingJSONLDLoader creates JSON-LD CachingDocumentLoader with preloaded base JSON-LD DID and security contexts.

func LookupRecipientKeys

func LookupRecipientKeys(didDoc *Doc, serviceType, keyType string) ([]string, bool)

LookupRecipientKeys gets the recipient keys from the did doc which match the given parameters.

Types

type DID

type DID struct {
	Scheme           string // Scheme is always "did"
	Method           string // Method is the specific DID methods
	MethodSpecificID string // MethodSpecificID is the unique ID computed or assigned by the DID method
}

DID is parsed according to the generic syntax: https://w3c.github.io/did-core/#generic-did-syntax

func Parse

func Parse(did string) (*DID, error)

Parse parses the string according to the generic DID syntax. See https://w3c.github.io/did-core/#generic-did-syntax.

func (*DID) String

func (d *DID) String() string

String returns a string representation of this DID.

type Doc

type Doc struct {
	Context              []string
	ID                   string
	VerificationMethod   []VerificationMethod
	Service              []Service
	Authentication       []Verification
	AssertionMethod      []Verification
	CapabilityDelegation []Verification
	CapabilityInvocation []Verification
	KeyAgreement         []Verification
	Created              *time.Time
	Updated              *time.Time
	Proof                []Proof
	// contains filtered or unexported fields
}

Doc DID Document definition.

func BuildDoc

func BuildDoc(opts ...DocOption) *Doc

BuildDoc creates the DID Doc from options.

func ParseDocument

func ParseDocument(data []byte) (*Doc, error)

ParseDocument creates an instance of DIDDocument by reading a JSON document from bytes.

func (*Doc) JSONBytes

func (doc *Doc) JSONBytes() ([]byte, error)

JSONBytes converts document to json bytes.

func (*Doc) MarshalJSON

func (doc *Doc) MarshalJSON() ([]byte, error)

MarshalJSON marshals the DID Document.

func (*Doc) UnmarshalJSON

func (doc *Doc) UnmarshalJSON(data []byte) error

UnmarshalJSON unmarshals a DID Document.

func (*Doc) VerificationMethods

func (doc *Doc) VerificationMethods(customVerificationRelationships ...VerificationRelationship) map[VerificationRelationship][]Verification

VerificationMethods returns verification methods of DID Doc of certain relationship. If customVerificationRelationships is empty, all verification methods are returned. Public keys which are not referred by any verification method are put into special VerificationRelationshipGeneral relationship category. nolint:gocyclo

func (*Doc) VerifyProof

func (doc *Doc) VerifyProof(suites []verifier.SignatureSuite, jsonldOpts ...jsonld.ProcessorOpts) error

VerifyProof verifies document proofs.

type DocOption

type DocOption func(opts *Doc)

DocOption provides options to build DID Doc.

func WithAssertion

func WithAssertion(assertion []Verification) DocOption

WithAssertion sets the verification methods for assertion: https://w3c.github.io/did-core/#assertionmethod.

func WithAuthentication

func WithAuthentication(auth []Verification) DocOption

WithAuthentication sets the verification methods for authentication: https://w3c.github.io/did-core/#authentication.

func WithCreatedTime

func WithCreatedTime(t time.Time) DocOption

WithCreatedTime DID doc created time.

func WithService

func WithService(svc []Service) DocOption

WithService DID doc services.

func WithUpdatedTime

func WithUpdatedTime(t time.Time) DocOption

WithUpdatedTime DID doc updated time.

func WithVerificationMethod

func WithVerificationMethod(pubKey []VerificationMethod) DocOption

WithVerificationMethod DID doc VerificationMethod.

type DocResolution

type DocResolution struct {
	Context          []string
	DIDDocument      *Doc
	DocumentMetadata *DocumentMetadata
}

DocResolution did resolution.

func ParseDocumentResolution

func ParseDocumentResolution(data []byte) (*DocResolution, error)

ParseDocumentResolution parse document resolution.

func (*DocResolution) JSONBytes

func (docResolution *DocResolution) JSONBytes() ([]byte, error)

JSONBytes converts document to json bytes.

type DocumentMetadata

type DocumentMetadata struct {
	// Deactivated is deactivated flag key.
	Deactivated bool `json:"deactivated,omitempty"`
	// CanonicalID is canonical ID key.
	CanonicalID string `json:"canonicalId,omitempty"`
	// EquivalentID is equivalent ID array.
	EquivalentID string `json:"equivalentId,omitempty"`
	// Method is used for method metadata within did document metadata.
	Method *MethodMetadata `json:"method,omitempty"`
}

DocumentMetadata document metadata.

type MethodMetadata

type MethodMetadata struct {
	// UpdateCommitment is update commitment key.
	UpdateCommitment string `json:"updateCommitment,omitempty"`
	// RecoveryCommitment is recovery commitment key.
	RecoveryCommitment string `json:"recoveryCommitment,omitempty"`
	// Published is published key.
	Published bool `json:"published,omitempty"`
}

MethodMetadata method metadata.

type Proof

type Proof struct {
	Type         string
	Created      *time.Time
	Creator      string
	ProofValue   []byte
	Domain       string
	Nonce        []byte
	ProofPurpose string
	// contains filtered or unexported fields
}

Proof is cryptographic proof of the integrity of the DID Document.

type Service

type Service struct {
	ID              string
	Type            string
	Priority        uint
	RecipientKeys   []string
	RoutingKeys     []string
	ServiceEndpoint string
	Properties      map[string]interface{}
	// contains filtered or unexported fields
}

Service DID doc service.

func LookupService

func LookupService(didDoc *Doc, serviceType string) (*Service, bool)

LookupService returns the service from the given DIDDoc matching the given service type.

type Verification

type Verification struct {
	VerificationMethod VerificationMethod
	Relationship       VerificationRelationship
	Embedded           bool
}

Verification authentication verification.

func NewEmbeddedVerification

func NewEmbeddedVerification(vm *VerificationMethod, r VerificationRelationship) *Verification

NewEmbeddedVerification creates a new verification method with embedded verification method.

func NewReferencedVerification

func NewReferencedVerification(vm *VerificationMethod, r VerificationRelationship) *Verification

NewReferencedVerification creates a new verification method with referenced verification method.

type VerificationMethod

type VerificationMethod struct {
	ID         string
	Type       string
	Controller string

	Value []byte
	// contains filtered or unexported fields
}

VerificationMethod DID doc verification method. The value of the verification method is defined either as raw public key bytes (Value field) or as JSON Web Key. In the first case the Type field can hold additional information to understand the nature of the raw public key.

func LookupPublicKey

func LookupPublicKey(id string, didDoc *Doc) (*VerificationMethod, bool)

LookupPublicKey returns the public key with the given id from the given DID Doc.

func NewVerificationMethodFromBytes

func NewVerificationMethodFromBytes(id, kType, controller string, value []byte) *VerificationMethod

NewVerificationMethodFromBytes creates a new VerificationMethod based on raw public key bytes.

func NewVerificationMethodFromJWK

func NewVerificationMethodFromJWK(id, kType, controller string, jwk *jose.JWK) (*VerificationMethod, error)

NewVerificationMethodFromJWK creates a new VerificationMethod based on JSON Web Key.

func (*VerificationMethod) JSONWebKey

func (pk *VerificationMethod) JSONWebKey() *jose.JWK

JSONWebKey returns JSON Web key if defined.

type VerificationRelationship

type VerificationRelationship int

VerificationRelationship defines a verification relationship between DID subject and a verification method.

const (
	// VerificationRelationshipGeneral is a special case of verification relationship: when a verification method
	// defined in Verification is not used by any Verification.
	VerificationRelationshipGeneral VerificationRelationship = iota

	// Authentication defines verification relationship.
	Authentication

	// AssertionMethod defines verification relationship.
	AssertionMethod

	// CapabilityDelegation defines verification relationship.
	CapabilityDelegation

	// CapabilityInvocation defines verification relationship.
	CapabilityInvocation

	// KeyAgreement defines verification relationship.
	KeyAgreement
)

Jump to

Keyboard shortcuts

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