Go-обертки для bee2 — C-реализации белорусских криптографических стандартов.
Пакет предоставляет высокоуровневые обертки для:
bash: хеш и псевдослучайный генераторbelt: хеш, блочные режимы, MAC, AEAD, HMAC, PBKDF2 и обертка ключейbign: параметры, генерация ключей, DH, подписи, транспорт ключей и подписи на основе идентичностиbake: аутентифицированная выработка ключа BSTSbrng: детерминированные генераторы случайных данныхrng: источники энтропии, генератор случайных чисел и статистические тесты FIPS
- Go 1.22+
- Тулчейн C-компилятора
- CMake
- Исходники
bee2доступны как git submodule в./bee2
git clone --recurse-submodules https://github.com/miniusercoder/bee2go.git
cd bee2goЕсли репозиторий уже был клонирован без submodule:
git submodule update --init --recursivemake setup
make runЭто:
- подтянет submodule,
- соберет статическую библиотеку
bee2, - запустит демонстрационное приложение
cmd/demo.
make testСборка статической библиотеки bee2:
bash scripts/build_bee2.shЗапуск тестов:
go test ./... -vТекущий поддерживаемый формат установки: работа из исходников репозитория с локальной сборкой bee2.
Используйте шаги из раздела «Быстрый старт»:
make setupmake runmake test
make setup— подготовить проект к работеmake run— запустить demo (cmd/demo)make test— запустить все тестыmake clean— удалить артефакты сборкиbee2/build
Этот вариант не требует правок go.mod вашего приложения и удобен для локальной разработки.
- Разместите ваш проект и
bee2goрядом:
workspace/
my-app/
bee2go/
- Подготовьте
bee2go:
cd bee2go
make setup- Создайте workspace из каталога приложения:
cd ../my-app
go work init . ../bee2go- Добавьте импорт в коде приложения:
import "github.com/miniusercoder/bee2go"- Минимальный пример использования (belt-hash):
package main
import (
"fmt"
"log"
"github.com/miniusercoder/bee2go"
)
func main() {
digest, err := bee2go.BeltHash([]byte("hello"))
if err != nil {
log.Fatal(err)
}
fmt.Printf("belt-hash: %X\n", digest)
}- Запустите приложение обычной командой
go runилиgo build.
В репозитории есть:
- тесты с известными ответами (KAT), полученные из векторов upstream
bee2 - round-trip тесты для API шифрования/дешифрования и wrap/unwrap
- тесты порчи данных и негативных сценариев для проверки аутентичности и подписей
- тесты валидации аргументов: nil, размерные и форматные ограничения
- интеграционные тесты для выработки ключа BSTS
Workflow GitHub Actions:
- выполняет checkout репозитория с submodule
- собирает статическую библиотеку
bee2 - запускает
go vet ./... - запускает
make test
См. .github/workflows/ci.yml.
- Большинство объектов-оберток хранят нативное C-состояние и небезопасны для конкурентного использования из нескольких goroutine.
- Всегда вызывайте
Free()для долгоживущих объектов, выделяющих память в C. - Не используйте демонстрационные ключи из примеров в production.
Проект распространяется по лицензии, указанной в LICENCE.