format

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Mar 21, 2024 License: Apache-2.0 Imports: 2 Imported by: 0

Documentation

Overview

Package format provides set of interfaces for SDK message format.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BodyFrame added in v0.3.0

type BodyFrame interface {
	Serializable

	// IsFinal indicates true if the frame is final.
	IsFinal() bool

	// SequenceNumber returns the frame sequence number.
	SequenceNumber() int

	// IV returns the frame IV.
	IV() []byte

	// EncryptedContent returns the frame encrypted content.
	EncryptedContent() []byte

	// AuthenticationTag returns the frame authentication tag.
	AuthenticationTag() []byte
}

BodyFrame contains information about the body frame.

type Deserializer added in v0.3.0

type Deserializer interface {
	// DeserializeHeader deserializes a message header from a buffer.
	// It takes a buffer and a maximum number of encrypted data keys as input.
	// It returns a MessageHeader, MessageHeaderAuth, and an error if any.
	DeserializeHeader(buf *bytes.Buffer, maxEncryptedDataKeys int) (MessageHeader, MessageHeaderAuth, error)

	// DeserializeBody deserializes a message body from a buffer.
	// It takes a buffer, an algorithm suite, and a frame length as input.
	// It returns a MessageBody and an error if any.
	DeserializeBody(buf *bytes.Buffer, alg *suite.AlgorithmSuite, frameLen int) (MessageBody, error)

	// DeserializeFooter deserializes a message footer from a buffer.
	// It takes a buffer and an algorithm suite as input.
	// It returns a MessageFooter and an error if any.
	DeserializeFooter(buf *bytes.Buffer, alg *suite.AlgorithmSuite) (MessageFooter, error)
}

Deserializer defines methods for deserializing encrypted message components.

type HeaderParams added in v0.3.0

type HeaderParams struct {
	AlgorithmSuite     *suite.AlgorithmSuite
	MessageID          []byte
	EncryptionContext  suite.EncryptionContext
	EncryptedDataKeys  []MessageEDK
	ContentType        suite.ContentType
	FrameLength        int
	AlgorithmSuiteData []byte
}

HeaderParams contains the parameters to be used to create MessageHeader.

type MessageAAD

type MessageAAD interface {
	Serializable

	// EncryptionContext returns the encryption context.
	EncryptionContext() suite.EncryptionContext
}

MessageAAD contains information about the additional authenticated data.

type MessageBody added in v0.3.0

type MessageBody interface {
	Serializable

	// Frames returns the body frames.
	Frames() []BodyFrame

	// AddFrame adds new BodyFrame to the body.
	AddFrame(final bool, seqNum int, IV []byte, contentLength int, ciphertext, authTag []byte) error
}

MessageBody contains information about the message body.

type MessageEDK

type MessageEDK interface {
	Serializable

	// ProviderID returns the provider ID.
	ProviderID() string

	// ProviderInfo returns the provider info.
	ProviderInfo() string

	// EncryptedDataKey returns the encrypted data key.
	EncryptedDataKey() []byte
}

MessageEDK contains information about the encrypted data key.

type MessageFooter added in v0.3.0

type MessageFooter interface {
	Serializable

	// SignLen returns the length of the signature.
	SignLen() int

	// Signature returns the signature.
	Signature() []byte
}

MessageFooter contains information about the message footer.

type MessageHeader

type MessageHeader interface {
	Serializable
	MessageHeaderBase

	// Type returns the message type. Present only in V1.
	Type() MessageType

	// Reserved returns the reserved bytes. Present only in V1.
	Reserved() []byte

	// IVLength returns the length of the IV. Present only in V1.
	IVLength() int

	// AlgorithmSuiteData returns the algorithm suite data. Present only in V2.
	AlgorithmSuiteData() []byte
}

MessageHeader contains information about the message header.

type MessageHeaderAuth

type MessageHeaderAuth interface {
	Serializable

	// AuthData returns the authentication data.
	AuthData() []byte

	// IV returns the IV. Present only in V1.
	IV() []byte
}

MessageHeaderAuth contains information about the message header authentication.

type MessageHeaderBase added in v0.4.0

type MessageHeaderBase interface {
	// Version returns the message format version.
	Version() suite.MessageFormatVersion

	// AlgorithmSuite returns the algorithm suite used with the message.
	AlgorithmSuite() *suite.AlgorithmSuite

	// MessageID returns the message ID.
	MessageID() []byte

	// AADLength returns the length of the additional authenticated data.
	AADLength() int

	// AADData returns the additional authenticated data.
	AADData() MessageAAD

	// EncryptedDataKeyCount returns the number of encrypted data keys.
	EncryptedDataKeyCount() int

	// EncryptedDataKeys returns the encrypted data keys.
	EncryptedDataKeys() []MessageEDK

	// ContentType returns the content type.
	ContentType() suite.ContentType

	// FrameLength returns the frame length.
	FrameLength() int
}

MessageHeaderBase is the common interface for the message header.

type MessageType added in v0.4.0

type MessageType int

MessageType is the type of the message. The type indicates the kind of structure. The only supported type is CustomerAEData.

const CustomerAEData MessageType = 128

CustomerAEData is a customer authenticated encrypted data. Its type value is 128, encoded as byte 80 in hexadecimal notation.

type Serializable

type Serializable interface {
	// Len returns the length of the serialized object.
	Len() int
	// Bytes returns the serialized object.
	Bytes() []byte
}

Serializable is an interface for objects that can be serialized to bytes.

type Serializer added in v0.3.0

type Serializer interface {
	// SerializeHeader serializes a message header.
	// It takes header parameters as input and returns a MessageHeader and an error if any.
	SerializeHeader(p HeaderParams) (MessageHeader, error)

	// SerializeHeaderAuth serializes a message header authentication data.
	// It takes a message format version, an initialization vector, and authentication data as input.
	// It returns a MessageHeaderAuth and an error if any.
	SerializeHeaderAuth(v suite.MessageFormatVersion, iv, authData []byte) (MessageHeaderAuth, error)

	// SerializeBody serializes a message body.
	// It takes an algorithm suite and a frame length as input.
	// It returns a MessageBody and an error if any.
	SerializeBody(alg *suite.AlgorithmSuite, frameLength int) (MessageBody, error)

	// SerializeFooter serializes a message footer.
	// It takes an algorithm suite and a signature as input.
	// It returns a MessageFooter and an error if any.
	SerializeFooter(alg *suite.AlgorithmSuite, signature []byte) (MessageFooter, error)
}

Serializer defines methods for serializing encrypted message components.

Jump to

Keyboard shortcuts

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