GostCrypto  0.2.0
Криптография, реализованная в соответствии с ГОСТ
 Указатель Структуры данных Файлы Функции Определения типов Перечисления Элементы перечислений Друзья Макросы
gostcrypto.h
См. документацию.
1 
5 #ifndef GOSTCRYPTO_H
6 #define GOSTCRYPTO_H
7 
8 #include <stdint.h>
9 #include <stdbool.h>
10 
14 #define SYMMETRIC_KEY_SIZE 32
15 
19 #define KUZNYECHIK_MGM_NONCE_SIZE 16
20 
24 #define KUZNYECHIK_MGM_TAG_SIZE 16
25 
29 #define KUZNYECHIK_MGM_ALIGNMENT 1
30 
34 #define KUZNYECHIK_MGM_SIZE 160
35 
39 #define KUZNYECHIK_CBC_NONCE_SIZE 16
40 
44 #define KUZNYECHIK_CBC_ALIGNMENT 1
45 
49 #define KUZNYECHIK_CBC_SIZE 177
50 
54 #define MAGMA_CBC_NONCE_SIZE 8
55 
59 #define MAGMA_CBC_ALIGNMENT 4
60 
64 #define MAGMA_CBC_SIZE 44
65 
69 #define KUZNYECHIK_CFB_NONCE_SIZE 16
70 
74 #define KUZNYECHIK_CFB_ALIGNMENT 1
75 
79 #define KUZNYECHIK_CFB_SIZE 177
80 
84 #define MAGMA_CFB_NONCE_SIZE 8
85 
89 #define MAGMA_CFB_ALIGNMENT 4
90 
94 #define MAGMA_CFB_SIZE 44
95 
99 #define KUZNYECHIK_BLOCK_SIZE 16
100 
104 #define KUZNYECHIK_ALIGNMENT 1
105 
109 #define KUZNYECHIK_SIZE 160
110 
114 #define MAGMA_BLOCK_SIZE 8
115 
119 #define MAGMA_ALIGNMENT 4
120 
124 #define MAGMA_SIZE 32
125 
129 #define KUZNYECHIK_CTR_NONCE_SIZE 8
130 
134 #define KUZNYECHIK_CTR_ALIGNMENT 8
135 
139 #define KUZNYECHIK_CTR_SIZE 200
140 
144 #define MAGMA_CTR_NONCE_SIZE 4
145 
149 #define MAGMA_CTR_ALIGNMENT 4
150 
154 #define MAGMA_CTR_SIZE 52
155 
159 #define KUZNYECHIK_ECB_ALIGNMENT 1
160 
164 #define KUZNYECHIK_ECB_SIZE 160
165 
169 #define MAGMA_ECB_ALIGNMENT 4
170 
174 #define MAGMA_ECB_SIZE 32
175 
179 #define EC_256_WIDTH 32
180 
184 #define EC_256_DOUBLE_WIDTH 64
185 
189 #define EC_256_PRIVATE_KEY_ALIGNMENT 8
190 
194 #define EC_256_PUBLIC_KEY_SIZE 96
195 
199 #define EC_256_PUBLIC_KEY_ALIGNMENT 8
200 
204 #define GOST3410_2012_512A 643712121
205 
209 #define GOST3410_2012_512B 643712122
210 
214 #define GOST3410_2012_512C 643712123
215 
219 #define EC_512_WIDTH 64
220 
224 #define EC_512_DOUBLE_WIDTH 128
225 
229 #define EC_512_PRIVATE_KEY_ALIGNMENT 8
230 
234 #define EC_512_PUBLIC_KEY_SIZE 192
235 
239 #define EC_512_PUBLIC_KEY_ALIGNMENT 8
240 
244 #define EC_ERR_CURVE_ID -2
245 
249 #define EC_ERR_PUBLIC_KEY_BYTES -3
250 
254 #define EC_ERR_PRIVATE_KEY_BYTES -4
255 
259 #define EC_ERR_SIGNATURE -5
260 
266 #define EC_ERR_BAD_RAND_BYTES -6
267 
271 #define EC_ERR_VKO_UKM -7
272 
276 #define STREEBOG256_RESULT_SIZE 32
277 
281 #define STREEBOG256_ALIGNMENT 8
282 
286 #define STREEBOG256_SIZE 264
287 
291 #define STREEBOG512_RESULT_SIZE 64
292 
296 #define STREEBOG512_ALIGNMENT 8
297 
301 #define STREEBOG512_SIZE 264
302 
306 #define KUZNYECHIK_MAC_RESULT_SIZE 16
307 
311 #define KUZNYECHIK_MAC_ALIGNMENT 8
312 
316 #define KUZNYECHIK_MAC_SIZE 216
317 
321 #define MAGMA_MAC_RESULT_SIZE 8
322 
326 #define MAGMA_MAC_ALIGNMENT 8
327 
331 #define MAGMA_MAC_SIZE 64
332 
336 #define KUZNYECHIK_OFB_NONCE_SIZE 16
337 
341 #define KUZNYECHIK_OFB_ALIGNMENT 1
342 
346 #define KUZNYECHIK_OFB_SIZE 178
347 
351 #define MAGMA_OFB_NONCE_SIZE 8
352 
356 #define MAGMA_OFB_ALIGNMENT 4
357 
361 #define MAGMA_OFB_SIZE 44
362 
383 
406 
428 typedef uint8_t MagmaCbc[MAGMA_CBC_SIZE];
429 
449 
468 typedef uint8_t MagmaCfb[MAGMA_CFB_SIZE];
469 
489 typedef uint8_t Kuznyechik[KUZNYECHIK_SIZE];
490 
510 typedef uint8_t Magma[MAGMA_SIZE];
511 
531 
550 typedef uint8_t MagmaCtr[MAGMA_CTR_SIZE];
551 
572 
592 typedef uint8_t MagmaEcb[MAGMA_ECB_SIZE];
593 
633 typedef uintptr_t Ec256;
634 
640 typedef uint8_t Ec256PrivateKey[EC_256_WIDTH];
641 
648 
688 typedef uintptr_t Ec512;
689 
695 typedef uint8_t Ec512PrivateKey[EC_512_WIDTH];
696 
703 
723 typedef uint8_t Streebog256[STREEBOG256_SIZE];
724 
744 typedef uint8_t Streebog512[STREEBOG512_SIZE];
745 
767 
788 typedef uint8_t MagmaMac[MAGMA_MAC_SIZE];
789 
808 
826 typedef uint8_t MagmaOfb[MAGMA_OFB_SIZE];
827 
831 #define GOST3410_2012_256A 643712111
832 
836 #define GOST3410_2012_256B 643712112
837 
841 #define GOST3410_2012_256C 643712113
842 
846 #define GOST3410_2012_256D 643712114
847 
848 #ifdef __cplusplus
849 extern "C" {
850 #endif // __cplusplus
851 
866  const uint8_t key[SYMMETRIC_KEY_SIZE]);
867 
889 intptr_t kuznyechik_mgm_encrypt(KuznyechikMgm cipher,
890  const uint8_t nonce[KUZNYECHIK_MGM_NONCE_SIZE],
891  const uint8_t *aad,
892  uintptr_t aad_len,
893  uint8_t *buf,
894  uintptr_t buf_len,
895  uint8_t tag[KUZNYECHIK_MGM_TAG_SIZE]);
896 
918 intptr_t kuznyechik_mgm_decrypt(KuznyechikMgm cipher,
919  const uint8_t nonce[KUZNYECHIK_MGM_NONCE_SIZE],
920  const uint8_t *aad,
921  uintptr_t aad_len,
922  uint8_t *buf,
923  uintptr_t buf_len,
924  const uint8_t tag[KUZNYECHIK_MGM_TAG_SIZE]);
925 
941 
958  const uint8_t key[SYMMETRIC_KEY_SIZE],
959  const uint8_t nonce[KUZNYECHIK_CBC_NONCE_SIZE]);
960 
976  uint8_t blocks[KUZNYECHIK_BLOCK_SIZE],
977  uintptr_t blocks_len);
978 
994  uint8_t blocks[KUZNYECHIK_BLOCK_SIZE],
995  uintptr_t blocks_len);
996 
1022  uint8_t *buf,
1023  uintptr_t buf_len,
1024  uintptr_t pos);
1025 
1048  uint8_t *buf,
1049  uintptr_t buf_len);
1050 
1065 void kuznyechik_cbc_drop(KuznyechikCbc cipher);
1066 
1082 void magma_cbc_new(MagmaCbc dst,
1083  const uint8_t key[SYMMETRIC_KEY_SIZE],
1084  const uint8_t nonce[MAGMA_CBC_NONCE_SIZE]);
1085 
1101  uint8_t blocks[MAGMA_BLOCK_SIZE],
1102  uintptr_t blocks_len);
1103 
1119  uint8_t blocks[MAGMA_BLOCK_SIZE],
1120  uintptr_t blocks_len);
1121 
1146 intptr_t magma_cbc_encrypt_pad(MagmaCbc cipher,
1147  uint8_t *buf,
1148  uintptr_t buf_len,
1149  uintptr_t pos);
1150 
1172 intptr_t magma_cbc_decrypt_pad(MagmaCbc cipher,
1173  uint8_t *buf,
1174  uintptr_t buf_len);
1175 
1190 void magma_cbc_drop(MagmaCbc cipher);
1191 
1208  const uint8_t key[SYMMETRIC_KEY_SIZE],
1209  const uint8_t nonce[KUZNYECHIK_CFB_NONCE_SIZE]);
1210 
1225  uint8_t *buf,
1226  uintptr_t buf_len);
1227 
1242  uint8_t *buf,
1243  uintptr_t buf_len);
1244 
1259 void kuznyechik_cfb_drop(KuznyechikCfb cipher);
1260 
1276 void magma_cfb_new(MagmaCfb dst,
1277  const uint8_t key[SYMMETRIC_KEY_SIZE],
1278  const uint8_t nonce[MAGMA_CFB_NONCE_SIZE]);
1279 
1293 void magma_cfb_encrypt(MagmaCfb cipher,
1294  uint8_t *buf,
1295  uintptr_t buf_len);
1296 
1310 void magma_cfb_decrypt(MagmaCfb cipher,
1311  uint8_t *buf,
1312  uintptr_t buf_len);
1313 
1328 void magma_cfb_drop(MagmaCfb cipher);
1329 
1343 void kuznyechik_new(Kuznyechik dst,
1344  const uint8_t key[SYMMETRIC_KEY_SIZE]);
1345 
1359  uint8_t block[KUZNYECHIK_BLOCK_SIZE]);
1360 
1374  uint8_t block[KUZNYECHIK_BLOCK_SIZE]);
1375 
1390  uint8_t blocks[KUZNYECHIK_BLOCK_SIZE],
1391  uintptr_t len);
1392 
1407  uint8_t blocks[KUZNYECHIK_BLOCK_SIZE],
1408  uintptr_t len);
1409 
1423 void kuznyechik_drop(Kuznyechik cipher);
1424 
1438 void magma_new(Magma dst,
1439  const uint8_t key[SYMMETRIC_KEY_SIZE]);
1440 
1453 void magma_encrypt_block(Magma cipher,
1454  uint8_t block[MAGMA_BLOCK_SIZE]);
1455 
1468 void magma_decrypt_block(Magma cipher,
1469  uint8_t block[MAGMA_BLOCK_SIZE]);
1470 
1484 void magma_encrypt_blocks(Magma cipher,
1485  uint8_t blocks[MAGMA_BLOCK_SIZE],
1486  uintptr_t len);
1487 
1501 void magma_decrypt_blocks(Magma cipher,
1502  uint8_t blocks[MAGMA_BLOCK_SIZE],
1503  uintptr_t len);
1504 
1518 void magma_drop(Magma cipher);
1519 
1536  const uint8_t key[SYMMETRIC_KEY_SIZE],
1537  const uint8_t nonce[KUZNYECHIK_CTR_NONCE_SIZE]);
1538 
1556  uint8_t *buf,
1557  uintptr_t buf_len);
1558 
1574 intptr_t kuznyechik_ctr_seek(KuznyechikCtr cipher,
1575  uint64_t pos);
1576 
1590 uint64_t kuznyechik_ctr_get_pos(KuznyechikCtr cipher);
1591 
1606 void kuznyechik_ctr_drop(KuznyechikCtr cipher);
1607 
1623 void magma_ctr_new(MagmaCtr dst,
1624  const uint8_t key[SYMMETRIC_KEY_SIZE],
1625  const uint8_t nonce[MAGMA_CTR_NONCE_SIZE]);
1626 
1643 intptr_t magma_ctr_apply_keystream(MagmaCtr cipher,
1644  uint8_t *buf,
1645  uintptr_t buf_len);
1646 
1662 intptr_t magma_ctr_seek(MagmaCtr cipher,
1663  uint64_t pos);
1664 
1678 uint64_t magma_ctr_get_pos(MagmaCtr cipher);
1679 
1694 void magma_ctr_drop(MagmaCtr cipher);
1695 
1711  const uint8_t key[SYMMETRIC_KEY_SIZE]);
1712 
1728  uint8_t blocks[KUZNYECHIK_BLOCK_SIZE],
1729  uintptr_t blocks_len);
1730 
1746  uint8_t blocks[KUZNYECHIK_BLOCK_SIZE],
1747  uintptr_t blocks_len);
1748 
1774  uint8_t *buf,
1775  uintptr_t buf_len,
1776  uintptr_t pos);
1777 
1800  uint8_t *buf,
1801  uintptr_t buf_len);
1802 
1817 void kuznyechik_ecb_drop(KuznyechikEcb cipher);
1818 
1833 void magma_ecb_new(MagmaEcb dst,
1834  const uint8_t key[SYMMETRIC_KEY_SIZE]);
1835 
1851  uint8_t blocks[MAGMA_BLOCK_SIZE],
1852  uintptr_t blocks_len);
1853 
1869  uint8_t blocks[MAGMA_BLOCK_SIZE],
1870  uintptr_t blocks_len);
1871 
1896 intptr_t magma_ecb_encrypt_pad(MagmaEcb cipher,
1897  uint8_t *buf,
1898  uintptr_t buf_len,
1899  uintptr_t pos);
1900 
1922 intptr_t magma_ecb_decrypt_pad(MagmaEcb cipher,
1923  uint8_t *buf,
1924  uintptr_t buf_len);
1925 
1940 void magma_ecb_drop(MagmaEcb cipher);
1941 
1957 intptr_t ec256_gen_private_key(Ec256 cid,
1958  Ec256PrivateKey sk,
1959  const uint8_t rand_bytes[EC_256_WIDTH]);
1960 
1976 intptr_t ec256_get_public_key(Ec256 cid,
1977  Ec256PrivateKey sk,
1978  Ec256PublicKey pk);
1979 
1995 intptr_t ec256_private_key_from_bytes(Ec256 cid,
1996  const uint8_t bytes[EC_256_WIDTH],
1997  Ec256PrivateKey sk);
1998 
2014 intptr_t ec256_private_key_to_bytes(Ec256 cid,
2015  Ec256PrivateKey sk,
2016  uint8_t bytes[EC_256_WIDTH]);
2017 
2036 intptr_t ec256_dsa_sign_hash(Ec256 cid,
2037  Ec256PrivateKey sk,
2038  const uint8_t hash[EC_256_WIDTH],
2039  const uint8_t rand_bytes[EC_256_WIDTH],
2040  uint8_t signature[EC_256_DOUBLE_WIDTH]);
2041 
2060 intptr_t ec256_dsa_sign(Ec256 cid,
2061  Ec256PrivateKey sk,
2062  const uint8_t *msg,
2063  uintptr_t msg_len,
2064  const uint8_t rand_bytes[EC_256_WIDTH],
2065  uint8_t signature[EC_256_DOUBLE_WIDTH]);
2066 
2082 intptr_t ec256_public_key_from_bytes(Ec256 cid,
2083  const uint8_t bytes[EC_256_DOUBLE_WIDTH],
2084  Ec256PublicKey pk);
2085 
2101 intptr_t ec256_public_key_to_bytes(Ec256 cid,
2102  Ec256PublicKey pk,
2103  uint8_t bytes[EC_256_DOUBLE_WIDTH]);
2104 
2122 intptr_t ec256_dsa_verify_hash(Ec256 cid,
2123  Ec256PublicKey pk,
2124  const uint8_t hash[EC_256_WIDTH],
2125  const uint8_t signature[EC_256_DOUBLE_WIDTH]);
2126 
2144 intptr_t ec256_dsa_verify(Ec256 cid,
2145  Ec256PublicKey pk,
2146  const uint8_t *msg,
2147  uintptr_t msg_len,
2148  const uint8_t signature[EC_256_DOUBLE_WIDTH]);
2149 
2177 intptr_t ec256_vko256(Ec256 cid,
2178  Ec256PrivateKey sk,
2179  Ec256PublicKey pk,
2180  const uint8_t ukm[EC_256_WIDTH],
2181  uint8_t out[EC_256_WIDTH]);
2182 
2199 
2215 intptr_t ec512_gen_private_key(Ec512 cid,
2216  Ec512PrivateKey sk,
2217  const uint8_t rand_bytes[EC_512_WIDTH]);
2218 
2234 intptr_t ec512_get_public_key(Ec512 cid,
2235  Ec512PrivateKey sk,
2236  Ec512PublicKey pk);
2237 
2253 intptr_t ec512_private_key_from_bytes(Ec512 cid,
2254  const uint8_t bytes[EC_512_WIDTH],
2255  Ec512PrivateKey sk);
2256 
2272 intptr_t ec512_private_key_to_bytes(Ec512 cid,
2273  Ec512PrivateKey sk,
2274  uint8_t bytes[EC_512_WIDTH]);
2275 
2294 intptr_t ec512_dsa_sign_hash(Ec512 cid,
2295  Ec512PrivateKey sk,
2296  const uint8_t hash[EC_512_WIDTH],
2297  const uint8_t rand_bytes[EC_512_WIDTH],
2298  uint8_t signature[EC_512_DOUBLE_WIDTH]);
2299 
2318 intptr_t ec512_dsa_sign(Ec512 cid,
2319  Ec512PrivateKey sk,
2320  const uint8_t *msg,
2321  uintptr_t msg_len,
2322  const uint8_t rand_bytes[EC_512_WIDTH],
2323  uint8_t signature[EC_512_DOUBLE_WIDTH]);
2324 
2340 intptr_t ec512_public_key_from_bytes(Ec512 cid,
2341  const uint8_t bytes[EC_512_DOUBLE_WIDTH],
2342  Ec512PublicKey pk);
2343 
2359 intptr_t ec512_public_key_to_bytes(Ec512 cid,
2360  Ec512PublicKey pk,
2361  uint8_t bytes[EC_512_DOUBLE_WIDTH]);
2362 
2380 intptr_t ec512_dsa_verify_hash(Ec512 cid,
2381  Ec512PublicKey pk,
2382  const uint8_t hash[EC_512_WIDTH],
2383  const uint8_t signature[EC_512_DOUBLE_WIDTH]);
2384 
2402 intptr_t ec512_dsa_verify(Ec512 cid,
2403  Ec512PublicKey pk,
2404  const uint8_t *msg,
2405  uintptr_t msg_len,
2406  const uint8_t signature[EC_512_DOUBLE_WIDTH]);
2407 
2435 intptr_t ec512_vko512(Ec512 cid,
2436  Ec512PrivateKey sk,
2437  Ec512PublicKey pk,
2438  const uint8_t ukm[EC_512_WIDTH],
2439  uint8_t out[EC_512_WIDTH]);
2440 
2468 intptr_t ec512_vko256(Ec512 cid,
2469  Ec512PrivateKey sk,
2470  Ec512PublicKey pk,
2471  const uint8_t ukm[EC_512_WIDTH],
2472  uint8_t out[EC_256_WIDTH]);
2473 
2490 
2501 void streebog256_new(Streebog256 dst);
2502 
2516 void streebog256_digest(const uint8_t *msg,
2517  uintptr_t len,
2518  uint8_t res[STREEBOG256_RESULT_SIZE]);
2519 
2533 void streebog256_update(Streebog256 state,
2534  const uint8_t *msg,
2535  uintptr_t len);
2536 
2552  uint8_t res[STREEBOG256_RESULT_SIZE]);
2553 
2568  uint8_t res[STREEBOG256_RESULT_SIZE]);
2569 
2579 void streebog256_reset(Streebog256 state);
2580 
2593 void streebog256_drop(Streebog256 state);
2594 
2605 void streebog512_new(Streebog512 dst);
2606 
2620 void streebog512_digest(const uint8_t *msg,
2621  uintptr_t len,
2622  uint8_t res[STREEBOG512_RESULT_SIZE]);
2623 
2637 void streebog512_update(Streebog512 state,
2638  const uint8_t *msg,
2639  uintptr_t len);
2640 
2656  uint8_t res[STREEBOG512_RESULT_SIZE]);
2657 
2672  uint8_t res[STREEBOG512_RESULT_SIZE]);
2673 
2683 void streebog512_reset(Streebog512 state);
2684 
2697 void streebog512_drop(Streebog512 state);
2698 
2711  const uint8_t key[SYMMETRIC_KEY_SIZE]);
2712 
2727  const uint8_t *msg,
2728  uintptr_t len);
2729 
2745  uint8_t res[KUZNYECHIK_MAC_RESULT_SIZE]);
2746 
2761  uint8_t res[KUZNYECHIK_MAC_RESULT_SIZE]);
2762 
2779  const uint8_t code[KUZNYECHIK_MAC_RESULT_SIZE]);
2780 
2791 
2805 
2817 void magma_mac_new(MagmaMac dst,
2818  const uint8_t key[SYMMETRIC_KEY_SIZE]);
2819 
2833 void magma_mac_update(MagmaMac state,
2834  const uint8_t *msg,
2835  uintptr_t len);
2836 
2851 void magma_mac_finalize(MagmaMac state,
2852  uint8_t res[MAGMA_MAC_RESULT_SIZE]);
2853 
2868  uint8_t res[MAGMA_MAC_RESULT_SIZE]);
2869 
2885 bool magma_mac_verify(MagmaMac state,
2886  const uint8_t code[MAGMA_MAC_RESULT_SIZE]);
2887 
2897 void magma_mac_reset(MagmaMac state);
2898 
2911 void magma_mac_drop(MagmaMac state);
2912 
2929  const uint8_t key[SYMMETRIC_KEY_SIZE],
2930  const uint8_t nonce[KUZNYECHIK_OFB_NONCE_SIZE]);
2931 
2947  uint8_t *buf,
2948  uintptr_t buf_len);
2949 
2964 void kuznyechik_ofb_drop(KuznyechikOfb cipher);
2965 
2981 void magma_ofb_new(MagmaOfb dst,
2982  const uint8_t key[SYMMETRIC_KEY_SIZE],
2983  const uint8_t nonce[MAGMA_OFB_NONCE_SIZE]);
2984 
3000  uint8_t *buf,
3001  uintptr_t buf_len);
3002 
3017 void magma_ofb_drop(MagmaOfb cipher);
3018 
3019 #ifdef __cplusplus
3020 } // extern "C"
3021 #endif // __cplusplus
3022 
3023 #endif /* GOSTCRYPTO_H */
void magma_drop(Magma cipher)
Уничтожить контекст.
void magma_mac_update(MagmaMac state, const uint8_t *msg, uintptr_t len)
Обновить состояние режиму выработки имитовставки.
void streebog512_reset(Streebog512 state)
Сбросить состояние функции хэширования.
intptr_t ec512_public_key_from_bytes(Ec512 cid, const uint8_t bytes[EC_512_DOUBLE_WIDTH], Ec512PublicKey pk)
Десериалировать открытый ключ.
void magma_encrypt_block(Magma cipher, uint8_t block[MAGMA_BLOCK_SIZE])
Зашифровать блок данных.
#define STREEBOG256_RESULT_SIZE
Длина хэш-кода Streebog256 (в байтах)
Definition: gostcrypto.h:276
void kuznyechik_cfb_drop(KuznyechikCfb cipher)
Уничтожить контекст шифра.
void magma_ecb_new(MagmaEcb dst, const uint8_t key[SYMMETRIC_KEY_SIZE])
Создать контекст блочного шифра.
void streebog512_new(Streebog512 dst)
Создать состояние функции хэширования.
void magma_mac_finalize_reset(MagmaMac state, uint8_t res[MAGMA_MAC_RESULT_SIZE])
Финализировать состояние режима выработки имитовставки и заменить его новым.
#define MAGMA_CBC_NONCE_SIZE
Размер синхропосылки MagmaCbc (в байтах)
Definition: gostcrypto.h:54
#define KUZNYECHIK_MGM_NONCE_SIZE
Размер синхропосылки KuznyechikMgm (в байтах)
Definition: gostcrypto.h:19
uint8_t KuznyechikCtr[KUZNYECHIK_CTR_SIZE]
Потоковый шифр с длиной блока 128 бит в режиме гаммирования.
Definition: gostcrypto.h:530
#define MAGMA_CFB_NONCE_SIZE
Размер синхропосылки MagmaCfb (в байтах)
Definition: gostcrypto.h:84
void kuznyechik_ecb_encrypt_blocks(KuznyechikEcb cipher, uint8_t blocks[KUZNYECHIK_BLOCK_SIZE], uintptr_t blocks_len)
Зашифровать массив блоков
intptr_t ec256_public_key_from_bytes(Ec256 cid, const uint8_t bytes[EC_256_DOUBLE_WIDTH], Ec256PublicKey pk)
Десериалировать открытый ключ.
uint8_t MagmaOfb[MAGMA_OFB_SIZE]
Потоковый шифр с длиной блока 64 бит в режиме гаммирования с обратной связью по выходу с размером син...
Definition: gostcrypto.h:826
uint8_t MagmaEcb[MAGMA_ECB_SIZE]
Блочный шифр с длиной блока 64 бит в режиме простой замены.
Definition: gostcrypto.h:592
intptr_t ec256_private_key_from_bytes(Ec256 cid, const uint8_t bytes[EC_256_WIDTH], Ec256PrivateKey sk)
Десериалировать закрытый ключ.
intptr_t magma_ctr_seek(MagmaCtr cipher, uint64_t pos)
Установить позицию ключевого потока шифра.
intptr_t magma_cbc_decrypt_pad(MagmaCbc cipher, uint8_t *buf, uintptr_t buf_len)
Расшифровать сообщение.
void magma_mac_finalize(MagmaMac state, uint8_t res[MAGMA_MAC_RESULT_SIZE])
Финализировать состояние режима выработки имитовставки.
void magma_ecb_drop(MagmaEcb cipher)
Уничтожить контекст шифра.
intptr_t kuznyechik_ctr_apply_keystream(KuznyechikCtr cipher, uint8_t *buf, uintptr_t buf_len)
Гаммировать сообщение ключевым потоком шифра.
void magma_ofb_apply_keystream(MagmaOfb cipher, uint8_t *buf, uintptr_t buf_len)
Гаммировать сообщение ключевым потоком шифра.
#define EC_256_DOUBLE_WIDTH
Длина сериализованного открытого ключа и подписи кривых Ec256 (в байтах)
Definition: gostcrypto.h:184
intptr_t kuznyechik_mgm_decrypt(KuznyechikMgm cipher, const uint8_t nonce[KUZNYECHIK_MGM_NONCE_SIZE], const uint8_t *aad, uintptr_t aad_len, uint8_t *buf, uintptr_t buf_len, const uint8_t tag[KUZNYECHIK_MGM_TAG_SIZE])
Расшифровать сообщение с присоединёнными данными.
void kuznyechik_ofb_drop(KuznyechikOfb cipher)
Уничтожить контекст шифра.
#define MAGMA_MAC_SIZE
Размер состояния MagmaMac (в байтах)
Definition: gostcrypto.h:331
intptr_t ec256_get_public_key(Ec256 cid, Ec256PrivateKey sk, Ec256PublicKey pk)
Получить открытый ключ.
void kuznyechik_decrypt_block(Kuznyechik cipher, uint8_t block[KUZNYECHIK_BLOCK_SIZE])
Расшифровать блок данных.
void magma_ofb_new(MagmaOfb dst, const uint8_t key[SYMMETRIC_KEY_SIZE], const uint8_t nonce[MAGMA_OFB_NONCE_SIZE])
Создать контекст потокового шифра.
void kuznyechik_encrypt_block(Kuznyechik cipher, uint8_t block[KUZNYECHIK_BLOCK_SIZE])
Зашифровать блок данных.
void magma_ecb_decrypt_blocks(MagmaEcb cipher, uint8_t blocks[MAGMA_BLOCK_SIZE], uintptr_t blocks_len)
Расшифровать массив блоков.
void streebog512_digest(const uint8_t *msg, uintptr_t len, uint8_t res[STREEBOG512_RESULT_SIZE])
Хэшировать сообщение.
#define KUZNYECHIK_MGM_SIZE
Размер контекста KuznyechikMgm (в байтах)
Definition: gostcrypto.h:34
void kuznyechik_mac_reset(KuznyechikMac state)
Сбросить состояние режима выработки имитовставки.
void kuznyechik_encrypt_blocks(Kuznyechik cipher, uint8_t blocks[KUZNYECHIK_BLOCK_SIZE], uintptr_t len)
Зашифровать массив блоков.
intptr_t ec512_dsa_verify_hash(Ec512 cid, Ec512PublicKey pk, const uint8_t hash[EC_512_WIDTH], const uint8_t signature[EC_512_DOUBLE_WIDTH])
Проверить подпись хэша сообщения.
intptr_t ec512_gen_private_key(Ec512 cid, Ec512PrivateKey sk, const uint8_t rand_bytes[EC_512_WIDTH])
Создать закрытый ключ.
void magma_ctr_drop(MagmaCtr cipher)
Уничтожить контекст шифра.
void magma_new(Magma dst, const uint8_t key[SYMMETRIC_KEY_SIZE])
Создать контекст блочного шифра.
uintptr_t Ec256
Алгоритмы формирования, проверки электронной цифровой подписи и выработки общих ключей.
Definition: gostcrypto.h:633
uint64_t kuznyechik_ctr_get_pos(KuznyechikCtr cipher)
Получить позицию ключевого потока шифра.
uint8_t KuznyechikCfb[KUZNYECHIK_CFB_SIZE]
Потоковый шифр с длиной блока 128 бит в режиме гаммирования с обратной связью по шифртексту с размеро...
Definition: gostcrypto.h:448
uint8_t Streebog512[STREEBOG512_SIZE]
Функция хэширования с длиной хэш-кода 512 бит.
Definition: gostcrypto.h:744
intptr_t ec512_private_key_to_bytes(Ec512 cid, Ec512PrivateKey sk, uint8_t bytes[EC_512_WIDTH])
Сериализовать закрытый ключ.
void kuznyechik_cbc_drop(KuznyechikCbc cipher)
Уничтожить контекст шифра.
intptr_t ec512_dsa_sign(Ec512 cid, Ec512PrivateKey sk, const uint8_t *msg, uintptr_t msg_len, const uint8_t rand_bytes[EC_512_WIDTH], uint8_t signature[EC_512_DOUBLE_WIDTH])
Подписать сообщение.
intptr_t ec512_private_key_from_bytes(Ec512 cid, const uint8_t bytes[EC_512_WIDTH], Ec512PrivateKey sk)
Десериалировать закрытый ключ.
uintptr_t Ec512
Алгоритмы формирования, проверки электронной цифровой подписи и выработки общих ключей.
Definition: gostcrypto.h:688
#define KUZNYECHIK_CBC_SIZE
Размер контекста KuznyechikCbc (в байтах)
Definition: gostcrypto.h:49
#define KUZNYECHIK_BLOCK_SIZE
Размер блока шифра Kuznyechik (в байтах)
Definition: gostcrypto.h:99
intptr_t ec512_get_public_key(Ec512 cid, Ec512PrivateKey sk, Ec512PublicKey pk)
Получить открытый ключ.
void streebog256_finalize(Streebog256 state, uint8_t res[STREEBOG256_RESULT_SIZE])
Финализировать состояние функции хэширования.
intptr_t ec256_dsa_verify(Ec256 cid, Ec256PublicKey pk, const uint8_t *msg, uintptr_t msg_len, const uint8_t signature[EC_256_DOUBLE_WIDTH])
Проверить подпись сообщения.
uint8_t MagmaCtr[MAGMA_CTR_SIZE]
Потоковый шифр с длиной блока 64 бит в режиме гаммирования.
Definition: gostcrypto.h:550
#define KUZNYECHIK_MAC_RESULT_SIZE
Длина имитовставки KuznyechikMac (в байтах)
Definition: gostcrypto.h:306
intptr_t magma_ecb_decrypt_pad(MagmaEcb cipher, uint8_t *buf, uintptr_t buf_len)
Расшифровать сообщение.
uint8_t MagmaMac[MAGMA_MAC_SIZE]
Режим выработки имитовставки с использованием шифра с длиной блока 64 бит.
Definition: gostcrypto.h:788
#define EC_512_DOUBLE_WIDTH
Длина сериализованного открытого ключа и подписи кривых Ec512 (в байтах)
Definition: gostcrypto.h:224
#define MAGMA_CFB_SIZE
Размер контекста MagmaCfb (в байтах)
Definition: gostcrypto.h:94
void kuznyechik_ofb_new(KuznyechikOfb dst, const uint8_t key[SYMMETRIC_KEY_SIZE], const uint8_t nonce[KUZNYECHIK_OFB_NONCE_SIZE])
Создать контекст потокового шифра.
#define EC_512_WIDTH
Длина закрытого ключа и хэша сообщения кривых Ec512 (в байтах)
Definition: gostcrypto.h:219
void streebog512_finalize_reset(Streebog512 state, uint8_t res[STREEBOG512_RESULT_SIZE])
Финализировать состояние функции хэширования и заменить его новым.
#define STREEBOG256_SIZE
Размер состояния Streebog256 (в байтах)
Definition: gostcrypto.h:286
intptr_t kuznyechik_cbc_encrypt_pad(KuznyechikCbc cipher, uint8_t *buf, uintptr_t buf_len, uintptr_t pos)
Зашифровать сообщение.
uint8_t Magma[MAGMA_SIZE]
Блочный шифр с длиной блока 64 бит.
Definition: gostcrypto.h:510
uint8_t Kuznyechik[KUZNYECHIK_SIZE]
Блочный шифр с длиной блока 128 бит.
Definition: gostcrypto.h:489
#define EC_256_PUBLIC_KEY_SIZE
Длина несериализованного открытого ключа кривых Ec256 (в байтах)
Definition: gostcrypto.h:194
void kuznyechik_mgm_drop(KuznyechikMgm cipher)
Уничтожить контекст шифра
void streebog512_finalize(Streebog512 state, uint8_t res[STREEBOG512_RESULT_SIZE])
Финализировать состояние функции хэширования.
void kuznyechik_cfb_encrypt(KuznyechikCfb cipher, uint8_t *buf, uintptr_t buf_len)
Зашифровать сообщение.
bool kuznyechik_mac_verify(KuznyechikMac state, const uint8_t code[KUZNYECHIK_MAC_RESULT_SIZE])
Проверить целостность данных.
intptr_t kuznyechik_cbc_decrypt_pad(KuznyechikCbc cipher, uint8_t *buf, uintptr_t buf_len)
Расшифровать сообщение.
void kuznyechik_ctr_new(KuznyechikCtr dst, const uint8_t key[SYMMETRIC_KEY_SIZE], const uint8_t nonce[KUZNYECHIK_CTR_NONCE_SIZE])
Создать контекст потокового шифра.
uint8_t Ec256PublicKey[EC_256_PUBLIC_KEY_SIZE]
Несериализованный открытый ключ кривых Ec256 длиной EC_256_PUBLIC_KEY_SIZE и выравниванием EC_256_PUB...
Definition: gostcrypto.h:647
intptr_t ec256_dsa_verify_hash(Ec256 cid, Ec256PublicKey pk, const uint8_t hash[EC_256_WIDTH], const uint8_t signature[EC_256_DOUBLE_WIDTH])
Проверить подпись хэша сообщения.
void kuznyechik_ecb_drop(KuznyechikEcb cipher)
Уничтожить контекст шифра.
void magma_decrypt_block(Magma cipher, uint8_t block[MAGMA_BLOCK_SIZE])
Расшифровать блок данных.
intptr_t magma_cbc_encrypt_pad(MagmaCbc cipher, uint8_t *buf, uintptr_t buf_len, uintptr_t pos)
Зашифровать сообщение.
#define KUZNYECHIK_CBC_NONCE_SIZE
Размер синхропосылки KuznyechikCbc (в байтах)
Definition: gostcrypto.h:39
void magma_cfb_drop(MagmaCfb cipher)
Уничтожить контекст шифра.
intptr_t kuznyechik_mgm_encrypt(KuznyechikMgm cipher, const uint8_t nonce[KUZNYECHIK_MGM_NONCE_SIZE], const uint8_t *aad, uintptr_t aad_len, uint8_t *buf, uintptr_t buf_len, uint8_t tag[KUZNYECHIK_MGM_TAG_SIZE])
Зашифровать сообщение с присоединёнными данными.
#define KUZNYECHIK_CTR_NONCE_SIZE
Размер синхропосылки KuznyechikCtr (в байтах)
Definition: gostcrypto.h:129
void kuznyechik_drop(Kuznyechik cipher)
Уничтожить контекст.
void kuznyechik_mac_drop(KuznyechikMac state)
Уничтожить состояние режима выработки имитовставки.
uint8_t MagmaCbc[MAGMA_CBC_SIZE]
Блочный шифр с длиной блока 64 бит в режиме простой замены с зацеплением с размером синхропосылки 8 б...
Definition: gostcrypto.h:428
void kuznyechik_ofb_apply_keystream(KuznyechikOfb cipher, uint8_t *buf, uintptr_t buf_len)
Гаммировать сообщение ключевым потоком шифра.
#define MAGMA_CTR_NONCE_SIZE
Размер синхропосылки MagmaCtr (в байтах)
Definition: gostcrypto.h:144
intptr_t magma_ctr_apply_keystream(MagmaCtr cipher, uint8_t *buf, uintptr_t buf_len)
Гаммировать сообщение ключевым потоком шифра.
#define KUZNYECHIK_SIZE
Размер контекста Kuznyechik (в байтах)
Definition: gostcrypto.h:109
intptr_t kuznyechik_ctr_seek(KuznyechikCtr cipher, uint64_t pos)
Установить позицию ключевого потока шифра.
uint8_t Streebog256[STREEBOG256_SIZE]
Функция хэширования с длиной хэш-кода 256 бит.
Definition: gostcrypto.h:723
uint8_t KuznyechikCbc[KUZNYECHIK_CBC_SIZE]
Блочный шифр с длиной блока 128 бит в режиме простой замены с зацеплением с размером синхропосылки 16...
Definition: gostcrypto.h:405
void magma_mac_new(MagmaMac dst, const uint8_t key[SYMMETRIC_KEY_SIZE])
Создать состояние режима выработки имитовставки.
void magma_decrypt_blocks(Magma cipher, uint8_t blocks[MAGMA_BLOCK_SIZE], uintptr_t len)
Расшифровать массив блоков.
uint8_t KuznyechikEcb[KUZNYECHIK_ECB_SIZE]
Блочный шифр с длиной блока 128 бит в режиме простой замены.
Definition: gostcrypto.h:571
#define KUZNYECHIK_MGM_TAG_SIZE
Размер имитовставки KuznyechikMgm (в байтах)
Definition: gostcrypto.h:24
#define STREEBOG512_RESULT_SIZE
Длина хэш-кода Streebog512 (в байтах)
Definition: gostcrypto.h:291
void kuznyechik_mac_new(KuznyechikMac dst, const uint8_t key[SYMMETRIC_KEY_SIZE])
Создать состояние режима выработки имитовставки.
void kuznyechik_cfb_decrypt(KuznyechikCfb cipher, uint8_t *buf, uintptr_t buf_len)
Расшифровать сообщение.
intptr_t ec256_dsa_sign_hash(Ec256 cid, Ec256PrivateKey sk, const uint8_t hash[EC_256_WIDTH], const uint8_t rand_bytes[EC_256_WIDTH], uint8_t signature[EC_256_DOUBLE_WIDTH])
Подписать хэш сообщения.
#define MAGMA_OFB_SIZE
Размер контекста MagmaOfb (в байтах)
Definition: gostcrypto.h:361
uint8_t Ec512PublicKey[EC_512_PUBLIC_KEY_SIZE]
Несериализованный открытый ключ кривых Ec512 длиной EC_512_PUBLIC_KEY_SIZE и выравниванием EC_512_PUB...
Definition: gostcrypto.h:702
void kuznyechik_cbc_encrypt_blocks(KuznyechikCbc cipher, uint8_t blocks[KUZNYECHIK_BLOCK_SIZE], uintptr_t blocks_len)
Зашифровать массив блоков.
intptr_t ec256_gen_private_key(Ec256 cid, Ec256PrivateKey sk, const uint8_t rand_bytes[EC_256_WIDTH])
Создать закрытый ключ.
void streebog512_update(Streebog512 state, const uint8_t *msg, uintptr_t len)
Обновить состояние функции хэширования.
#define MAGMA_SIZE
Размер контекста Magma (в байтах)
Definition: gostcrypto.h:124
void kuznyechik_mac_finalize_reset(KuznyechikMac state, uint8_t res[KUZNYECHIK_MAC_RESULT_SIZE])
Финализировать состояние режима выработки имитовставки и заменить его новым.
#define SYMMETRIC_KEY_SIZE
Размер ключа симметричного шифра (в байтах)
Definition: gostcrypto.h:14
intptr_t magma_ecb_encrypt_pad(MagmaEcb cipher, uint8_t *buf, uintptr_t buf_len, uintptr_t pos)
Зашифровать сообщение.
void streebog256_finalize_reset(Streebog256 state, uint8_t res[STREEBOG256_RESULT_SIZE])
Финализировать состояние функции хэширования и заменить его новым.
void magma_ctr_new(MagmaCtr dst, const uint8_t key[SYMMETRIC_KEY_SIZE], const uint8_t nonce[MAGMA_CTR_NONCE_SIZE])
Создать контекст потокового шифра.
void magma_cbc_drop(MagmaCbc cipher)
Уничтожить контекст шифра.
bool magma_mac_verify(MagmaMac state, const uint8_t code[MAGMA_MAC_RESULT_SIZE])
Проверить целостность данных.
void streebog256_update(Streebog256 state, const uint8_t *msg, uintptr_t len)
Обновить состояние функции хэширования.
intptr_t ec512_vko256(Ec512 cid, Ec512PrivateKey sk, Ec512PublicKey pk, const uint8_t ukm[EC_512_WIDTH], uint8_t out[EC_256_WIDTH])
Выработать общий ключ.
uint64_t magma_ctr_get_pos(MagmaCtr cipher)
Получить позицию ключевого потока шифра.
void kuznyechik_cbc_new(KuznyechikCbc dst, const uint8_t key[SYMMETRIC_KEY_SIZE], const uint8_t nonce[KUZNYECHIK_CBC_NONCE_SIZE])
Создать контекст блочного шифра.
void kuznyechik_mac_finalize(KuznyechikMac state, uint8_t res[KUZNYECHIK_MAC_RESULT_SIZE])
Финализировать состояние режима выработки имитовставки.
void kuznyechik_mgm_new(KuznyechikMgm dst, const uint8_t key[SYMMETRIC_KEY_SIZE])
Создать контекст AEAD.
void streebog256_digest(const uint8_t *msg, uintptr_t len, uint8_t res[STREEBOG256_RESULT_SIZE])
Хэшировать сообщение.
void ec512_private_key_drop(Ec512PrivateKey sk)
Уничтожить закрытый ключ.
void kuznyechik_ecb_new(KuznyechikEcb dst, const uint8_t key[SYMMETRIC_KEY_SIZE])
Создать контекст блочного шифра.
#define MAGMA_ECB_SIZE
Размер контекста MagmaEcb (в байтах)
Definition: gostcrypto.h:174
intptr_t ec512_dsa_sign_hash(Ec512 cid, Ec512PrivateKey sk, const uint8_t hash[EC_512_WIDTH], const uint8_t rand_bytes[EC_512_WIDTH], uint8_t signature[EC_512_DOUBLE_WIDTH])
Подписать хэш сообщения.
void kuznyechik_cfb_new(KuznyechikCfb dst, const uint8_t key[SYMMETRIC_KEY_SIZE], const uint8_t nonce[KUZNYECHIK_CFB_NONCE_SIZE])
Создать контекст потокового шифра.
void magma_cbc_new(MagmaCbc dst, const uint8_t key[SYMMETRIC_KEY_SIZE], const uint8_t nonce[MAGMA_CBC_NONCE_SIZE])
Создать контекст блочного шифра.
intptr_t ec256_private_key_to_bytes(Ec256 cid, Ec256PrivateKey sk, uint8_t bytes[EC_256_WIDTH])
Сериализовать закрытый ключ.
#define MAGMA_MAC_RESULT_SIZE
Длина имитовставки MagmaMac (в байтах)
Definition: gostcrypto.h:321
#define KUZNYECHIK_OFB_NONCE_SIZE
Размер синхропосылки KuznyechikOfb (в байтах)
Definition: gostcrypto.h:336
#define KUZNYECHIK_CFB_SIZE
Размер контекста KuznyechikCfb (в байтах)
Definition: gostcrypto.h:79
void streebog256_reset(Streebog256 state)
Сбросить состояние функции хэширования.
void magma_cfb_encrypt(MagmaCfb cipher, uint8_t *buf, uintptr_t buf_len)
Зашифровать сообщение.
#define MAGMA_OFB_NONCE_SIZE
Размер синхропосылки MagmaOfb (в байтах)
Definition: gostcrypto.h:351
#define KUZNYECHIK_CFB_NONCE_SIZE
Размер синхропосылки KuznyechikCfb (в байтах)
Definition: gostcrypto.h:69
intptr_t kuznyechik_ecb_encrypt_pad(KuznyechikEcb cipher, uint8_t *buf, uintptr_t buf_len, uintptr_t pos)
Зашифровать сообщение.
intptr_t ec512_public_key_to_bytes(Ec512 cid, Ec512PublicKey pk, uint8_t bytes[EC_512_DOUBLE_WIDTH])
Сериализовать открытый ключ.
void streebog512_drop(Streebog512 state)
Уничтожить состояние функции хэширования.
#define KUZNYECHIK_ECB_SIZE
Размер контекста KuznyechikEcb (в байтах)
Definition: gostcrypto.h:164
void magma_cfb_new(MagmaCfb dst, const uint8_t key[SYMMETRIC_KEY_SIZE], const uint8_t nonce[MAGMA_CFB_NONCE_SIZE])
Создать контекст потокового шифра.
#define MAGMA_CTR_SIZE
Размер контекста MagmaCtr (в байтах)
Definition: gostcrypto.h:154
intptr_t kuznyechik_ecb_decrypt_pad(KuznyechikEcb cipher, uint8_t *buf, uintptr_t buf_len)
Расшифровать сообщение.
void kuznyechik_mac_update(KuznyechikMac state, const uint8_t *msg, uintptr_t len)
Обновить состояние режиму выработки имитовставки.
#define MAGMA_BLOCK_SIZE
Размер блока Magma (в байтах)
Definition: gostcrypto.h:114
void magma_encrypt_blocks(Magma cipher, uint8_t blocks[MAGMA_BLOCK_SIZE], uintptr_t len)
Зашифровать массив блоков.
uint8_t KuznyechikMac[KUZNYECHIK_MAC_SIZE]
Режим выработки имитовставки с использованием шифра с длиной блока 128 бит.
Definition: gostcrypto.h:766
void streebog256_new(Streebog256 dst)
Создать состояние функции хэширования.
void magma_mac_reset(MagmaMac state)
Сбросить состояние режима выработки имитовставки.
void magma_ecb_encrypt_blocks(MagmaEcb cipher, uint8_t blocks[MAGMA_BLOCK_SIZE], uintptr_t blocks_len)
Зашифровать массив блоков.
intptr_t ec512_dsa_verify(Ec512 cid, Ec512PublicKey pk, const uint8_t *msg, uintptr_t msg_len, const uint8_t signature[EC_512_DOUBLE_WIDTH])
Проверить подпись сообщения.
void magma_mac_drop(MagmaMac state)
Уничтожить состояние режима выработки имитовставки.
void kuznyechik_ctr_drop(KuznyechikCtr cipher)
Уничтожить контекст шифра.
#define KUZNYECHIK_MAC_SIZE
Размер состояния KuznyechikMac (в байтах)
Definition: gostcrypto.h:316
void streebog256_drop(Streebog256 state)
Уничтожить состояние функции хэширования.
void magma_ofb_drop(MagmaOfb cipher)
Уничтожить контекст шифра.
void kuznyechik_new(Kuznyechik dst, const uint8_t key[SYMMETRIC_KEY_SIZE])
Создать контекст блочного шифра.
uint8_t Ec512PrivateKey[EC_512_WIDTH]
Несериализованный закрытый ключ кривых Ec512 длиной EC_512_WIDTH и выравниванием EC_512_PRIVATE_KEY_A...
Definition: gostcrypto.h:695
#define KUZNYECHIK_OFB_SIZE
Размер контекста KuznyechikOfb (в байтах)
Definition: gostcrypto.h:346
void magma_cbc_decrypt_blocks(MagmaCbc cipher, uint8_t blocks[MAGMA_BLOCK_SIZE], uintptr_t blocks_len)
Расшифровать массив блоков.
intptr_t ec256_dsa_sign(Ec256 cid, Ec256PrivateKey sk, const uint8_t *msg, uintptr_t msg_len, const uint8_t rand_bytes[EC_256_WIDTH], uint8_t signature[EC_256_DOUBLE_WIDTH])
Подписать сообщение.
intptr_t ec256_public_key_to_bytes(Ec256 cid, Ec256PublicKey pk, uint8_t bytes[EC_256_DOUBLE_WIDTH])
Сериализовать открытый ключ.
void kuznyechik_ecb_decrypt_blocks(KuznyechikEcb cipher, uint8_t blocks[KUZNYECHIK_BLOCK_SIZE], uintptr_t blocks_len)
Расшифровать массив блоков.
uint8_t KuznyechikMgm[KUZNYECHIK_MGM_SIZE]
Блочный шифр с длиной блока 128 бит в режиме работы блочных шифров, реализующим аутентифицирующее шиф...
Definition: gostcrypto.h:382
uint8_t KuznyechikOfb[KUZNYECHIK_OFB_SIZE]
Потоковый шифр с длиной блока 128 бит в режиме гаммирования с обратной связью по выходу с размером си...
Definition: gostcrypto.h:807
intptr_t ec512_vko512(Ec512 cid, Ec512PrivateKey sk, Ec512PublicKey pk, const uint8_t ukm[EC_512_WIDTH], uint8_t out[EC_512_WIDTH])
Выработать общий ключ.
void magma_cbc_encrypt_blocks(MagmaCbc cipher, uint8_t blocks[MAGMA_BLOCK_SIZE], uintptr_t blocks_len)
Зашифровать массив блоков.
intptr_t ec256_vko256(Ec256 cid, Ec256PrivateKey sk, Ec256PublicKey pk, const uint8_t ukm[EC_256_WIDTH], uint8_t out[EC_256_WIDTH])
Выработать общий ключ.
#define EC_512_PUBLIC_KEY_SIZE
Длина несериализованного открытого ключа кривых Ec512 (в байтах)
Definition: gostcrypto.h:234
#define EC_256_WIDTH
Длина закрытого ключа и хэша сообщения кривых Ec256 (в байтах)
Definition: gostcrypto.h:179
uint8_t MagmaCfb[MAGMA_CFB_SIZE]
Потоковый шифр с длиной блока 64 бит в режиме гаммирования с обратной связью по шифртексту с размером...
Definition: gostcrypto.h:468
#define KUZNYECHIK_CTR_SIZE
Размер контекста KuznyechikCtr (в байтах)
Definition: gostcrypto.h:139
void kuznyechik_cbc_decrypt_blocks(KuznyechikCbc cipher, uint8_t blocks[KUZNYECHIK_BLOCK_SIZE], uintptr_t blocks_len)
Расшифровать массив блоков.
uint8_t Ec256PrivateKey[EC_256_WIDTH]
Несериализованный закрытый ключ кривых Ec256 длиной EC_256_WIDTH и выравниванием EC_256_PRIVATE_KEY_A...
Definition: gostcrypto.h:640
void kuznyechik_decrypt_blocks(Kuznyechik cipher, uint8_t blocks[KUZNYECHIK_BLOCK_SIZE], uintptr_t len)
Расшифровать массив блоков.
#define STREEBOG512_SIZE
Размер состояния Streebog512 (в байтах)
Definition: gostcrypto.h:301
void ec256_private_key_drop(Ec256PrivateKey sk)
Уничтожить закрытый ключ.
#define MAGMA_CBC_SIZE
Размер контекста MagmaCbc (в байтах)
Definition: gostcrypto.h:64
void magma_cfb_decrypt(MagmaCfb cipher, uint8_t *buf, uintptr_t buf_len)
Расшифровать сообщение.