did

package
v0.1.6 Latest Latest
Warning

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

Go to latest
Published: Mar 6, 2021 License: Apache-2.0 Imports: 16 Imported by: 139

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 added in v0.1.4

func CachingJSONLDLoader() ld.DocumentLoader

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

func LookupDIDCommRecipientKeys added in v0.1.6

func LookupDIDCommRecipientKeys(didDoc *Doc) ([]string, bool)

LookupDIDCommRecipientKeys gets the DIDComm recipient keys from the did doc which match the given parameters. DIDComm recipient keys are encoded as did:key identifiers. See: - https://github.com/hyperledger/aries-rfcs/blob/master/features/0067-didcomm-diddoc-conventions/README.md - https://github.com/hyperledger/aries-rfcs/blob/master/features/0360-use-did-key/README.md

Types

type DID added in v0.1.3

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 added in v0.1.3

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 added in v0.1.3

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 added in v0.1.5

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

MarshalJSON marshals the DID Document.

func (*Doc) UnmarshalJSON added in v0.1.5

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

UnmarshalJSON unmarshals a DID Document.

func (*Doc) VerificationMethods added in v0.1.3

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 added in v0.1.5

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 added in v0.1.5

func WithVerificationMethod(pubKey []VerificationMethod) DocOption

WithVerificationMethod DID doc VerificationMethod.

type DocResolution added in v0.1.6

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

DocResolution did resolution.

func ParseDocumentResolution added in v0.1.6

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

ParseDocumentResolution parse document resolution.

func (*DocResolution) JSONBytes added in v0.1.6

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

JSONBytes converts document to json bytes.

type DocumentMetadata added in v0.1.6

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 added in v0.1.6

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                 `json:"id"`
	Type            string                 `json:"type"`
	Priority        uint                   `json:"priority,omitempty"`
	RecipientKeys   []string               `json:"recipientKeys,omitempty"`
	RoutingKeys     []string               `json:"routingKeys,omitempty"`
	ServiceEndpoint string                 `json:"serviceEndpoint"`
	Properties      map[string]interface{} `json:"properties,omitempty"`
	// contains filtered or unexported fields
}

Service DID doc service.

func LookupService added in v0.1.1

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

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

type Verification added in v0.1.5

type Verification struct {
	VerificationMethod VerificationMethod
	Relationship       VerificationRelationship
	Embedded           bool
}

Verification authentication verification.

func NewEmbeddedVerification added in v0.1.5

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

NewEmbeddedVerification creates a new verification method with embedded verification method.

func NewReferencedVerification added in v0.1.5

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 added in v0.1.1

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

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

func NewVerificationMethodFromBytes added in v0.1.5

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

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

func NewVerificationMethodFromJWK added in v0.1.5

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

NewVerificationMethodFromJWK creates a new VerificationMethod based on JSON Web Key.

func (*VerificationMethod) JSONWebKey added in v0.1.5

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

JSONWebKey returns JSON Web key if defined.

type VerificationRelationship added in v0.1.3

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