protocol

package
v0.0.0-...-4d8fa54 Latest Latest
Warning

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

Go to latest
Published: Aug 2, 2026 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ExporterOutputPrefixSize = 32
	ExporterOutputSuffixSize = 16
	ExporterLabel            = "EXPORTER: DBUF demo transport authentication"
	SignatureInputPrefix     = "DBUF demo transport authentication"
)
View Source
const (
	Registry_reference         = 8
	Registry_authority_marker  = 9
	Registry_host              = 10
	Registry_header_store      = 11
	Registry_identity          = 135
	Registry_identity_key      = 136
	Registry_identity_recovery = 137
	Registry_deliver_message   = 138
	Registry_ed25519           = 139
	Registry_body_length       = 140
	Registry_stream_group      = 141
	Registry_header            = 142
	Registry_body              = 143
	Registry_footer            = 144
	Registry_not_authenticated = 145
	Registry_stream_id         = 146
	Registry_port              = 147
)
View Source
const (
	HeaderStoreCacheMaxSize = 1 << 16
	SmallRequestBufferSize  = 1 << 14
	ALPN                    = "dbuf/demo"
)
View Source
const (
	MaxHeaderSize = 1 << 14
)

Variables

View Source
var ErrKeyManagerKeyNotFound = errors.New("Key not found")

Functions

func CreateAuthorityRef

func CreateAuthorityRef(host string) basic.DbufValSeq

func CreateExporterContext

func CreateExporterContext(protectedHeaders basic.DbufValSeq, identity basic.DbufValSeq, identityKey basic.DbufValSeq, keyData basic.DbufValSeq) ([]byte, error)

func CreateHeaderStoreData

func CreateHeaderStoreData(storeId uint64, headerSequence []basic.DbufValSeq) basic.DbufValSeq

func CreateHeaderStoreDataWithIdentity

func CreateHeaderStoreDataWithIdentity(storeId uint64, protectedHeaders basic.DbufValSeq, identity basic.DbufValSeq, identityKey basic.DbufValSeq, exporterContextSuffix basic.DbufValSeq, signature basic.DbufValSeq) basic.DbufValSeq

func CreateHeaderStoreHeader

func CreateHeaderStoreHeader(keyManager KeyManager, storeId uint64, protectedHeaders basic.DbufValSeq, conn Connection, ctx context.Context) (h basic.DbufValSeq, err error)

func CreateSigningMessage

func CreateSigningMessage(exporterContext []byte, exporterOutputPrefix []byte) []byte

func DeliverMessage

func DeliverMessage(rr *RequestResponse, ctx context.Context, receiveMessage ReceiveMessageFunc, maxMessageSize int) error

func EmptyHeader

func EmptyHeader() basic.Optional[basic.DbufValSeq]

func EncodeWrite

func EncodeWrite(w io.Writer, v basic.DbufValSeq) error

func ErrorHeader

func ErrorHeader(er error) basic.Optional[basic.DbufValSeq]

func Execute

func Execute(r io.Reader, w io.Writer, tc *HeaderStoreCache, routeFunc func(rr *RequestResponse, ctx context.Context) error, ctx context.Context) (streamGroup uint32, err error)

func GetAuthorityRef

func GetAuthorityRef(protectedHeaders basic.DbufValSeq) (basic.DbufValSeq, error)

func GetKey

func GetKey(keyManager KeyManager, authorityRef basic.DbufValSeq, conn Connection, ctx context.Context) (identity basic.DbufValSeq, keyId basic.DbufValSeq, keyData basic.DbufValSeq, err error)

func GetSingleBody

func GetSingleBody(r io.Reader, tp HeaderStoreProperties, maxBufferSize int) (basic.DbufVal, error)

func HeaderStoreError

func HeaderStoreError(err error) error

func InitRequest

func InitRequest(rr *RequestResponse, headerInitial basic.InitialDecode, ctx context.Context) (err error)

func MakeErrorOnOtherStream

func MakeErrorOnOtherStream(streamID uint64, v basic.DbufValSeq) basic.DbufValSeq

func NotAuthenticated

func NotAuthenticated() basic.DbufError

