comm

package
v1.1.5 Latest Latest
Warning

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

Go to latest
Published: Nov 4, 2022 License: MIT Imports: 19 Imported by: 0

Documentation

Index

Constants

View Source
const BASIC_MSG_TYPE = "https://didcomm.org/basicmessage/2.0/message"
View Source
const (
	CallbackAssociateDIDType = "DID"
)
View Source
const ENCRYPTED_MSG_TYP = "application/didcomm-encrypted+json"
View Source
const ENCRYPTED_MSG_TYPE = "https://impervious.ai/didcomm/encryptedmessage/1.0/message"
View Source
const PLAIN_MSG_TYP = "application/didcomm-plain+json"
View Source
const ROUTING_MSG_TYPE = "https://didcomm.org/routing/2.0"
View Source
const SERVICE_ENDPOINT_DIDCOMM_MESSAGING_TYPE = "DIDCommMessaging"
View Source
const VERIFICATION_METHOD_JSON_WEBKEY_TYPE = "JsonWebKey2020"

Variables

This section is empty.

Functions

func ParseDIDEncryptionKeys

func ParseDIDEncryptionKeys(vms []did.Verification) ([]ecdsa.PublicKey, error)

ParseDIDEncryptionKeys will parse a DID Document's verification keys and look for keys that we support for encrypting to. Right now that's just P-384 elliptic keys.

func ParseDIDEndpoints

func ParseDIDEndpoints(endpoints []did.Service) ([]didCommEndpoint, error)

func ParseMsgFromBytes

func ParseMsgFromBytes(msg []byte, amount int64) (interface{}, error)

func ParseMsgFromReq

func ParseMsgFromReq(msg io.ReadCloser) (interface{}, error)

func PriortizeEndpoints

func PriortizeEndpoints(endpoints []didCommEndpoint, amt int64, settings *MessageSettings) []didCommEndpoint

PriortizeEndpoints will reorder all of the endpoints to prioritize different types. Current order is WS, HTTP, LN. Different logic can be applied in the future.

Types

type Attachment

type Attachment struct {
	ID          string         `json:"id"`
	Description string         `json:"description"`
	MediaType   string         `json:"media_type"`
	Data        AttachmentData `json:"data"`
}

type AttachmentData

type AttachmentData struct {
	JSON interface{} `json:"json"`
}

type BasicMsgBody

type BasicMsgBody struct {
	Content string `json:"content"`
}

func ParseBasicMsgBody

func ParseBasicMsgBody(msg interface{}) (*BasicMsgBody, error)

type CallbackAssociateDIDMessage

type CallbackAssociateDIDMessage struct {
	DID string
}

func ParseCallbackAssociateDIDTypeMessage

func ParseCallbackAssociateDIDTypeMessage(message CallbackMessage) (*CallbackAssociateDIDMessage, error)

type CallbackMessage

type CallbackMessage struct {
	Type    string
	Message interface{}
}

type DIDComm

type DIDComm interface {
	SendMsg(*DIDCommMsg, int64, []id.Service, *MessageSettings) (string, error)
	CheckSendMsg(*DIDCommMsg, int64, []id.Service, *MessageSettings) (bool, error)
	CheckWebsocketConnections() ([]string, error)
	Stop() error
}

func NewDIDComm

func NewDIDComm(config *DIDCommConfig) (DIDComm, error)

type DIDCommConfig

type DIDCommConfig struct {
	IncomingDataChan chan IncomingDIDMessage
	LightningManager DIDCommTransport
	HttpComm         DIDCommTransport
	WebsocketDIDComm DIDCommTransport
	Identity         id.Identity
	MessagesManager  messages.MessageManager
}

type DIDCommMsg

type DIDCommMsg struct {
	Typ         string       `json:"typ"`
	ID          string       `json:"id"`
	THID        string       `json:"thid"`
	PTHID       string       `json:"pthid"`
	Type        string       `json:"type"` // Application/consumer specific
	From        string       `json:"from"`
	To          []string     `json:"to"`
	CreatedTime int64        `json:"created_time"`
	ExpiresTime int64        `json:"expires_time"`
	Body        interface{}  `json:"body"` // Body structure depends on Type
	Attachments []Attachment `json:"attachments"`

	// Internal metadata just for Impervious use
	InternalMetadata map[string]interface{} `json:"internal_metadata"` // TODO do not export when sending across the wire

}

func NewBasicMsg

func NewBasicMsg(content string) *DIDCommMsg

func NewDIDCommMsg

func NewDIDCommMsg() *DIDCommMsg

NewDIDCommMsg creates the base of a new DIDComm Message type. Additional parameters will need to be put in based on its use.

func NewEncryptedMsg

func NewEncryptedMsg(encryptedMsg *EncryptedMsg, from, to string) *DIDCommMsg

func NewForwardMsg

func NewForwardMsg(msgToForward interface{}, from, to, typ string) *DIDCommMsg

func ParseDIDCommMsg

func ParseDIDCommMsg(msg interface{}) (*DIDCommMsg, error)

func ParseDIDCommMsgFromBytes

func ParseDIDCommMsgFromBytes(msg []byte, amount int64) (*DIDCommMsg, error)

func (*DIDCommMsg) AddAmountMetadata

func (s *DIDCommMsg) AddAmountMetadata(amt int64)

func (*DIDCommMsg) AddWebsocketId

func (s *DIDCommMsg) AddWebsocketId(websocketId string)

func (*DIDCommMsg) GetAmountMetadata

func (s *DIDCommMsg) GetAmountMetadata() int64

func (*DIDCommMsg) GetWebsocketId

func (s *DIDCommMsg) GetWebsocketId() string

type DIDCommTransport

type DIDCommTransport interface {
	SendData(endpoint string, msgData *DIDCommMsg) error
	CheckMsg(endpoint string, msgData *DIDCommMsg) bool
}

type DIDCommTransportType

type DIDCommTransportType int
const (
	DIDCommTransportHttp DIDCommTransportType = iota + 1
	DIDCommTransportLightning
	DIDCommTransportWebsocket
)

type EncryptedMsg

type EncryptedMsg struct {
	Ciphertext string `json:"ciphertext"`
	Protected  string `json:"protected"`
	Tag        string `json:"tag"`
	Iv         string `json:"iv"`
}

Encrypted Messaging

func ParseEncryptedMsg

func ParseEncryptedMsg(msg interface{}) (*EncryptedMsg, error)

type EncryptedMsgDetailsBody

type EncryptedMsgDetailsBody struct {
	AttachmentId string `json:"attachment_id"`
}

Encrypted attachment messaging

func ParseEncryptedMsgDetailsBody

func ParseEncryptedMsgDetailsBody(msg interface{}) (*EncryptedMsgDetailsBody, error)

type ForwardMsgBody

type ForwardMsgBody struct {
	Next string `json:"next"`
}

Forward messaging

type HttpComm

type HttpComm interface {
	SendData(endpoint string, msg *DIDCommMsg) error
	CheckMsg(endpoint string, msg *DIDCommMsg) bool
	Stop() error
	ServeHTTP(res http.ResponseWriter, req *http.Request)
}

HttpComm is the transport mechanism for sending and receiving DIDComm messages over an http socket.

func NewHttpComm

func NewHttpComm(cfg *HttpCommConfig) (HttpComm, error)

type HttpCommConfig

type HttpCommConfig struct {
	IncomingDataChan chan IncomingDIDMessage
}

type IncomingDIDMessage

type IncomingDIDMessage struct {
	Message  interface{}
	Callback *func(CallbackMessage) error
}

type MessageSettings

type MessageSettings struct {
	ProtocolPreferences []string
	SkipMessageSaving   bool
}

type SignedMsg

type SignedMsg struct {
	Payload   string `json:"payload"`
	Protected string `json:"protected"`
	Signature string `json:"signature"`
}

func ParseSignedMsg

func ParseSignedMsg(msg interface{}) (*SignedMsg, error)

type WebsocketComm

type WebsocketComm interface {
	SendData(endpoint string, msg *DIDCommMsg) error
	CheckMsg(endpoint string, msgData *DIDCommMsg) bool
	Stop() error
	ServeHTTP(res http.ResponseWriter, req *http.Request)
	ConnectedClients() []string
}

WebsocketComm is the transport mechanism for sending and receiving DIDComm messages over websockets.

func NewWebsocketComm

func NewWebsocketComm(cfg *WebsocketCommConfig) (WebsocketComm, error)

type WebsocketCommConfig

type WebsocketCommConfig struct {
	IncomingDataChan chan IncomingDIDMessage
}

Directories

Path Synopsis
Package mock is a generated GoMock package.
Package mock is a generated GoMock package.

Jump to

Keyboard shortcuts

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