didexchange

package
v0.1.5 Latest Latest
Warning

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

Go to latest
Published: Dec 8, 2020 License: Apache-2.0 Imports: 28 Imported by: 16

Documentation

Index

Constants

View Source
const (
	// DIDExchange did exchange protocol.
	DIDExchange = "didexchange"
	// PIURI is the did-exchange protocol identifier URI.
	PIURI = "https://didcomm.org/didexchange/1.0"
	// InvitationMsgType defines the did-exchange invite message type.
	InvitationMsgType = PIURI + "/invitation"
	// RequestMsgType defines the did-exchange request message type.
	RequestMsgType = PIURI + "/request"
	// ResponseMsgType defines the did-exchange response message type.
	ResponseMsgType = PIURI + "/response"
	// AckMsgType defines the did-exchange ack message type.
	AckMsgType = PIURI + "/ack"
)
View Source
const (

	// StateIDInvited marks the invited phase of the did-exchange protocol.
	StateIDInvited = "invited"
	// StateIDRequested marks the requested phase of the did-exchange protocol.
	StateIDRequested = "requested"
	// StateIDResponded marks the responded phase of the did-exchange protocol.
	StateIDResponded = "responded"
	// StateIDCompleted marks the completed phase of the did-exchange protocol.
	StateIDCompleted = "completed"
	// StateIDAbandoned marks the abandoned phase of the did-exchange protocol.
	StateIDAbandoned = "abandoned"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Connection

type Connection struct {
	DID    string   `json:"did,omitempty"`
	DIDDoc *did.Doc `json:"did_doc,omitempty"`
}

Connection connection.

type ConnectionSignature

type ConnectionSignature struct {
	Type       string `json:"@type,omitempty"`
	Signature  string `json:"signature,omitempty"`
	SignedData string `json:"sig_data,omitempty"`
	SignVerKey string `json:"signers,omitempty"`
}

ConnectionSignature connection signature.

type Event added in v0.1.3

type Event interface {
	// connection ID
	ConnectionID() string

	// invitation ID
	InvitationID() string
}

Event properties related api. This can be used to cast Generic event properties to DID Exchange specific props.

type Invitation

type Invitation struct {
	// the Image URL of the connection invitation
	ImageURL string `json:"imageUrl,omitempty"`

	// the Service endpoint of the connection invitation
	ServiceEndpoint string `json:"serviceEndpoint,omitempty"`

	// the RecipientKeys for the connection invitation
	RecipientKeys []string `json:"recipientKeys,omitempty"`

	// the ID of the connection invitation
	ID string `json:"@id,omitempty"`

	// the Label of the connection invitation
	Label string `json:"label,omitempty"`

	// the DID of the connection invitation
	DID string `json:"did,omitempty"`

	// the RoutingKeys of the connection invitation
	RoutingKeys []string `json:"routingKeys,omitempty"`

	// the Type of the connection invitation
	Type   string            `json:"@type,omitempty"`
	Thread *decorator.Thread `json:"~thread,omitempty"`
}

Invitation model

Invitation defines DID exchange invitation message https://github.com/hyperledger/aries-rfcs/tree/master/features/0023-did-exchange#0-invitation-to-exchange

TODO all uses of this invitation struct should be replaced with the new OOB one. The new one should be renamed

to 'Invitation'.

type OOBInvitation added in v0.1.3

type OOBInvitation struct {
	// ID of this invitation (for record-keeping purposes).
	// TODO can we remove this?
	ID string `json:"@id"`
	// TODO remove this
	Type string `json:"@type"`
	// ID of the thread from which this invitation originated.
	// This will become the parent thread ID of the didexchange protocol instance.
	ThreadID string
	// TheirLabel is the label on the other party's connection invitation.
	TheirLabel string
	// MyLabel is the label we will use during the did-exchange.
	MyLabel string
	// Target destination.
	// This can be any on of:
	// - a string with a valid DID
	// - a valid `did.Service`
	Target interface{}
}

OOBInvitation to connect with did-exchange.

type Request

type Request struct {
	Type       string            `json:"@type,omitempty"`
	ID         string            `json:"@id,omitempty"`
	Label      string            `json:"label,omitempty"`
	Connection *Connection       `json:"connection,omitempty"`
	Thread     *decorator.Thread `json:"~thread,omitempty"`
}

Request defines a2a DID exchange request https://github.com/hyperledger/aries-rfcs/tree/master/features/0023-did-exchange#1-exchange-request

type Response

type Response struct {
	Type                string               `json:"@type,omitempty"`
	ID                  string               `json:"@id,omitempty"`
	ConnectionSignature *ConnectionSignature `json:"connection~sig,omitempty"`
	Thread              *decorator.Thread    `json:"~thread,omitempty"`
}

Response defines a2a DID exchange response https://github.com/hyperledger/aries-rfcs/tree/master/features/0023-did-exchange#2-exchange-response

type Service

type Service struct {
	service.Action
	service.Message
	// contains filtered or unexported fields
}

Service for DID exchange protocol.

func New

func New(prov provider) (*Service, error)

New return didexchange service.

func (*Service) Accept

func (s *Service) Accept(msgType string) bool

Accept msg checks the msg type.

func (*Service) AcceptExchangeRequest

func (s *Service) AcceptExchangeRequest(connectionID, publicDID, label string, routerConnections []string) error

AcceptExchangeRequest accepts/approves connection request.

func (*Service) AcceptInvitation

func (s *Service) AcceptInvitation(connectionID, publicDID, label string, routerConnections []string) error

AcceptInvitation accepts/approves connection invitation.

func (*Service) CreateConnection added in v0.1.4

func (s *Service) CreateConnection(record *connection.Record, theirDID *did.Doc) error

CreateConnection saves the record to the connection store and maps TheirDID to their recipient keys in the did connection store.

func (*Service) CreateImplicitInvitation added in v0.1.1

func (s *Service) CreateImplicitInvitation(inviterLabel, inviterDID,
	inviteeLabel, inviteeDID string, routerConnections []string) (string, error)

CreateImplicitInvitation creates implicit invitation. Inviter DID is required, invitee DID is optional. If invitee DID is not provided new peer DID will be created for implicit invitation exchange request.

func (*Service) HandleInbound

func (s *Service) HandleInbound(msg service.DIDCommMsg, _, _ string) (string, error)

HandleInbound handles inbound didexchange messages.

func (*Service) HandleOutbound

func (s *Service) HandleOutbound(_ service.DIDCommMsg, _, _ string) (string, error)

HandleOutbound handles outbound didexchange messages.

func (*Service) Name

func (s *Service) Name() string

Name return service name.

func (*Service) RespondTo added in v0.1.3

func (s *Service) RespondTo(i *OOBInvitation, routerConnections []string) (string, error)

RespondTo this inbound invitation and return with the new connection record's ID.

func (*Service) SaveInvitation added in v0.1.3

func (s *Service) SaveInvitation(i *OOBInvitation) error

SaveInvitation saves this invitation created by you.

Jump to

Keyboard shortcuts

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