func ReadCheckValue

func ReadCheckValue(r io.Reader, ccs basic.CheckCompleteState, maxSize int) (basic.DbufVal, bool, error)

func ReadFull

func ReadFull(r io.Reader, buf []byte) error

func ReadHeaderInitial

func ReadHeaderInitial(r io.Reader, firstByte byte, useFirstByte bool) (basic.InitialDecode, error)

func ReadStreamGroup

func ReadStreamGroup(r io.Reader) (streamGroup uint32, firstByte byte, useFirstByte bool, err error)

func Respond

func Respond(rr *RequestResponse, w io.Writer) (err error)

func RoutePaths

func RoutePaths(rr *RequestResponse, receiveMessage ReceiveMessageFunc, ctx context.Context)

func SendMessage

func SendMessage(headerStoreState *HeaderStoreState, authorityRef basic.DbufValSeq, message basic.DbufValSeq, ctx context.Context) error

func SetupNewIdentity

func SetupNewIdentity(keyManager KeyManager, authorityRef basic.DbufValSeq, conn Connection, ctx context.Context) error

func ValidateKeyParams

func ValidateKeyParams(tc *HeaderStoreCache, ci *HeaderStoreCacheItem, keyData []byte) error

func WriteIdentity

func WriteIdentity(rr *RequestResponse, ctx context.Context) error

func WriteRequest

func WriteRequest(w io.Writer, req Request) error

Types

type BodyLengthProperties

type BodyLengthProperties struct {
	HasValue            bool
	Value               basic.DbufVal
	HasLength           bool
	Length              uint64
	HasIndefiniteLength bool
}

type Connection

type Connection interface {
	OpenStreamSync(ctx context.Context) (io.ReadWriteCloser, error)
	HeaderStoreCache() *HeaderStoreCache
}

type ContentProperties

type ContentProperties struct {
	HasBody   bool
	Body      []basic.DbufVal
	HasFooter bool
	Footer    basic.DbufVal
}

func GetContent

func GetContent(r io.Reader, clp BodyLengthProperties, maxBufferSize int) (ContentProperties, error)

func (ContentProperties) GetSingleBody

func (c ContentProperties) GetSingleBody() (basic.DbufVal, error)

type HeaderParams

type HeaderParams struct {
	Header        basic.DbufVal
	HeaderDetails []basic.DbufVal
}

func GetHeaderParams

func GetHeaderParams(r io.Reader, headerInitial basic.InitialDecode) (params HeaderParams, err error)

type HeaderStoreCache

type HeaderStoreCache struct {
	Mutex                sync.Mutex
	Cache                map[uint32]*HeaderStoreCacheItem
	CurrentSize          int
	MaxSize              int
	Storage              data.Storage
	ExportKeyingMaterial func(label string, context []byte, length int) ([]byte, error)
}

func MakeHeaderStoreCache

func MakeHeaderStoreCache(store data.Storage, exportKeyingMaterial func(label string, context []byte, length int) ([]byte, error)) *HeaderStoreCache

func (*HeaderStoreCache) Load

func (*HeaderStoreCache) Store

type HeaderStoreCacheItem

type HeaderStoreCacheItem struct {
	StoreParams     []basic.DbufValString
	IsAuthenticated bool
}

func (HeaderStoreCacheItem) Authority

func (i HeaderStoreCacheItem) Authority() []basic.DbufVal

func (HeaderStoreCacheItem) GetSize

func (i HeaderStoreCacheItem) GetSize() int

func (HeaderStoreCacheItem) Identity

func (HeaderStoreCacheItem) IdentityKey

func (i HeaderStoreCacheItem) IdentityKey() basic.DbufValString

func (HeaderStoreCacheItem) ProtectedHeaders

func (i HeaderStoreCacheItem) ProtectedHeaders() basic.DbufValString

type HeaderStoreParams

type HeaderStoreParams struct {
	IsPresent   bool
	IsStore     bool
	IsLoad      bool
	LoadID      uint32
	StoreID     uint32
	StoreParams []basic.DbufVal
}

func GetHeaderStoreParams

