Documentation
¶
Index ¶
- Constants
- Variables
- func CreateAuthorityRef(host string) basic.DbufValSeq
- func CreateExporterContext(protectedHeaders basic.DbufValSeq, identity basic.DbufValSeq, ...) ([]byte, error)
- func CreateHeaderStoreData(storeId uint64, headerSequence []basic.DbufValSeq) basic.DbufValSeq
- func CreateHeaderStoreDataWithIdentity(storeId uint64, protectedHeaders basic.DbufValSeq, identity basic.DbufValSeq, ...) basic.DbufValSeq
- func CreateHeaderStoreHeader(keyManager KeyManager, storeId uint64, protectedHeaders basic.DbufValSeq, ...) (h basic.DbufValSeq, err error)
- func CreateSigningMessage(exporterContext []byte, exporterOutputPrefix []byte) []byte
- func DeliverMessage(rr *RequestResponse, ctx context.Context, receiveMessage ReceiveMessageFunc, ...) error
- func EmptyHeader() basic.Optional[basic.DbufValSeq]
- func EncodeWrite(w io.Writer, v basic.DbufValSeq) error
- func ErrorHeader(er error) basic.Optional[basic.DbufValSeq]
- func Execute(r io.Reader, w io.Writer, tc *HeaderStoreCache, ...) (streamGroup uint32, err error)
- func GetAuthorityRef(protectedHeaders basic.DbufValSeq) (basic.DbufValSeq, error)
- func GetKey(keyManager KeyManager, authorityRef basic.DbufValSeq, conn Connection, ...) (identity basic.DbufValSeq, keyId basic.DbufValSeq, keyData basic.DbufValSeq, ...)
- func GetSingleBody(r io.Reader, tp HeaderStoreProperties, maxBufferSize int) (basic.DbufVal, error)
- func HeaderStoreError(err error) error
- func InitRequest(rr *RequestResponse, headerInitial basic.InitialDecode, ctx context.Context) (err error)
- func MakeErrorOnOtherStream(streamID uint64, v basic.DbufValSeq) basic.DbufValSeq
- func NotAuthenticated() basic.DbufError
- func ReadCheckValue(r io.Reader, ccs basic.CheckCompleteState, maxSize int) (basic.DbufVal, bool, error)
- func ReadFull(r io.Reader, buf []byte) error
- func ReadHeaderInitial(r io.Reader, firstByte byte, useFirstByte bool) (basic.InitialDecode, error)
- func ReadStreamGroup(r io.Reader) (streamGroup uint32, firstByte byte, useFirstByte bool, err error)
- func Respond(rr *RequestResponse, w io.Writer) (err error)
- func RoutePaths(rr *RequestResponse, receiveMessage ReceiveMessageFunc, ctx context.Context)
- func SendMessage(headerStoreState *HeaderStoreState, authorityRef basic.DbufValSeq, ...) error
- func SetupNewIdentity(keyManager KeyManager, authorityRef basic.DbufValSeq, conn Connection, ...) error
- func ValidateKeyParams(tc *HeaderStoreCache, ci *HeaderStoreCacheItem, keyData []byte) error
- func ValueHeader(v basic.DbufValSeq) basic.Optional[basic.DbufValSeq]
- func WriteIdentity(rr *RequestResponse, ctx context.Context) error
- func WriteRequest(w io.Writer, req Request) error
- type BodyLengthProperties
- type Connection
- type ContentProperties
- type HeaderParams
- type HeaderStoreCache
- type HeaderStoreCacheItem
- type HeaderStoreParams
- type HeaderStoreProperties
- type HeaderStoreState
- type IdentityWritePayload
- type KeyManager
- type PathProperties
- type ReceiveMessageFunc
- type Request
- type RequestResponse
- type Response
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_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_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 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 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 HeaderStoreError ¶
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 ReadCheckValue ¶
func ReadHeaderInitial ¶
func ReadStreamGroup ¶
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 ValueHeader ¶
func ValueHeader(v basic.DbufValSeq) basic.Optional[basic.DbufValSeq]
func WriteIdentity ¶
func WriteIdentity(rr *RequestResponse, ctx context.Context) error
Types ¶
type BodyLengthProperties ¶
type BodyLengthProperties struct {
HasValue bool
Value basic.DbufVal
HasLength bool
Length uint64
HasIndefiniteLength bool
}
func GetBodyLengthProperties ¶
func GetBodyLengthProperties(tp HeaderStoreProperties) (BodyLengthProperties, error)
type Connection ¶
type Connection interface {
OpenStreamSync(ctx context.Context) (io.ReadWriteCloser, error)
HeaderStoreCache() *HeaderStoreCache
}
type ContentProperties ¶
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 ¶
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 (*HeaderStoreCache) Load ¶
func (c *HeaderStoreCache) Load(id uint32) (*HeaderStoreCacheItem, error)
func (*HeaderStoreCache) Store ¶
func (c *HeaderStoreCache) Store(ci *HeaderStoreCacheItem, id uint32, ctx context.Context) error
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 (i HeaderStoreCacheItem) Identity() basic.DbufValString
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 ¶
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 SendRequestCheckError ¶
Click to show internal directories.
Click to hide internal directories.