Работаем по проекту ГОСТ P 34-11.2012
- skellekroon-svg - математик-программист, обеспечивает и проверяет корректность программирования математических объектов
- Jaba - программист арифметики в конечных полях.
- ShowhyT - программист всего алгоритма, включая процедуры ввода-вывода
- Armigodf - программист оболочки под DOS и Windows, сборщик программных модулей
- Pomidor/ShowhyT - тестировщик корректности работы программы и её оптимальности.
projectwork/
│
├── CMakeLists.txt # Сборка
├── README.md # Описание проекта
│
├── include/
│ ├── streebog.h # Публичный API хэш-функции
│ ├── streebog_tables.h # Таблицы констант (S-box, tau, A, C)
│ └── streebog_internal.h # Внутренние типы и макросы
│
├── src/
│ ├── streebog.c # Основная логика: Init / Update / Final
│ ├── streebog_compress.c # Функция сжатия g_N
│ ├── streebog_tables.c # Определения таблиц (Lookup Tables)
│ ├── streebog_transform.c # Преобразования: S, P, L, X, E (шифр)
│ └── streebog_utils.c # Вспомогательные функции (XOR, ADDC и т.д.)
│
├── tests/
│ ├── test_main.c # Точка входа тестов
│ ├── test_vectors_256.c # Тест-векторы для Стрибог-256
│ ├── test_vectors_512.c # Тест-векторы для Стрибог-512
│ └── test_vectors.h # Данные тест-векторов из ГОСТ
│
├── tools/
│ ├── main.c # CLI-утилита: вычисление хэша файла/строки
│ └── bench.c # Бенчмарк производительности
│
└── docs/
├── GOST_R_3411-2012.pdf # Текст стандарта
└── gost-r-34.pdf # Текст стандарта
Математик — streebog_tables.c/h, streebog_transform.c, проверяет корректность всех констант и преобразований S, P, L, X, E.
Программист арифметики GF — streebog_transform.c (реализация), streebog_utils.c, streebog_internal.h. Пишет само умножение в поле Галуа для функции L.
Программист алгоритма — streebog.h, streebog.c, streebog_compress.c, tools/main.c. Init/Update/Final, функция сжатия g_N, CLI-утилита.
Сборщик — CMakeLists.txt, .clang-format, .clang-tidy, .gitignore, README.md. Настраивает сборку под Windows/DOS, следит чтобы всё компилировалось.
Тестировщик — tests/, tools/bench.c. Пишет тест-векторы из Приложения А стандарта, проверяет корректность и производительность.
streebog_transform.c Делают математик и программист GF вместе
streebog_compress.c — Программист алгоритма и математик согласовывают интерфейс g_N.