func GetHeaderStoreParams(seq []basic.DbufVal) (HeaderStoreParams, error)

type HeaderStoreProperties

type HeaderStoreProperties struct {
	Headers   map[basic.DbufValString]basic.DbufVal
	CacheItem *HeaderStoreCacheItem
}

func GetHeaderStoreProperties

func GetHeaderStoreProperties(headerStoreCache *HeaderStoreCache, header basic.DbufVal, headerDetails []basic.DbufVal, ctx context.Context) (HeaderStoreProperties, error)

func ReadResponse

func ReadResponse(r io.Reader, tc *HeaderStoreCache, ctx context.Context) (tp HeaderStoreProperties, err error)

type HeaderStoreState

type HeaderStoreState struct {
	StoreIds    map[string]uint64
	NextStoreId uint64
	KeyManager  KeyManager
	Connection  Connection
	Mutex       sync.Mutex
}

func MakeHeaderStoreState

func MakeHeaderStoreState(keyManager KeyManager, connection Connection) *HeaderStoreState

func (*HeaderStoreState) GetHeaderStoreHeader

func (s *HeaderStoreState) GetHeaderStoreHeader(protectedHeaders basic.DbufValSeq, ctx context.Context) (h basic.DbufValSeq, err error)

type IdentityWritePayload

type IdentityWritePayload struct {
	Identity         basic.Optional[basic.DbufVal]
	IdentityKeyId    basic.Optional[basic.DbufVal]
	IdentityKeyData  basic.Optional[basic.DbufVal]
	IdentityRecovery basic.Optional[basic.DbufVal]
}

func ParseIdentityWrite

func ParseIdentityWrite(body basic.DbufVal) (IdentityWritePayload, error)

type KeyManager

type KeyManager interface {
	CreateKey(authorityRef basic.DbufValSeq) (keyId basic.DbufValSeq, keyData basic.DbufValSeq, err error)
	InitIdentity(authorityRef basic.DbufValSeq, identity basic.DbufValSeq) error
	GetKey(authorityRef basic.DbufValSeq) (identity basic.DbufValSeq, keyId basic.DbufValSeq, keyData basic.DbufValSeq, err error)
	GetSignature(authorityRef basic.DbufValSeq, message []byte) (signature basic.DbufValSeq, err error)
}

type PathProperties

type PathProperties struct {
	Authority []basic.DbufVal
	SubPath   []basic.DbufVal
}

func GetPathProperties

func GetPathProperties(tp HeaderStoreProperties) (PathProperties, error)

type ReceiveMessageFunc

type ReceiveMessageFunc func(message basic.DbufVal, authenticatedIdentity basic.DbufValString) error

type Request

type Request struct {
	StreamGroup uint64
	Header      basic.DbufValSeq
	Body        io.Reader
}

func CreateRequest

func CreateRequest(headerSequence []basic.DbufValSeq, body io.Reader) Request

func CreateRequestForDeliverMessage

func CreateRequestForDeliverMessage(message basic.DbufValSeq, headerStore basic.DbufValSeq) Request

func CreateRequestForNewIdentity

func CreateRequestForNewIdentity(authorityRef basic.DbufValSeq, keyId basic.DbufValSeq, keyData basic.DbufValSeq) Request

type RequestResponse

type RequestResponse struct {
	RequestReader                io.Reader
	RequestStreamGroup           uint32
	RequestHeaderParams          HeaderParams
	RequestHeaderStoreProperties HeaderStoreProperties
	RequestPathProperties        PathProperties
	HeaderStoreCache             *HeaderStoreCache
	ResponseHeaders              basic.Optional[basic.DbufValSeq]
	ResponseBody                 basic.Optional[basic.DbufValSeq]
	ResponseReader               io.Reader
	ResponseError                error
}

type Response

type Response struct {
	HeaderStoreProperties HeaderStoreProperties
	Body                  io.Reader
}

func SendRequest

func SendRequest(conn Connection, req Request, ctx context.Context) (re Response, err error)

func SendRequestCheckError

func SendRequestCheckError(conn Connection, req Request, ctx context.Context) (Response, error)

Jump to

Keyboard shortcuts

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