1g12s.h(3)                  Library Functions Manual                  g12s.h(3)
2
3
4

NAME

6       g12s.h - Алгоритмы ГОСТ Р 34.10-94 (Россия)
7
8

SYNOPSIS

10       #include 'bee2/defs.h'
11
12
13   Классы
14       struct g12s_params
15           Долговременные параметры g12s.
16
17   Определения типов
18       typedef struct g12s_params g12s_params
19           Долговременные параметры g12s.
20
21   Функции
22       err_t g12sStdParams (g12s_params *params, const char *name)
23           Загрузка стандартных долговременных параметров
24       err_t g12sValParams (const g12s_params *params)
25           Проверка долговременных параметров
26       err_t g12sGenKeypair (octet privkey[], octet pubkey[], const
27           g12s_params *params, gen_i rng, void *rng_state)
28           Генерация пары ключей
29       err_t g12sSign (octet sig[], const g12s_params *params, const octet
30           hash[], const octet privkey[], gen_i rng, void *rng_state)
31           Выработка ЭЦП
32       err_t g12sVerify (const g12s_params *params, const octet hash[], const
33           octet sig[], const octet pubkey[])
34           Проверка ЭЦП
35

Подробное описание

ГОСТ Р 34.10-2012: Общие положения

38       Реализованы алгоритмы ГОСТ Р 34.10-2012 (g12s). При ссылках на
39       алгоритмы, таблицы, другие объекты подразумеваются разделы ГОСТ Р
40       34.10-2012, в которых эти объекты определены.
41
42       Ожидается [ERR_BAD_INPUT]
43           Все входные указатели корректны.
44
45       Регулярность
46           todo
47

Управление долговременными параметрами

49       Структура g12s_params описывает долговременные параметры g12s. Поля
50       структуры обозначаются также, как в п. 5.2.
51
52       Максимальные размерности G12S_FIELD_SIZE, G12S_ORDER_SIZE соответствуют
53       уровню стойкости l == 512.
54
55       При g12s_params::l == 256 в полях g12s_params::p и g12s_params::q
56       используется только первая половина октетов. При g12s_params::l == 512
57       используются все октеты.
58
59       В полях g12s_params::a, g12s_params::b, g12s_params::xP,
60       g12s_params::yP используется no октетов, где no --- длина
61       g12s_params::p в октетах: no = memNonZeroSize(g12s_params::p,
62       G12S_FIELD_SIZE * g12s_params::l / 512).
63
64       Неиспользуемые октеты могут быть заданы произвольным образом.
65
66       Все поля структуры g12s_params, за исключением поля g12s_params::n,
67       кодируют определенные числа. При кодировании используются правила
68       little-endian.
69

Управление ключами

71       Ключи распространяются вместе с долговременными параметрами.
72       Долговременный параметр l определяет длину личного ключа (privkey):
73       ключ состоит из l / 4 октетов. Открытый ключ (pubkey) состоит из 2 * no
74       октетов, где no --- длина модуля p в октетах.
75
76       Буфер privkey и половинки буфера pubkey представляют собой кодовые
77       представления определенных чисел. При кодировании используются правила
78       little-endian. Первая половинка pubkey кодирует x-координату открытого
79       ключа, вторая половинка -- y-координату.
80

Электронная цифровая подпись (ЭЦП)

82       Данные, которые используются при выработке / проверке подписи,
83       распространяются вместе с долговременными параметрами. Долговременный
84       параметр l определяет длину хэш-значения hash и подписи sig в октетах:
85       hash состоит из l / 8 октетов, sig -- из l / 4 октетов.
86
87       Буфер hash и половинки буфера sig являются кодовыми представлениями
88       определенных чисел. При кодировании используются правила big-endian
89       (см. формулы (14), (19) и шаг 6 алгоритма выработки ЭЦП). Первая
90       половинка sig кодирует число r, вторая половинка -- число s.
91

Функции

