Documentation ¶
Overview ¶
Package mesg is implementation package for didcomm messages. See related package aries which is for our legacy messages. Both aries and mesg messages share same interfaces defined in the didcomm package. didcomm defines a message factor interfaces as well. With the help of the factoring system, the actual messages can be constructed from the incoming messages with the correct type. We use statically typed JSON messages i.e. they are always mapped to corresponding Go struct.
Because the development was started with indy's first agent to agent protocol, and because the message types were taken from it, we had to refactor message types when we implemented aries protocol. With the current didcomm package based messaging system we can use polymorphic approach to all of the didcomm messages. We doesn't need to know if the message is in coming indy message or aries message.
Index ¶
- Variables
- func NewPayloadBase(id, t string) didcomm.Payload
- func NewPayloadImpl(pl *Payload) didcomm.Payload
- func NewPayloadWithMsg(id, t string, m *Msg) didcomm.Payload
- func SubFromJSON(s string) (sub map[string]interface{})
- func SubFromJSONData(data []byte) (sub map[string]interface{})
- type Msg
- type MsgFactor
- type MsgImpl
- func (m *MsgImpl) AnonEncrypt(did *ssi.DID) didcomm.Msg
- func (m *MsgImpl) ConnectionInvitation() *didexchange.Invitation
- func (m *MsgImpl) CredDefID() *string
- func (m *MsgImpl) CredentialAttributes() *[]didcomm.CredentialAttribute
- func (m *MsgImpl) Decr(cp sec.Pipe) didcomm.Msg
- func (m *MsgImpl) Did() string
- func (m *MsgImpl) Encr(cp sec.Pipe) didcomm.Msg
- func (m *MsgImpl) Encrypted() string
- func (m *MsgImpl) Endpoint() service.Addr
- func (m *MsgImpl) Error() string
- func (m *MsgImpl) FieldObj() interface{}
- func (m *MsgImpl) ID() string
- func (m *MsgImpl) Info() string
- func (m *MsgImpl) JSON() []byte
- func (m *MsgImpl) Name() string
- func (m *MsgImpl) Nonce() string
- func (m *MsgImpl) ProofAttributes() *[]didcomm.ProofAttribute
- func (m *MsgImpl) ProofValues() *[]didcomm.ProofValue
- func (m *MsgImpl) Ready() bool
- func (m *MsgImpl) ReceiverEP() service.Addr
- func (m *MsgImpl) Schema() *ssi.Schema
- func (m *MsgImpl) SetBody(b interface{})
- func (m *MsgImpl) SetDid(s string)
- func (m *MsgImpl) SetError(s string)
- func (m *MsgImpl) SetID(id string)
- func (m *MsgImpl) SetInfo(s string)
- func (m *MsgImpl) SetInvitation(i *didexchange.Invitation)
- func (m *MsgImpl) SetNonce(n string)
- func (m *MsgImpl) SetReady(yes bool)
- func (m *MsgImpl) SetSchema(sch *ssi.Schema)
- func (m *MsgImpl) SetSubLevelID(s string)
- func (m *MsgImpl) SetSubMsg(sm map[string]interface{})
- func (m *MsgImpl) SetType(t string)
- func (m *MsgImpl) SetVerKey(s string)
- func (m *MsgImpl) SubLevelID() string
- func (m *MsgImpl) SubMsg() map[string]interface{}
- func (m *MsgImpl) Thread() *decorator.Thread
- func (m *MsgImpl) TimestampMs() *uint64
- func (m *MsgImpl) Type() string
- func (m *MsgImpl) VerKey() string
- type Payload
- type PayloadFactor
- type PayloadImpl
- func (pl *PayloadImpl) Creator() didcomm.PayloadFactor
- func (pl *PayloadImpl) FieldObj() interface{}
- func (pl *PayloadImpl) ID() string
- func (pl *PayloadImpl) Message() didcomm.Msg
- func (pl *PayloadImpl) MsgCreator() didcomm.MsgFactor
- func (pl *PayloadImpl) MsgHdr() didcomm.MessageHdr
- func (pl *PayloadImpl) SetThread(t *decorator.Thread)
- func (pl *PayloadImpl) SetType(t string)
- func (pl *PayloadImpl) Thread() *decorator.Thread
- func (pl *PayloadImpl) ThreadID() string
- func (pl *PayloadImpl) Type() string
Constants ¶
This section is empty.
Variables ¶
var MsgCreator = MsgFactor{}
var PayloadCreator = PayloadFactor{}
Functions ¶
func NewPayloadBase ¶
func NewPayloadImpl ¶
func SubFromJSON ¶
func SubFromJSONData ¶
Types ¶
type Msg ¶
type Msg struct { Error string `json:"error,omitempty"` // If error happens includes error msg Encrypted string `json:"encrypted,omitempty"` // If the whole msg is encrypted is transferred in this field Did string `json:"did,omitempty"` // Usually senders DID and corresponding VerKey Nonce string `json:"nonce,omitempty"` // Important field to keep track receiving/sending sync VerKey string `json:"verkey,omitempty"` // Senders Verkey for DID RcvrEndp string `json:"rcvr_endp,omitempty"` // Receivers own endpoint, usually the public URL RcvrKey string `json:"rcvr_key,omitempty"` // Receiver endpoint ver key Endpoint string `json:"endpoint,omitempty"` // Multipurpose field which still is under design EndpVerKey string `json:"endp_ver_key,omitempty"` // VerKey associated to endpoint i.e. payload verkey Name string `json:"name,omitempty"` // Multipurpose field which still is under design Info string `json:"info,omitempty"` // Used for transferring additional info like the Msg in IM-cases, and Pairwise name TimestampMs *uint64 `json:"timestamp,omitempty"` // Used for transferring timestamp info Invitation *didexchange.Invitation `json:"invitation,omitempty"` // Used for connection invitation CredentialAttrs *[]didcomm.CredentialAttribute `json:"credAttributes,omitempty"` // Used for credential attributes values CredDefID *string `json:"credDefId,omitempty"` // Used for credential definition ID ProofAttrs *[]didcomm.ProofAttribute `json:"proofAttributes,omitempty"` // Used for proof attributes ProofValues *[]didcomm.ProofValue `json:"proofValues,omitempty"` // Used for proof values ID string `json:"id,omitempty"` // Used for transferring additional ID like the Cred Def ID Ready bool `json:"ready,omitempty"` // In queries tells if something is ready when true Schema *ssi.Schema `json:"schema,omitempty"` // Schema data for creating schemas for the cred defs Msg map[string]interface{} `json:"msg,omitempty"` // Generic sub message to transport JSON between Indy SDK and EAs Body interface{} `json:"body,omitempty"` // Task status data }
The Msg is multipurpose way to transfer messages inside actual Payload which will be standardized hopefully by hyperledger-indy or someone. The Msg works like C language union i.e. if Error happened is filled and others are empty. Very similarly works Encrypted field. Please feel free to add new fields if needed.
func CreateMsg ¶
CreateMsg is a helper function for creating MsgInits to help constructing "wrappers" for Msgs.
func (*Msg) SetEndpoint ¶
func (*Msg) SetRcvrEndp ¶
type MsgFactor ¶
type MsgFactor struct{}
func (MsgFactor) NewMessage ¶
func (f MsgFactor) NewMessage(data []byte) didcomm.MessageHdr
type MsgImpl ¶
type MsgImpl struct {
*Msg
}
func (*MsgImpl) ConnectionInvitation ¶
func (m *MsgImpl) ConnectionInvitation() *didexchange.Invitation
func (*MsgImpl) CredentialAttributes ¶
func (m *MsgImpl) CredentialAttributes() *[]didcomm.CredentialAttribute
func (*MsgImpl) ProofAttributes ¶
func (m *MsgImpl) ProofAttributes() *[]didcomm.ProofAttribute
func (*MsgImpl) ProofValues ¶
func (m *MsgImpl) ProofValues() *[]didcomm.ProofValue
func (*MsgImpl) ReceiverEP ¶
func (*MsgImpl) SetInvitation ¶
func (m *MsgImpl) SetInvitation(i *didexchange.Invitation)
func (*MsgImpl) SetSubLevelID ¶
func (*MsgImpl) SubLevelID ¶
func (*MsgImpl) TimestampMs ¶
type Payload ¶
type Payload struct { ID string `json:"id"` Type string `json:"type"` Message Msg `json:"message"` }
func NewPayload ¶
func (*Payload) ProtocolMsg ¶
type PayloadFactor ¶
type PayloadFactor struct{}
func (PayloadFactor) New ¶
func (f PayloadFactor) New(pi didcomm.PayloadInit) didcomm.Payload
func (PayloadFactor) NewFromData ¶
func (f PayloadFactor) NewFromData(data []byte) didcomm.Payload
func (PayloadFactor) NewMsg ¶
func (f PayloadFactor) NewMsg(id, t string, m didcomm.MessageHdr) didcomm.Payload
type PayloadImpl ¶
type PayloadImpl struct {
*Payload
}
func (*PayloadImpl) Creator ¶
func (pl *PayloadImpl) Creator() didcomm.PayloadFactor
func (*PayloadImpl) FieldObj ¶
func (pl *PayloadImpl) FieldObj() interface{}
func (*PayloadImpl) ID ¶
func (pl *PayloadImpl) ID() string
func (*PayloadImpl) Message ¶
func (pl *PayloadImpl) Message() didcomm.Msg
func (*PayloadImpl) MsgCreator ¶
func (pl *PayloadImpl) MsgCreator() didcomm.MsgFactor
func (*PayloadImpl) MsgHdr ¶
func (pl *PayloadImpl) MsgHdr() didcomm.MessageHdr
func (*PayloadImpl) SetThread ¶
func (pl *PayloadImpl) SetThread(t *decorator.Thread)
func (*PayloadImpl) SetType ¶
func (pl *PayloadImpl) SetType(t string)
func (*PayloadImpl) Thread ¶
func (pl *PayloadImpl) Thread() *decorator.Thread
func (*PayloadImpl) ThreadID ¶
func (pl *PayloadImpl) ThreadID() string
func (*PayloadImpl) Type ¶
func (pl *PayloadImpl) Type() string