1g12s.h(3) Library Functions Manual g12s.h(3)
2
3
4
6 g12s.h - Алгоритмы ГОСТ Р 34.10-94 (Россия)
7
8
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
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)