93   err_t g12sGenKeypair (octet privkey[], octet pubkey[], const g12s_params *
94       params, gen_i rng, void * rng_state)
95       Для заданных долговременных параметров params генерируются личный
96       privkey и открытый pubkey ключи. При генерации используется генератор
97       rng и его состояние rng_state.
98
99       Ожидается [ERR_BAD_PARAMS]
100           Параметры params корректны.
101
102       Ожидается [ERR_BAD_RNG]
103           Генератор rng (с состоянием rng_state) корректен.
104
105       Ожидается
106           Используется криптографически стойкий генератор rng.
107
108       Возвращает
109           ERR_OK, если ключи сгенерированы, и код ошибки в противном случае.
110
111       Аргументы
112           privkey личный ключ
113           pubkey открытый ключ
114           params долговременные параметры
115           rng генератор случайных чисел
116           rng_state состояние генератора
117
118   err_t g12sSign (octet sig[], const g12s_params * params, const octet
119       hash[], const octet privkey[], gen_i rng, void * rng_state)
120       Вырабатывается подпись sig сообщения с хэш-значением hash. Подпись
121       вырабатывается на личном ключе privkey. При выработке ЭЦП используются
122       долговременные параметры params и генератор rng с состоянием rng_state.
123
124       Ожидается [ERR_BAD_PARAMS]
125           Параметры params корректны.
126
127       Ожидается [ERR_BAD_PRIVKEY]
128           Личный ключ privkey корректен.
129
130       Ожидается [ERR_BAD_RNG]
131           Генератор rng (с состоянием rng_state) корректен.
132
133       Ожидается
134           Генератор rng является криптографически стойким.
135
136       Возвращает
137           ERR_OK, если подпись выработана, и код ошибки в противном случае.
138
139       Аргументы
140           sig подпись
141           params долговременные параметры
142           hash хэш-значение
143           privkey личный ключ
144           rng генератор случайных чисел
145           rng_state состояние генератора
146
147   err_t g12sStdParams (g12s_params * params, const char * name)
148       В params загружаются стандартные долговременные параметры с именем
149       name. Поддерживаются следующие имена:
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167       Прим.
168           Параметры и их имена (идентификаторы) взяты из следующих
169           источников:
170
171           • файл gost_params.c, который является частью OpenSSL;
172
173           • проект 'Методические рекомендации по заданию параметров
174             эллиптических
175                 кривых в соответствии с ГОСТ Р 34.10-2012'
176             (http://www.tc26.ru, октябрь 2013 г.);
177
178           • документ 'Идентификаторы объектов технического комитета по
179                 стандартизации 'Криптографическая защита информации' (ТК26)'
180             (http://www.tc26.ru/metodiki/OID_TK_26/index.php, апрель 2014
181             г.).
182
183       Возвращает
184           ERR_OK, если параметры успешно загружены, и код ошибки в противном
185           случае.
186
187       Аргументы
188           params стандартные параметры
189           name имя параметров
190
191   err_t g12sValParams (const g12s_params * params)
192       Проверяется корректность долговременных параметров params.
193
194       Возвращает
195           ERR_OK, если параметры корректны, и код ошибки в противном случае.
196
197       Аргументы
198           params параметры
199
200   err_t g12sVerify (const g12s_params * params, const octet hash[], const
201       octet sig[], const octet pubkey[])
202       Проверяется ЭЦП sig сообщения с хэш-значением hash. При проверке
203       используются долговременные параметры params и открытый ключ pubkey.
204
205       Ожидается [ERR_BAD_PARAMS]
206           Параметры params корректны.
207
208       Ожидается [ERR_BAD_PUBKEY]
209           Открытый ключ pubkey корректен.
210
211       Возвращает
212           ERR_OK, если подпись корректна, и код ошибки в противном случае.
213
214       Прим.
215           При нарушении ограничений на ЭЦП возвращается код ERR_BAD_SIG.
216
217       Аргументы
218           params долговременные параметры
219           hash хэш-значение
220           sig подпись
221           pubkey открытый ключ
222

Автор

224       Автоматически создано Doxygen для Библиотека Bee2 из исходного текста.
225
226
227
228Библиотека Bee2                 Пт 23 Июн 2023                       g12s.h(3)
Impressum