Documentation ¶
Index ¶
- Constants
- func CreateProposal(r *Recipient) service.DIDCommMsgMap
- func WrapWithMetadataPIID(msgMap ...service.DIDCommMsg)
- func WrapWithMetadataPublicOOBInvitation(msg service.DIDCommMsgMap, req *outofband.Invitation)
- type Action
- type Content
- type DescriptionL10N
- type ImgAttach
- type Opt
- type PleaseIntroduceTo
- type Proposal
- type Provider
- type Recipient
- type Request
- type Response
- type Service
- func (s *Service) Accept(msgType string) bool
- func (s *Service) ActionContinue(piID string, opt Opt) error
- func (s *Service) ActionStop(piID string, cErr error) error
- func (s *Service) Actions() ([]Action, error)
- func (s *Service) HandleInbound(msg service.DIDCommMsg, ctx service.DIDCommContext) (string, error)
- func (s *Service) HandleOutbound(msg service.DIDCommMsg, myDID, theirDID string) (string, error)
- func (s *Service) Initialize(prov interface{}) error
- func (s *Service) Name() string
- func (s *Service) OOBMessageReceived(msg service.StateMsg) error
- type To
Constants ¶
const ( // Introduce protocol name. Introduce = "introduce" // IntroduceSpec defines the introduce spec. IntroduceSpec = "https://didcomm.org/introduce/1.0/" // ProposalMsgType defines the introduce proposal message type. ProposalMsgType = IntroduceSpec + "proposal" // RequestMsgType defines the introduce request message type. RequestMsgType = IntroduceSpec + "request" // ResponseMsgType defines the introduce response message type. ResponseMsgType = IntroduceSpec + "response" // AckMsgType defines the introduce ack message type. AckMsgType = IntroduceSpec + "ack" // ProblemReportMsgType defines the introduce problem-report message type. ProblemReportMsgType = IntroduceSpec + "problem-report" )
Variables ¶
This section is empty.
Functions ¶
func CreateProposal ¶ added in v0.1.2
func CreateProposal(r *Recipient) service.DIDCommMsgMap
CreateProposal creates a DIDCommMsgMap proposal.
func WrapWithMetadataPIID ¶ added in v0.1.2
func WrapWithMetadataPIID(msgMap ...service.DIDCommMsg)
WrapWithMetadataPIID wraps message with metadata. The function is used by the introduce client to define that a few messages are related to each other. e.g When two proposals are sent simultaneously piID helps the protocol to determine that messages are related.
func WrapWithMetadataPublicOOBInvitation ¶ added in v0.1.7
func WrapWithMetadataPublicOOBInvitation(msg service.DIDCommMsgMap, req *outofband.Invitation)
WrapWithMetadataPublicOOBInvitation wraps message with metadata. The function is used by the introduce client to define skip proposal. It also saves invitation and will provide it later to the introducee.
Types ¶
type Action ¶ added in v0.1.2
type Action struct { // Protocol instance ID PIID string Msg service.DIDCommMsgMap MyDID string TheirDID string }
Action contains helpful information about action.
type Content ¶
type Content struct { Link string `json:"link,omitempty"` ByteCount int `json:"byte_count,omitempty"` Sha256 string `json:"sha256,omitempty"` }
Content keeps image data.
type DescriptionL10N ¶
DescriptionL10N may contain locale field and key->val pair for translation e.g { "locale": "en", "es": "Donde se toma el MRI; no en el centro"}, where locale field tells that field Description form To struct has en translation.
func (DescriptionL10N) Locale ¶
func (d DescriptionL10N) Locale() string
Locale returns locale for the specified description (To.Description).
type ImgAttach ¶
type ImgAttach struct { Description string `json:"description,omitempty"` MimeType string `json:"mime-type,omitempty"` Filename string `json:"filename,omitempty"` Content Content `json:"content,omitempty"` }
ImgAttach represent information about the image.
type Opt ¶ added in v0.1.2
type Opt func(m map[string]interface{})
Opt describes option signature for the Continue function.
func WithOOBInvitation ¶ added in v0.1.7
func WithOOBInvitation(inv *outofband.Invitation, attachments ...*decorator.Attachment) Opt
WithOOBInvitation is used when introducee wants to provide an out-of-band request. NOTE: Introducee can provide this request only after receiving ProposalMsgType USAGE: event.Continue(WithOOBInvitation(req)).
func WithPublicOOBInvitation ¶ added in v0.1.7
func WithPublicOOBInvitation(inv *outofband.Invitation, to *To) Opt
WithPublicOOBInvitation is used when introducer wants to provide public an out-of-band request. NOTE: Introducer can provide this request only after receiving RequestMsgType USAGE: event.Continue(WithPublicOOBInvitation(req, to)).
func WithRecipients ¶ added in v0.1.2
WithRecipients is used when the introducer does not have a public invitation but he is willing to introduce agents to each other. NOTE: Introducer can provide recipients only after receiving RequestMsgType. USAGE: event.Continue(WithRecipients(to, recipient)).
type PleaseIntroduceTo ¶
type PleaseIntroduceTo struct { // nolint: staticcheck To `json:",squash"` }
PleaseIntroduceTo includes all field from To structure also it has Discovered the field which should be provided by help-me-discover protocol.
type Proposal ¶
type Proposal struct { Type string `json:"@type,omitempty"` ID string `json:"@id,omitempty"` To *To `json:"to,omitempty"` NWise bool `json:"nwise,omitempty"` Thread *decorator.Thread `json:"~thread,omitempty"` Timing *decorator.Timing `json:"~timing,omitempty"` Goal string `json:"goal,omitempty"` GoalCode string `json:"goal_code,omitempty"` }
Proposal defines proposal request.
type Provider ¶ added in v0.1.1
type Provider interface { Messenger() service.Messenger StorageProvider() storage.Provider Service(id string) (interface{}, error) }
Provider contains dependencies for the DID exchange protocol and is typically created by using aries.Context().
type Recipient ¶ added in v0.1.1
type Recipient struct { To *To `json:"to"` Goal string `json:"goal"` GoalCode string `json:"goal_code"` MyDID string `json:"my_did,omitempty"` TheirDID string `json:"their_did,omitempty"` }
Recipient keeps information needed for the service 'To' field is needed for the proposal message 'MyDID' and 'TheirDID' fields are needed for sending messages e.g report-problem, proposal, ack etc.
type Request ¶
type Request struct { Type string `json:"@type,omitempty"` ID string `json:"@id,omitempty"` PleaseIntroduceTo *PleaseIntroduceTo `json:"please_introduce_to,omitempty"` NWise bool `json:"nwise,omitempty"` Timing *decorator.Timing `json:"~timing,omitempty"` }
Request is not part of any state machine, it can be sent at any time, and when it is received, the recipient can choose whether or not to honor it in their own way TODO: need to clarify about decorator ~please_ack and problem_report
should Request contain those fields? What type it should be for each field?
type Response ¶
type Response struct { Type string `json:"@type,omitempty"` ID string `json:"@id,omitempty"` Thread *decorator.Thread `json:"~thread,omitempty"` Approve bool `json:"approve,omitempty"` OOBMessage map[string]interface{} `json:"oob-message,omitempty"` Attachments []*decorator.Attachment `json:"~attach,omitempty"` }
Response message that introducee usually sends in response to an introduction proposal.
type Service ¶
Service for introduce protocol.
func (*Service) ActionContinue ¶ added in v0.1.4
ActionContinue allows proceeding with the action by the piID.
func (*Service) ActionStop ¶ added in v0.1.4
ActionStop allows stopping the action by the piID.
func (*Service) HandleInbound ¶
func (s *Service) HandleInbound(msg service.DIDCommMsg, ctx service.DIDCommContext) (string, error)
HandleInbound handles inbound message (introduce protocol).
func (*Service) HandleOutbound ¶
HandleOutbound handles outbound message (introduce protocol).
func (*Service) Initialize ¶ added in v0.1.8
Initialize initializes the Service. If Initialize succeeds, any further call is a no-op.
type To ¶
type To struct { Name string `json:"name,omitempty"` Description string `json:"description,omitempty"` DescriptionL10N DescriptionL10N `json:"description~l10n,omitempty"` Where string `json:"where,omitempty"` ImgAttach ImgAttach `json:"img~attach,omitempty"` Proposed bool `json:"proposed,omitempty"` }
To introducee descriptor keeps information about the introduction e.g introducer wants to introduce Bot to introducee { "name": "Bob" }.