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             Ср 19 Июл 2023 00:00:00                  g12s.h(3)
Impressum