docs [AI]

This commit is contained in:
2026-06-30 18:51:09 +07:00
parent 18cad76e38
commit f7a76353ea
67 changed files with 2104 additions and 1417 deletions
+18
View File
@@ -1,6 +1,24 @@
//! Абстракция AEAD-шифрования над конкретным алгоритмом.
//!
//! Кодек ([`nrxp`](crate::nrxp)) работает не с ChaCha20-Poly1305 напрямую, а через
//! трейт [`AeadPacker`]. Это развязывает горячий путь от выбора шифра: сегодня за
//! трейтом стоит [`ChaChaStream`](super::chacha::ChaChaStream), завтра можно
//! подставить другой AEAD без правок кодека, а в тестах — фейковую реализацию.
use bytes::BytesMut;
/// Шифрование «на месте» (in-place) для одного направления потока.
///
/// Обе операции мутируют переданный [`BytesMut`] прямо в его буфере — никаких
/// промежуточных аллокаций и копий (zero-copy на горячем пути):
/// - [`encrypt`](AeadPacker::encrypt) дописывает 16-байтовый тег аутентификации в
/// конец буфера (вызывающий код заранее резервирует под него место);
/// - [`decrypt`](AeadPacker::decrypt) проверяет тег и усекает буфер до открытого
/// текста; при провале проверки возвращает ошибку и данные считаются
/// скомпрометированными (tampering).
pub(crate) trait AeadPacker {
/// Шифрует `data` на месте и дописывает тег аутентификации.
fn encrypt(&mut self, data: &mut BytesMut) -> Result<(), chacha20poly1305::aead::Error>;
/// Расшифровывает `data` на месте и проверяет тег; `Err` ⇒ tampering.
fn decrypt(&mut self, data: &mut BytesMut) -> Result<(), chacha20poly1305::aead::Error>;
}