Skip to content

miniusercoder/bee2go

Repository files navigation

bee2go

Go-обертки для bee2 — C-реализации белорусских криптографических стандартов.

Пакет предоставляет высокоуровневые обертки для:

  • bash: хеш и псевдослучайный генератор
  • belt: хеш, блочные режимы, MAC, AEAD, HMAC, PBKDF2 и обертка ключей
  • bign: параметры, генерация ключей, DH, подписи, транспорт ключей и подписи на основе идентичности
  • bake: аутентифицированная выработка ключа BSTS
  • brng: детерминированные генераторы случайных данных
  • rng: источники энтропии, генератор случайных чисел и статистические тесты FIPS

Требования

  • Go 1.22+
  • Тулчейн C-компилятора
  • CMake
  • Исходники bee2 доступны как git submodule в ./bee2

Быстрый старт

1. Клонирование

git clone --recurse-submodules https://github.com/miniusercoder/bee2go.git
cd bee2go

Если репозиторий уже был клонирован без submodule:

git submodule update --init --recursive

2. Установил-запустил (одной командой)

make setup
make run

Это:

  • подтянет submodule,
  • соберет статическую библиотеку bee2,
  • запустит демонстрационное приложение cmd/demo.

3. Запуск тестов

make test

4. Ручной режим (без Makefile)

Сборка статической библиотеки bee2:

bash scripts/build_bee2.sh

Запуск тестов:

go test ./... -v

Установка

Текущий поддерживаемый формат установки: работа из исходников репозитория с локальной сборкой bee2.

Используйте шаги из раздела «Быстрый старт»:

  • make setup
  • make run
  • make test

Команды Makefile

  • make setup — подготовить проект к работе
  • make run — запустить demo (cmd/demo)
  • make test — запустить все тесты
  • make clean — удалить артефакты сборки bee2/build

Использование

Рекомендуемый UX для сторонних разработчиков: Go Workspace (go work)

Этот вариант не требует правок go.mod вашего приложения и удобен для локальной разработки.

  1. Разместите ваш проект и bee2go рядом:
workspace/
  my-app/
  bee2go/
  1. Подготовьте bee2go:
cd bee2go
make setup
  1. Создайте workspace из каталога приложения:
cd ../my-app
go work init . ../bee2go
  1. Добавьте импорт в коде приложения:
import "github.com/miniusercoder/bee2go"
  1. Минимальный пример использования (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)
}
  1. Запустите приложение обычной командой go run или go build.

Стратегия тестирования

В репозитории есть:

  • тесты с известными ответами (KAT), полученные из векторов upstream bee2
  • round-trip тесты для API шифрования/дешифрования и wrap/unwrap
  • тесты порчи данных и негативных сценариев для проверки аутентичности и подписей
  • тесты валидации аргументов: nil, размерные и форматные ограничения
  • интеграционные тесты для выработки ключа BSTS

CI

Workflow GitHub Actions:

  • выполняет checkout репозитория с submodule
  • собирает статическую библиотеку bee2
  • запускает go vet ./...
  • запускает make test

См. .github/workflows/ci.yml.

Замечания по безопасности

  • Большинство объектов-оберток хранят нативное C-состояние и небезопасны для конкурентного использования из нескольких goroutine.
  • Всегда вызывайте Free() для долгоживущих объектов, выделяющих память в C.
  • Не используйте демонстрационные ключи из примеров в production.

Лицензия

Проект распространяется по лицензии, указанной в LICENCE.

About

CGO-реализации белорусских криптографических стандартов.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages