Documentation
¶
Overview ¶
Package crypto предоставляет AES-256-GCM шифрование для TDTP-пакетов.
Формат зашифрованного файла:
[2B version][1B algorithm][16B package_uuid][12B nonce][...ciphertext]
version: 0x01 0x00 (v1.0) algorithm: 0x01 = AES-256-GCM package_uuid: UUID пакета в бинарном виде (16 байт без дефисов) nonce: 12 байт из crypto/rand (уникален для каждого шифрования) ciphertext: AES-256-GCM ciphertext + 16-байтный GCM-тег
Index ¶
- func Decrypt(key, blob []byte) (packageUUID string, plaintext []byte, err error)
- func DecryptSection(key []byte, encoded string) ([]byte, error)
- func Encrypt(key, plaintext []byte, packageUUID string) ([]byte, error)
- func EncryptSection(key, plaintext []byte) (string, error)
- func ExtractUUID(blob []byte) (string, error)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Decrypt ¶
Decrypt расшифровывает блоб, созданный Encrypt. Возвращает UUID пакета из заголовка и plaintext.
func DecryptSection ¶
DecryptSection расшифровывает секцию, зашифрованную EncryptSection.
func Encrypt ¶
Encrypt шифрует plaintext алгоритмом AES-256-GCM. key — 32 байта (AES-256), packageUUID — UUID пакета в стандартном формате "xxxxxxxx-xxxx-...". Возвращает бинарный блоб: заголовок + ciphertext.
func EncryptSection ¶
EncryptSection шифрует содержимое одной секции пакета (QueryContext, Schema или Data) для формата v1.5 — в отличие от Encrypt, не добавляет собственный заголовок (version/algo/uuid): эти данные уже присутствуют в открытом Header пакета, дублировать их незачем. Возвращает base64(nonce || ciphertext), готовый лечь текстовым содержимым секции (см. docs/tdtp-protocol-schema.md → "v1.5").
Один key используется для всех секций пакета (и всех частей multi-part сообщения с одним MessageID) — обязательно свой nonce на каждый вызов, GCM не допускает повторного nonce с одним key.
func ExtractUUID ¶
ExtractUUID извлекает UUID пакета из заголовка зашифрованного блоба без расшифровки данных. Используется получателем перед вызовом RetrieveKey.
Types ¶
This section is empty.