GostCrypto  0.2.0
Криптография, реализованная в соответствии с ГОСТ
 Указатель Структуры данных Файлы Функции Определения типов Перечисления Элементы перечислений Друзья Макросы
Файл gostcrypto.h

Библиотека криптографических алгоритмов ГОСТ. Подробнее...

#include <stdint.h>
#include <stdbool.h>
Граф включаемых заголовочных файлов для gostcrypto.h:
Граф файлов, в которые включается этот файл:

См. исходные тексты.

Макросы

#define SYMMETRIC_KEY_SIZE   32
 Размер ключа симметричного шифра (в байтах) Подробнее...
 
#define KUZNYECHIK_MGM_NONCE_SIZE   16
 Размер синхропосылки KuznyechikMgm (в байтах) Подробнее...
 
#define KUZNYECHIK_MGM_TAG_SIZE   16
 Размер имитовставки KuznyechikMgm (в байтах) Подробнее...
 
#define KUZNYECHIK_MGM_ALIGNMENT   1
 Выравнивание контекста KuznyechikMgm (в байтах) Подробнее...
 
#define KUZNYECHIK_MGM_SIZE   160
 Размер контекста KuznyechikMgm (в байтах) Подробнее...
 
#define KUZNYECHIK_CBC_NONCE_SIZE   16
 Размер синхропосылки KuznyechikCbc (в байтах) Подробнее...
 
#define KUZNYECHIK_CBC_ALIGNMENT   1
 Выравнивание KuznyechikCbc (в байтах) Подробнее...
 
#define KUZNYECHIK_CBC_SIZE   177
 Размер контекста KuznyechikCbc (в байтах) Подробнее...
 
#define MAGMA_CBC_NONCE_SIZE   8
 Размер синхропосылки MagmaCbc (в байтах) Подробнее...
 
#define MAGMA_CBC_ALIGNMENT   4
 Выравнивание MagmaCbc (в байтах) Подробнее...
 
#define MAGMA_CBC_SIZE   44
 Размер контекста MagmaCbc (в байтах) Подробнее...
 
#define KUZNYECHIK_CFB_NONCE_SIZE   16
 Размер синхропосылки KuznyechikCfb (в байтах) Подробнее...
 
#define KUZNYECHIK_CFB_ALIGNMENT   1
 Выравнивание KuznyechikCfb (в байтах) Подробнее...
 
#define KUZNYECHIK_CFB_SIZE   177
 Размер контекста KuznyechikCfb (в байтах) Подробнее...
 
#define MAGMA_CFB_NONCE_SIZE   8
 Размер синхропосылки MagmaCfb (в байтах) Подробнее...
 
#define MAGMA_CFB_ALIGNMENT   4
 Выравнивание MagmaCfb (в байтах) Подробнее...
 
#define MAGMA_CFB_SIZE   44
 Размер контекста MagmaCfb (в байтах) Подробнее...
 
#define KUZNYECHIK_BLOCK_SIZE   16
 Размер блока шифра Kuznyechik (в байтах) Подробнее...
 
#define KUZNYECHIK_ALIGNMENT   1
 Выравнивание Kuznyechik (в байтах) Подробнее...
 
#define KUZNYECHIK_SIZE   160
 Размер контекста Kuznyechik (в байтах) Подробнее...
 
#define MAGMA_BLOCK_SIZE   8
 Размер блока Magma (в байтах) Подробнее...
 
#define MAGMA_ALIGNMENT   4
 Выравнивание Magma (в байтах) Подробнее...
 
#define MAGMA_SIZE   32
 Размер контекста Magma (в байтах) Подробнее...
 
#define KUZNYECHIK_CTR_NONCE_SIZE   8
 Размер синхропосылки KuznyechikCtr (в байтах) Подробнее...
 
#define KUZNYECHIK_CTR_ALIGNMENT   8
 Выравнивание KuznyechikCtr (в байтах) Подробнее...
 
#define KUZNYECHIK_CTR_SIZE   200
 Размер контекста KuznyechikCtr (в байтах) Подробнее...
 
#define MAGMA_CTR_NONCE_SIZE   4
 Размер синхропосылки MagmaCtr (в байтах) Подробнее...
 
#define MAGMA_CTR_ALIGNMENT   4
 Выравнивание MagmaCtr (в байтах) Подробнее...
 
#define MAGMA_CTR_SIZE   52
 Размер контекста MagmaCtr (в байтах) Подробнее...
 
#define KUZNYECHIK_ECB_ALIGNMENT   1
 Выравнивание KuznyechikEcb (в байтах) Подробнее...
 
#define KUZNYECHIK_ECB_SIZE   160
 Размер контекста KuznyechikEcb (в байтах) Подробнее...
 
#define MAGMA_ECB_ALIGNMENT   4
 Выравнивание MagmaEcb (в байтах) Подробнее...
 
#define MAGMA_ECB_SIZE   32
 Размер контекста MagmaEcb (в байтах) Подробнее...
 
#define EC_256_WIDTH   32
 Длина закрытого ключа и хэша сообщения кривых Ec256 (в байтах) Подробнее...
 
#define EC_256_DOUBLE_WIDTH   64
 Длина сериализованного открытого ключа и подписи кривых Ec256 (в байтах) Подробнее...
 
#define EC_256_PRIVATE_KEY_ALIGNMENT   8
 Выравнивание закрытого ключа кривых Ec256 (в байтах) Подробнее...
 
#define EC_256_PUBLIC_KEY_SIZE   96
 Длина несериализованного открытого ключа кривых Ec256 (в байтах) Подробнее...
 
#define EC_256_PUBLIC_KEY_ALIGNMENT   8
 Выравнивание несериализованного открытого ключа кривых Ec256 (в байтах) Подробнее...
 
#define GOST3410_2012_512A   643712121
 Идентификатор кривой id-tc26-gost-3410-12-512-paramSetA, заданной в Р 1323565.1.024-2019. Подробнее...
 
#define GOST3410_2012_512B   643712122
 Идентификатор кривой id-tc26-gost-3410-12-512-paramSetB, заданной в Р 1323565.1.024-2019. Подробнее...
 
#define GOST3410_2012_512C   643712123
 Идентификатор кривой id-tc26-gost-3410-12-512-paramSetC, заданной в Р 1323565.1.024-2019. Подробнее...
 
#define EC_512_WIDTH   64
 Длина закрытого ключа и хэша сообщения кривых Ec512 (в байтах) Подробнее...
 
#define EC_512_DOUBLE_WIDTH   128
 Длина сериализованного открытого ключа и подписи кривых Ec512 (в байтах) Подробнее...
 
#define EC_512_PRIVATE_KEY_ALIGNMENT   8
 Выравнивание закрытого ключа кривых Ec512 (в байтах) Подробнее...
 
#define EC_512_PUBLIC_KEY_SIZE   192
 Длина несериализованного открытого ключа кривых Ec512 (в байтах) Подробнее...
 
#define EC_512_PUBLIC_KEY_ALIGNMENT   8
 Выравнивание несериализованного открытого ключа кривых Ec512 (в байтах) Подробнее...
 
#define EC_ERR_CURVE_ID   -2
 Некорректный идентификатор эллиптической кривой. Подробнее...
 
#define EC_ERR_PUBLIC_KEY_BYTES   -3
 Сериализованное представление открытого ключа некорректно. Подробнее...
 
#define EC_ERR_PRIVATE_KEY_BYTES   -4
 Сериализованное представление закрытого ключа некорректно. Подробнее...
 
#define EC_ERR_SIGNATURE   -5
 Некорректная подпись для данного хэша/сообщения и открытого ключа. Подробнее...
 
#define EC_ERR_BAD_RAND_BYTES   -6
 Невозможно выполнить операцию с данными случайными числами. Подробнее...
 
#define EC_ERR_VKO_UKM   -7
 Нулевое значение UKM по модулю простого числа эллиптической кривой. Подробнее...
 
#define STREEBOG256_RESULT_SIZE   32
 Длина хэш-кода Streebog256 (в байтах) Подробнее...
 
#define STREEBOG256_ALIGNMENT   8
 Выравнивание состояния Streebog256 (в байтах) Подробнее...
 
#define STREEBOG256_SIZE   264
 Размер состояния Streebog256 (в байтах) Подробнее...
 
#define STREEBOG512_RESULT_SIZE   64
 Длина хэш-кода Streebog512 (в байтах) Подробнее...
 
#define STREEBOG512_ALIGNMENT   8
 Выравнивание состояния Streebog512 (в байтах) Подробнее...
 
#define STREEBOG512_SIZE   264
 Размер состояния Streebog512 (в байтах) Подробнее...
 
#define KUZNYECHIK_MAC_RESULT_SIZE   16
 Длина имитовставки KuznyechikMac (в байтах) Подробнее...
 
#define KUZNYECHIK_MAC_ALIGNMENT   8
 Выравнивание состояния KuznyechikMac (в байтах) Подробнее...
 
#define KUZNYECHIK_MAC_SIZE   216
 Размер состояния KuznyechikMac (в байтах) Подробнее...
 
#define MAGMA_MAC_RESULT_SIZE   8
 Длина имитовставки MagmaMac (в байтах) Подробнее...
 
#define MAGMA_MAC_ALIGNMENT   8
 Выравнивание состояния MagmaMac (в байтах) Подробнее...
 
#define MAGMA_MAC_SIZE   64
 Размер состояния MagmaMac (в байтах) Подробнее...
 
#define KUZNYECHIK_OFB_NONCE_SIZE   16
 Размер синхропосылки KuznyechikOfb (в байтах) Подробнее...
 
#define KUZNYECHIK_OFB_ALIGNMENT   1
 Выравнивание KuznyechikOfb (в байтах) Подробнее...
 
#define KUZNYECHIK_OFB_SIZE   178
 Размер контекста KuznyechikOfb (в байтах) Подробнее...
 
#define MAGMA_OFB_NONCE_SIZE   8
 Размер синхропосылки MagmaOfb (в байтах) Подробнее...
 
#define MAGMA_OFB_ALIGNMENT   4
 Выравнивание MagmaOfb (в байтах) Подробнее...
 
#define MAGMA_OFB_SIZE   44
 Размер контекста MagmaOfb (в байтах) Подробнее...
 
#define GOST3410_2012_256A   643712111
 Идентификатор кривой id-tc26-gost-3410-2012-256-paramSetA, заданной в Р 1323565.1.024-2019. Подробнее...
 
#define GOST3410_2012_256B   643712112
 Идентификатор кривой id-tc26-gost-3410-2012-256-paramSetB, заданной в Р 1323565.1.024-2019. Подробнее...
 
#define GOST3410_2012_256C   643712113
 Идентификатор кривой id-tc26-gost-3410-2012-256-paramSetC, заданной в Р 1323565.1.024-2019. Подробнее...
 
#define GOST3410_2012_256D   643712114
 Идентификатор кривой id-tc26-gost-3410-2012-256-paramSetD, заданной в Р 1323565.1.024-2019. Подробнее...
 

Определения типов

typedef uint8_t KuznyechikMgm [KUZNYECHIK_MGM_SIZE]
 Блочный шифр с длиной блока 128 бит в режиме работы блочных шифров, реализующим аутентифицирующее шифрование с присоединёнными данными (AEAD). Подробнее...
 
typedef uint8_t KuznyechikCbc [KUZNYECHIK_CBC_SIZE]
 Блочный шифр с длиной блока 128 бит в режиме простой замены с зацеплением с размером синхропосылки 16 байт. Подробнее...
 
typedef uint8_t MagmaCbc [MAGMA_CBC_SIZE]
 Блочный шифр с длиной блока 64 бит в режиме простой замены с зацеплением с размером синхропосылки 8 байт. Подробнее...
 
typedef uint8_t KuznyechikCfb [KUZNYECHIK_CFB_SIZE]
 Потоковый шифр с длиной блока 128 бит в режиме гаммирования с обратной связью по шифртексту с размером синхропосылки 16 байт. Подробнее...
 
typedef uint8_t MagmaCfb [MAGMA_CFB_SIZE]
 Потоковый шифр с длиной блока 64 бит в режиме гаммирования с обратной связью по шифртексту с размером синхропосылки 8 байт. Подробнее...
 
typedef uint8_t Kuznyechik [KUZNYECHIK_SIZE]
 Блочный шифр с длиной блока 128 бит. Подробнее...
 
typedef uint8_t Magma [MAGMA_SIZE]
 Блочный шифр с длиной блока 64 бит. Подробнее...
 
typedef uint8_t KuznyechikCtr [KUZNYECHIK_CTR_SIZE]
 Потоковый шифр с длиной блока 128 бит в режиме гаммирования. Подробнее...
 
typedef uint8_t MagmaCtr [MAGMA_CTR_SIZE]
 Потоковый шифр с длиной блока 64 бит в режиме гаммирования. Подробнее...
 
typedef uint8_t KuznyechikEcb [KUZNYECHIK_ECB_SIZE]
 Блочный шифр с длиной блока 128 бит в режиме простой замены. Подробнее...
 
typedef uint8_t MagmaEcb [MAGMA_ECB_SIZE]
 Блочный шифр с длиной блока 64 бит в режиме простой замены. Подробнее...
 
typedef uintptr_t Ec256
 Алгоритмы формирования, проверки электронной цифровой подписи и выработки общих ключей. Подробнее...
 
typedef uint8_t Ec256PrivateKey [EC_256_WIDTH]
 Несериализованный закрытый ключ кривых Ec256 длиной EC_256_WIDTH и выравниванием EC_256_PRIVATE_KEY_ALIGNMENT. Подробнее...
 
typedef uint8_t Ec256PublicKey [EC_256_PUBLIC_KEY_SIZE]
 Несериализованный открытый ключ кривых Ec256 длиной EC_256_PUBLIC_KEY_SIZE и выравниванием EC_256_PUBLIC_KEY_ALIGNMENT. Подробнее...
 
typedef uintptr_t Ec512
 Алгоритмы формирования, проверки электронной цифровой подписи и выработки общих ключей. Подробнее...
 
typedef uint8_t Ec512PrivateKey [EC_512_WIDTH]
 Несериализованный закрытый ключ кривых Ec512 длиной EC_512_WIDTH и выравниванием EC_512_PRIVATE_KEY_ALIGNMENT. Подробнее...
 
typedef uint8_t Ec512PublicKey [EC_512_PUBLIC_KEY_SIZE]
 Несериализованный открытый ключ кривых Ec512 длиной EC_512_PUBLIC_KEY_SIZE и выравниванием EC_512_PUBLIC_KEY_ALIGNMENT. Подробнее...
 
typedef uint8_t Streebog256 [STREEBOG256_SIZE]
 Функция хэширования с длиной хэш-кода 256 бит. Подробнее...
 
typedef uint8_t Streebog512 [STREEBOG512_SIZE]
 Функция хэширования с длиной хэш-кода 512 бит. Подробнее...
 
typedef uint8_t KuznyechikMac [KUZNYECHIK_MAC_SIZE]
 Режим выработки имитовставки с использованием шифра с длиной блока 128 бит. Подробнее...
 
typedef uint8_t MagmaMac [MAGMA_MAC_SIZE]
 Режим выработки имитовставки с использованием шифра с длиной блока 64 бит. Подробнее...
 
typedef uint8_t KuznyechikOfb [KUZNYECHIK_OFB_SIZE]
 Потоковый шифр с длиной блока 128 бит в режиме гаммирования с обратной связью по выходу с размером синхропосылки 16 байт. Подробнее...
 
typedef uint8_t MagmaOfb [MAGMA_OFB_SIZE]
 Потоковый шифр с длиной блока 64 бит в режиме гаммирования с обратной связью по выходу с размером синхропосылки 8 байт. Подробнее...
 

Функции

void kuznyechik_mgm_new (KuznyechikMgm dst, const uint8_t key[SYMMETRIC_KEY_SIZE])
 Создать контекст AEAD. Подробнее...
 
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])
 Зашифровать сообщение с присоединёнными данными. Подробнее...
 
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_mgm_drop (KuznyechikMgm cipher)
 Уничтожить контекст шифра Подробнее...
 
void kuznyechik_cbc_new (KuznyechikCbc dst, const uint8_t key[SYMMETRIC_KEY_SIZE], const uint8_t nonce[KUZNYECHIK_CBC_NONCE_SIZE])
 Создать контекст блочного шифра. Подробнее...
 
void kuznyechik_cbc_encrypt_blocks (KuznyechikCbc cipher, uint8_t blocks[KUZNYECHIK_BLOCK_SIZE], uintptr_t blocks_len)
 Зашифровать массив блоков. Подробнее...
 
void kuznyechik_cbc_decrypt_blocks (KuznyechikCbc cipher, uint8_t blocks[KUZNYECHIK_BLOCK_SIZE], uintptr_t blocks_len)
 Расшифровать массив блоков. Подробнее...
 
intptr_t kuznyechik_cbc_encrypt_pad (KuznyechikCbc cipher, uint8_t *buf, uintptr_t buf_len, uintptr_t pos)
 Зашифровать сообщение. Подробнее...
 
intptr_t kuznyechik_cbc_decrypt_pad (KuznyechikCbc cipher, uint8_t *buf, uintptr_t buf_len)
 Расшифровать сообщение. Подробнее...
 
void kuznyechik_cbc_drop (KuznyechikCbc cipher)
 Уничтожить контекст шифра. Подробнее...
 
void magma_cbc_new (MagmaCbc dst, const uint8_t key[SYMMETRIC_KEY_SIZE], const uint8_t nonce[MAGMA_CBC_NONCE_SIZE])
 Создать контекст блочного шифра. Подробнее...
 
void magma_cbc_encrypt_blocks (MagmaCbc cipher, uint8_t blocks[MAGMA_BLOCK_SIZE], uintptr_t blocks_len)
 Зашифровать массив блоков. Подробнее...
 
void magma_cbc_decrypt_blocks (MagmaCbc cipher, uint8_t blocks[MAGMA_BLOCK_SIZE], uintptr_t blocks_len)
 Расшифровать массив блоков. Подробнее...
 
intptr_t magma_cbc_encrypt_pad (MagmaCbc cipher, uint8_t *buf, uintptr_t buf_len, uintptr_t pos)
 Зашифровать сообщение. Подробнее...
 
intptr_t magma_cbc_decrypt_pad (MagmaCbc cipher, uint8_t *buf, uintptr_t buf_len)
 Расшифровать сообщение. Подробнее...
 
void magma_cbc_drop (MagmaCbc cipher)
 Уничтожить контекст шифра. Подробнее...
 
void kuznyechik_cfb_new (KuznyechikCfb dst, const uint8_t key[SYMMETRIC_KEY_SIZE], const uint8_t nonce[KUZNYECHIK_CFB_NONCE_SIZE])
 Создать контекст потокового шифра. Подробнее...
 
void kuznyechik_cfb_encrypt (KuznyechikCfb cipher, uint8_t *buf, uintptr_t buf_len)
 Зашифровать сообщение. Подробнее...
 
void kuznyechik_cfb_decrypt (KuznyechikCfb cipher, uint8_t *buf, uintptr_t buf_len)
 Расшифровать сообщение. Подробнее...
 
void kuznyechik_cfb_drop (KuznyechikCfb cipher)
 Уничтожить контекст шифра. Подробнее...
 
void magma_cfb_new (MagmaCfb dst, const uint8_t key[SYMMETRIC_KEY_SIZE], const uint8_t nonce[MAGMA_CFB_NONCE_SIZE])
 Создать контекст потокового шифра. Подробнее...
 
void magma_cfb_encrypt (MagmaCfb cipher, uint8_t *buf, uintptr_t buf_len)
 Зашифровать сообщение. Подробнее...
 
void magma_cfb_decrypt (MagmaCfb cipher, uint8_t *buf, uintptr_t buf_len)
 Расшифровать сообщение. Подробнее...
 
void magma_cfb_drop (MagmaCfb cipher)
 Уничтожить контекст шифра. Подробнее...
 
void kuznyechik_new (Kuznyechik dst, const uint8_t key[SYMMETRIC_KEY_SIZE])
 Создать контекст блочного шифра. Подробнее...
 
void kuznyechik_encrypt_block (Kuznyechik cipher, uint8_t block[KUZNYECHIK_BLOCK_SIZE])
 Зашифровать блок данных. Подробнее...
 
void kuznyechik_decrypt_block (Kuznyechik cipher, uint8_t block[KUZNYECHIK_BLOCK_SIZE])
 Расшифровать блок данных. Подробнее...
 
void kuznyechik_encrypt_blocks (Kuznyechik cipher, uint8_t blocks[KUZNYECHIK_BLOCK_SIZE], uintptr_t len)
 Зашифровать массив блоков. Подробнее...
 
void kuznyechik_decrypt_blocks (Kuznyechik cipher, uint8_t blocks[KUZNYECHIK_BLOCK_SIZE], uintptr_t len)
 Расшифровать массив блоков. Подробнее...
 
void kuznyechik_drop (Kuznyechik cipher)
 Уничтожить контекст. Подробнее...
 
void magma_new (Magma dst, const uint8_t key[SYMMETRIC_KEY_SIZE])
 Создать контекст блочного шифра. Подробнее...
 
void magma_encrypt_block (Magma cipher, uint8_t block[MAGMA_BLOCK_SIZE])
 Зашифровать блок данных. Подробнее...
 
void magma_decrypt_block (Magma cipher, uint8_t block[MAGMA_BLOCK_SIZE])
 Расшифровать блок данных. Подробнее...
 
void magma_encrypt_blocks (Magma cipher, uint8_t blocks[MAGMA_BLOCK_SIZE], uintptr_t len)
 Зашифровать массив блоков. Подробнее...
 
void magma_decrypt_blocks (Magma cipher, uint8_t blocks[MAGMA_BLOCK_SIZE], uintptr_t len)
 Расшифровать массив блоков. Подробнее...
 
void magma_drop (Magma cipher)
 Уничтожить контекст. Подробнее...
 
void kuznyechik_ctr_new (KuznyechikCtr dst, const uint8_t key[SYMMETRIC_KEY_SIZE], const uint8_t nonce[KUZNYECHIK_CTR_NONCE_SIZE])
 Создать контекст потокового шифра. Подробнее...
 
intptr_t kuznyechik_ctr_apply_keystream (KuznyechikCtr cipher, uint8_t *buf, uintptr_t buf_len)
 Гаммировать сообщение ключевым потоком шифра. Подробнее...
 
intptr_t kuznyechik_ctr_seek (KuznyechikCtr cipher, uint64_t pos)
 Установить позицию ключевого потока шифра. Подробнее...
 
uint64_t kuznyechik_ctr_get_pos (KuznyechikCtr cipher)
 Получить позицию ключевого потока шифра. Подробнее...
 
void kuznyechik_ctr_drop (KuznyechikCtr cipher)
 Уничтожить контекст шифра. Подробнее...
 
void magma_ctr_new (MagmaCtr dst, const uint8_t key[SYMMETRIC_KEY_SIZE], const uint8_t nonce[MAGMA_CTR_NONCE_SIZE])
 Создать контекст потокового шифра. Подробнее...
 
intptr_t magma_ctr_apply_keystream (MagmaCtr cipher, uint8_t *buf, uintptr_t buf_len)
 Гаммировать сообщение ключевым потоком шифра. Подробнее...
 
intptr_t magma_ctr_seek (MagmaCtr cipher, uint64_t pos)
 Установить позицию ключевого потока шифра. Подробнее...
 
uint64_t magma_ctr_get_pos (MagmaCtr cipher)
 Получить позицию ключевого потока шифра. Подробнее...
 
void magma_ctr_drop (MagmaCtr cipher)
 Уничтожить контекст шифра. Подробнее...
 
void kuznyechik_ecb_new (KuznyechikEcb dst, const uint8_t key[SYMMETRIC_KEY_SIZE])
 Создать контекст блочного шифра. Подробнее...
 
void kuznyechik_ecb_encrypt_blocks (KuznyechikEcb cipher, uint8_t blocks[KUZNYECHIK_BLOCK_SIZE], uintptr_t blocks_len)
 Зашифровать массив блоков Подробнее...
 
void kuznyechik_ecb_decrypt_blocks (KuznyechikEcb cipher, uint8_t blocks[KUZNYECHIK_BLOCK_SIZE], uintptr_t blocks_len)
 Расшифровать массив блоков. Подробнее...
 
intptr_t kuznyechik_ecb_encrypt_pad (KuznyechikEcb cipher, uint8_t *buf, uintptr_t buf_len, uintptr_t pos)
 Зашифровать сообщение. Подробнее...
 
intptr_t kuznyechik_ecb_decrypt_pad (KuznyechikEcb cipher, uint8_t *buf, uintptr_t buf_len)
 Расшифровать сообщение. Подробнее...
 
void kuznyechik_ecb_drop (KuznyechikEcb cipher)
 Уничтожить контекст шифра. Подробнее...
 
void magma_ecb_new (MagmaEcb dst, const uint8_t key[SYMMETRIC_KEY_SIZE])
 Создать контекст блочного шифра. Подробнее...
 
void magma_ecb_encrypt_blocks (MagmaEcb cipher, uint8_t blocks[MAGMA_BLOCK_SIZE], uintptr_t blocks_len)
 Зашифровать массив блоков. Подробнее...
 
void magma_ecb_decrypt_blocks (MagmaEcb cipher, uint8_t blocks[MAGMA_BLOCK_SIZE], uintptr_t blocks_len)
 Расшифровать массив блоков. Подробнее...
 
intptr_t magma_ecb_encrypt_pad (MagmaEcb cipher, uint8_t *buf, uintptr_t buf_len, uintptr_t pos)
 Зашифровать сообщение. Подробнее...
 
intptr_t magma_ecb_decrypt_pad (MagmaEcb cipher, uint8_t *buf, uintptr_t buf_len)
 Расшифровать сообщение. Подробнее...
 
void magma_ecb_drop (MagmaEcb cipher)
 Уничтожить контекст шифра. Подробнее...
 
intptr_t ec256_gen_private_key (Ec256 cid, Ec256PrivateKey sk, const uint8_t rand_bytes[EC_256_WIDTH])
 Создать закрытый ключ. Подробнее...
 
intptr_t ec256_get_public_key (Ec256 cid, Ec256PrivateKey sk, Ec256PublicKey pk)
 Получить открытый ключ. Подробнее...
 
intptr_t ec256_private_key_from_bytes (Ec256 cid, const uint8_t bytes[EC_256_WIDTH], Ec256PrivateKey sk)
 Десериалировать закрытый ключ. Подробнее...
 
intptr_t ec256_private_key_to_bytes (Ec256 cid, Ec256PrivateKey sk, uint8_t bytes[EC_256_WIDTH])
 Сериализовать закрытый ключ. Подробнее...
 
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])
 Подписать хэш сообщения. Подробнее...
 
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_from_bytes (Ec256 cid, const uint8_t bytes[EC_256_DOUBLE_WIDTH], Ec256PublicKey pk)
 Десериалировать открытый ключ. Подробнее...
 
intptr_t ec256_public_key_to_bytes (Ec256 cid, Ec256PublicKey pk, uint8_t bytes[EC_256_DOUBLE_WIDTH])
 Сериализовать открытый ключ. Подробнее...
 
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])
 Проверить подпись хэша сообщения. Подробнее...
 
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])
 Проверить подпись сообщения. Подробнее...
 
intptr_t ec256_vko256 (Ec256 cid, Ec256PrivateKey sk, Ec256PublicKey pk, const uint8_t ukm[EC_256_WIDTH], uint8_t out[EC_256_WIDTH])
 Выработать общий ключ. Подробнее...
 
void ec256_private_key_drop (Ec256PrivateKey sk)
 Уничтожить закрытый ключ. Подробнее...
 
intptr_t ec512_gen_private_key (Ec512 cid, Ec512PrivateKey sk, const uint8_t rand_bytes[EC_512_WIDTH])
 Создать закрытый ключ. Подробнее...
 
intptr_t ec512_get_public_key (Ec512 cid, Ec512PrivateKey sk, Ec512PublicKey pk)
 Получить открытый ключ. Подробнее...
 
intptr_t ec512_private_key_from_bytes (Ec512 cid, const uint8_t bytes[EC_512_WIDTH], Ec512PrivateKey sk)
 Десериалировать закрытый ключ. Подробнее...
 
intptr_t ec512_private_key_to_bytes (Ec512 cid, Ec512PrivateKey sk, uint8_t bytes[EC_512_WIDTH])
 Сериализовать закрытый ключ. Подробнее...
 
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])
 Подписать хэш сообщения. Подробнее...
 
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_public_key_from_bytes (Ec512 cid, const uint8_t bytes[EC_512_DOUBLE_WIDTH], Ec512PublicKey pk)
 Десериалировать открытый ключ. Подробнее...
 
intptr_t ec512_public_key_to_bytes (Ec512 cid, Ec512PublicKey pk, uint8_t bytes[EC_512_DOUBLE_WIDTH])
 Сериализовать открытый ключ. Подробнее...
 
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_dsa_verify (Ec512 cid, Ec512PublicKey pk, const uint8_t *msg, uintptr_t msg_len, const uint8_t signature[EC_512_DOUBLE_WIDTH])
 Проверить подпись сообщения. Подробнее...
 
intptr_t ec512_vko512 (Ec512 cid, Ec512PrivateKey sk, Ec512PublicKey pk, const uint8_t ukm[EC_512_WIDTH], uint8_t out[EC_512_WIDTH])
 Выработать общий ключ. Подробнее...
 
intptr_t ec512_vko256 (Ec512 cid, Ec512PrivateKey sk, Ec512PublicKey pk, const uint8_t ukm[EC_512_WIDTH], uint8_t out[EC_256_WIDTH])
 Выработать общий ключ. Подробнее...
 
void ec512_private_key_drop (Ec512PrivateKey sk)
 Уничтожить закрытый ключ. Подробнее...
 
void streebog256_new (Streebog256 dst)
 Создать состояние функции хэширования. Подробнее...
 
void streebog256_digest (const uint8_t *msg, uintptr_t len, uint8_t res[STREEBOG256_RESULT_SIZE])
 Хэшировать сообщение. Подробнее...
 
void streebog256_update (Streebog256 state, const uint8_t *msg, uintptr_t len)
 Обновить состояние функции хэширования. Подробнее...
 
void streebog256_finalize (Streebog256 state, uint8_t res[STREEBOG256_RESULT_SIZE])
 Финализировать состояние функции хэширования. Подробнее...
 
void streebog256_finalize_reset (Streebog256 state, uint8_t res[STREEBOG256_RESULT_SIZE])
 Финализировать состояние функции хэширования и заменить его новым. Подробнее...
 
void streebog256_reset (Streebog256 state)
 Сбросить состояние функции хэширования. Подробнее...
 
void streebog256_drop (Streebog256 state)
 Уничтожить состояние функции хэширования. Подробнее...
 
void streebog512_new (Streebog512 dst)
 Создать состояние функции хэширования. Подробнее...
 
void streebog512_digest (const uint8_t *msg, uintptr_t len, uint8_t res[STREEBOG512_RESULT_SIZE])
 Хэшировать сообщение. Подробнее...
 
void streebog512_update (Streebog512 state, const uint8_t *msg, uintptr_t len)
 Обновить состояние функции хэширования. Подробнее...
 
void streebog512_finalize (Streebog512 state, uint8_t res[STREEBOG512_RESULT_SIZE])
 Финализировать состояние функции хэширования. Подробнее...
 
void streebog512_finalize_reset (Streebog512 state, uint8_t res[STREEBOG512_RESULT_SIZE])
 Финализировать состояние функции хэширования и заменить его новым. Подробнее...
 
void streebog512_reset (Streebog512 state)
 Сбросить состояние функции хэширования. Подробнее...
 
void streebog512_drop (Streebog512 state)
 Уничтожить состояние функции хэширования. Подробнее...
 
void kuznyechik_mac_new (KuznyechikMac dst, const uint8_t key[SYMMETRIC_KEY_SIZE])
 Создать состояние режима выработки имитовставки. Подробнее...
 
void kuznyechik_mac_update (KuznyechikMac state, const uint8_t *msg, uintptr_t len)
 Обновить состояние режиму выработки имитовставки. Подробнее...
 
void kuznyechik_mac_finalize (KuznyechikMac state, uint8_t res[KUZNYECHIK_MAC_RESULT_SIZE])
 Финализировать состояние режима выработки имитовставки. Подробнее...
 
void kuznyechik_mac_finalize_reset (KuznyechikMac state, uint8_t res[KUZNYECHIK_MAC_RESULT_SIZE])
 Финализировать состояние режима выработки имитовставки и заменить его новым. Подробнее...
 
bool kuznyechik_mac_verify (KuznyechikMac state, const uint8_t code[KUZNYECHIK_MAC_RESULT_SIZE])
 Проверить целостность данных. Подробнее...
 
void kuznyechik_mac_reset (KuznyechikMac state)
 Сбросить состояние режима выработки имитовставки. Подробнее...
 
void kuznyechik_mac_drop (KuznyechikMac state)
 Уничтожить состояние режима выработки имитовставки. Подробнее...
 
void magma_mac_new (MagmaMac dst, const uint8_t key[SYMMETRIC_KEY_SIZE])
 Создать состояние режима выработки имитовставки. Подробнее...
 
void magma_mac_update (MagmaMac state, const uint8_t *msg, uintptr_t len)
 Обновить состояние режиму выработки имитовставки. Подробнее...
 
void magma_mac_finalize (MagmaMac state, uint8_t res[MAGMA_MAC_RESULT_SIZE])
 Финализировать состояние режима выработки имитовставки. Подробнее...
 
void magma_mac_finalize_reset (MagmaMac state, uint8_t res[MAGMA_MAC_RESULT_SIZE])
 Финализировать состояние режима выработки имитовставки и заменить его новым. Подробнее...
 
bool magma_mac_verify (MagmaMac state, const uint8_t code[MAGMA_MAC_RESULT_SIZE])
 Проверить целостность данных. Подробнее...
 
void magma_mac_reset (MagmaMac state)
 Сбросить состояние режима выработки имитовставки. Подробнее...
 
void magma_mac_drop (MagmaMac state)
 Уничтожить состояние режима выработки имитовставки. Подробнее...
 
void kuznyechik_ofb_new (KuznyechikOfb dst, const uint8_t key[SYMMETRIC_KEY_SIZE], const uint8_t nonce[KUZNYECHIK_OFB_NONCE_SIZE])
 Создать контекст потокового шифра. Подробнее...
 
void kuznyechik_ofb_apply_keystream (KuznyechikOfb cipher, uint8_t *buf, uintptr_t buf_len)
 Гаммировать сообщение ключевым потоком шифра. Подробнее...
 
void kuznyechik_ofb_drop (KuznyechikOfb cipher)
 Уничтожить контекст шифра. Подробнее...
 
void magma_ofb_new (MagmaOfb dst, const uint8_t key[SYMMETRIC_KEY_SIZE], const uint8_t nonce[MAGMA_OFB_NONCE_SIZE])
 Создать контекст потокового шифра. Подробнее...
 
void magma_ofb_apply_keystream (MagmaOfb cipher, uint8_t *buf, uintptr_t buf_len)
 Гаммировать сообщение ключевым потоком шифра. Подробнее...
 
void magma_ofb_drop (MagmaOfb cipher)
 Уничтожить контекст шифра. Подробнее...
 

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

Библиотека криптографических алгоритмов ГОСТ.

См. определение в файле gostcrypto.h

Макросы

#define EC_256_DOUBLE_WIDTH   64

Длина сериализованного открытого ключа и подписи кривых Ec256 (в байтах)

См. определение в файле gostcrypto.h строка 184

#define EC_256_PRIVATE_KEY_ALIGNMENT   8

Выравнивание закрытого ключа кривых Ec256 (в байтах)

См. определение в файле gostcrypto.h строка 189

#define EC_256_PUBLIC_KEY_ALIGNMENT   8

Выравнивание несериализованного открытого ключа кривых Ec256 (в байтах)

См. определение в файле gostcrypto.h строка 199

#define EC_256_PUBLIC_KEY_SIZE   96

Длина несериализованного открытого ключа кривых Ec256 (в байтах)

См. определение в файле gostcrypto.h строка 194

#define EC_256_WIDTH   32

Длина закрытого ключа и хэша сообщения кривых Ec256 (в байтах)

См. определение в файле gostcrypto.h строка 179

#define EC_512_DOUBLE_WIDTH   128

Длина сериализованного открытого ключа и подписи кривых Ec512 (в байтах)

См. определение в файле gostcrypto.h строка 224

#define EC_512_PRIVATE_KEY_ALIGNMENT   8

Выравнивание закрытого ключа кривых Ec512 (в байтах)

См. определение в файле gostcrypto.h строка 229

#define EC_512_PUBLIC_KEY_ALIGNMENT   8

Выравнивание несериализованного открытого ключа кривых Ec512 (в байтах)

См. определение в файле gostcrypto.h строка 239

#define EC_512_PUBLIC_KEY_SIZE   192

Длина несериализованного открытого ключа кривых Ec512 (в байтах)

См. определение в файле gostcrypto.h строка 234

#define EC_512_WIDTH   64

Длина закрытого ключа и хэша сообщения кривых Ec512 (в байтах)

См. определение в файле gostcrypto.h строка 219

#define EC_ERR_BAD_RAND_BYTES   -6

Невозможно выполнить операцию с данными случайными числами.

Случайные числа не удовлетворяют условиям (ГОСТ 34.10-2012 и ГОСТ 34.10-2018). Повторите операцию с другими случайными числами.

См. определение в файле gostcrypto.h строка 266

#define EC_ERR_CURVE_ID   -2

Некорректный идентификатор эллиптической кривой.

См. определение в файле gostcrypto.h строка 244

#define EC_ERR_PRIVATE_KEY_BYTES   -4

Сериализованное представление закрытого ключа некорректно.

См. определение в файле gostcrypto.h строка 254

#define EC_ERR_PUBLIC_KEY_BYTES   -3

Сериализованное представление открытого ключа некорректно.

См. определение в файле gostcrypto.h строка 249

#define EC_ERR_SIGNATURE   -5

Некорректная подпись для данного хэша/сообщения и открытого ключа.

См. определение в файле gostcrypto.h строка 259

#define EC_ERR_VKO_UKM   -7

Нулевое значение UKM по модулю простого числа эллиптической кривой.

См. определение в файле gostcrypto.h строка 271

#define GOST3410_2012_256A   643712111

Идентификатор кривой id-tc26-gost-3410-2012-256-paramSetA, заданной в Р 1323565.1.024-2019.

См. определение в файле gostcrypto.h строка 831

#define GOST3410_2012_256B   643712112

Идентификатор кривой id-tc26-gost-3410-2012-256-paramSetB, заданной в Р 1323565.1.024-2019.

См. определение в файле gostcrypto.h строка 836

#define GOST3410_2012_256C   643712113

Идентификатор кривой id-tc26-gost-3410-2012-256-paramSetC, заданной в Р 1323565.1.024-2019.

См. определение в файле gostcrypto.h строка 841

#define GOST3410_2012_256D   643712114

Идентификатор кривой id-tc26-gost-3410-2012-256-paramSetD, заданной в Р 1323565.1.024-2019.

См. определение в файле gostcrypto.h строка 846

#define GOST3410_2012_512A   643712121

Идентификатор кривой id-tc26-gost-3410-12-512-paramSetA, заданной в Р 1323565.1.024-2019.

См. определение в файле gostcrypto.h строка 204

#define GOST3410_2012_512B   643712122

Идентификатор кривой id-tc26-gost-3410-12-512-paramSetB, заданной в Р 1323565.1.024-2019.

См. определение в файле gostcrypto.h строка 209

#define GOST3410_2012_512C   643712123

Идентификатор кривой id-tc26-gost-3410-12-512-paramSetC, заданной в Р 1323565.1.024-2019.

См. определение в файле gostcrypto.h строка 214

#define KUZNYECHIK_ALIGNMENT   1

Выравнивание Kuznyechik (в байтах)

См. определение в файле gostcrypto.h строка 104

#define KUZNYECHIK_BLOCK_SIZE   16

Размер блока шифра Kuznyechik (в байтах)

См. определение в файле gostcrypto.h строка 99

#define KUZNYECHIK_CBC_ALIGNMENT   1

Выравнивание KuznyechikCbc (в байтах)

См. определение в файле gostcrypto.h строка 44

#define KUZNYECHIK_CBC_NONCE_SIZE   16

Размер синхропосылки KuznyechikCbc (в байтах)

См. определение в файле gostcrypto.h строка 39

#define KUZNYECHIK_CBC_SIZE   177

Размер контекста KuznyechikCbc (в байтах)

См. определение в файле gostcrypto.h строка 49

#define KUZNYECHIK_CFB_ALIGNMENT   1

Выравнивание KuznyechikCfb (в байтах)

См. определение в файле gostcrypto.h строка 74

#define KUZNYECHIK_CFB_NONCE_SIZE   16

Размер синхропосылки KuznyechikCfb (в байтах)

См. определение в файле gostcrypto.h строка 69

#define KUZNYECHIK_CFB_SIZE   177

Размер контекста KuznyechikCfb (в байтах)

См. определение в файле gostcrypto.h строка 79

#define KUZNYECHIK_CTR_ALIGNMENT   8

Выравнивание KuznyechikCtr (в байтах)

См. определение в файле gostcrypto.h строка 134

#define KUZNYECHIK_CTR_NONCE_SIZE   8

Размер синхропосылки KuznyechikCtr (в байтах)

См. определение в файле gostcrypto.h строка 129

#define KUZNYECHIK_CTR_SIZE   200

Размер контекста KuznyechikCtr (в байтах)

См. определение в файле gostcrypto.h строка 139

#define KUZNYECHIK_ECB_ALIGNMENT   1

Выравнивание KuznyechikEcb (в байтах)

См. определение в файле gostcrypto.h строка 159

#define KUZNYECHIK_ECB_SIZE   160

Размер контекста KuznyechikEcb (в байтах)

См. определение в файле gostcrypto.h строка 164

#define KUZNYECHIK_MAC_ALIGNMENT   8

Выравнивание состояния KuznyechikMac (в байтах)

См. определение в файле gostcrypto.h строка 311

#define KUZNYECHIK_MAC_RESULT_SIZE   16

Длина имитовставки KuznyechikMac (в байтах)

См. определение в файле gostcrypto.h строка 306

#define KUZNYECHIK_MAC_SIZE   216

Размер состояния KuznyechikMac (в байтах)

См. определение в файле gostcrypto.h строка 316

#define KUZNYECHIK_MGM_ALIGNMENT   1

Выравнивание контекста KuznyechikMgm (в байтах)

См. определение в файле gostcrypto.h строка 29

#define KUZNYECHIK_MGM_NONCE_SIZE   16

Размер синхропосылки KuznyechikMgm (в байтах)

См. определение в файле gostcrypto.h строка 19

#define KUZNYECHIK_MGM_SIZE   160

Размер контекста KuznyechikMgm (в байтах)

См. определение в файле gostcrypto.h строка 34

#define KUZNYECHIK_MGM_TAG_SIZE   16

Размер имитовставки KuznyechikMgm (в байтах)

См. определение в файле gostcrypto.h строка 24

#define KUZNYECHIK_OFB_ALIGNMENT   1

Выравнивание KuznyechikOfb (в байтах)

См. определение в файле gostcrypto.h строка 341

#define KUZNYECHIK_OFB_NONCE_SIZE   16

Размер синхропосылки KuznyechikOfb (в байтах)

См. определение в файле gostcrypto.h строка 336

#define KUZNYECHIK_OFB_SIZE   178

Размер контекста KuznyechikOfb (в байтах)

См. определение в файле gostcrypto.h строка 346

#define KUZNYECHIK_SIZE   160

Размер контекста Kuznyechik (в байтах)

См. определение в файле gostcrypto.h строка 109

#define MAGMA_ALIGNMENT   4

Выравнивание Magma (в байтах)

См. определение в файле gostcrypto.h строка 119

#define MAGMA_BLOCK_SIZE   8

Размер блока Magma (в байтах)

См. определение в файле gostcrypto.h строка 114

#define MAGMA_CBC_ALIGNMENT   4

Выравнивание MagmaCbc (в байтах)

См. определение в файле gostcrypto.h строка 59

#define MAGMA_CBC_NONCE_SIZE   8

Размер синхропосылки MagmaCbc (в байтах)

См. определение в файле gostcrypto.h строка 54

#define MAGMA_CBC_SIZE   44

Размер контекста MagmaCbc (в байтах)

См. определение в файле gostcrypto.h строка 64

#define MAGMA_CFB_ALIGNMENT   4

Выравнивание MagmaCfb (в байтах)

См. определение в файле gostcrypto.h строка 89

#define MAGMA_CFB_NONCE_SIZE   8

Размер синхропосылки MagmaCfb (в байтах)

См. определение в файле gostcrypto.h строка 84

#define MAGMA_CFB_SIZE   44

Размер контекста MagmaCfb (в байтах)

См. определение в файле gostcrypto.h строка 94

#define MAGMA_CTR_ALIGNMENT   4

Выравнивание MagmaCtr (в байтах)

См. определение в файле gostcrypto.h строка 149

#define MAGMA_CTR_NONCE_SIZE   4

Размер синхропосылки MagmaCtr (в байтах)

См. определение в файле gostcrypto.h строка 144

#define MAGMA_CTR_SIZE   52

Размер контекста MagmaCtr (в байтах)

См. определение в файле gostcrypto.h строка 154

#define MAGMA_ECB_ALIGNMENT   4

Выравнивание MagmaEcb (в байтах)

См. определение в файле gostcrypto.h строка 169

#define MAGMA_ECB_SIZE   32

Размер контекста MagmaEcb (в байтах)

См. определение в файле gostcrypto.h строка 174

#define MAGMA_MAC_ALIGNMENT   8

Выравнивание состояния MagmaMac (в байтах)

См. определение в файле gostcrypto.h строка 326

#define MAGMA_MAC_RESULT_SIZE   8

Длина имитовставки MagmaMac (в байтах)

См. определение в файле gostcrypto.h строка 321

#define MAGMA_MAC_SIZE   64

Размер состояния MagmaMac (в байтах)

См. определение в файле gostcrypto.h строка 331

#define MAGMA_OFB_ALIGNMENT   4

Выравнивание MagmaOfb (в байтах)

См. определение в файле gostcrypto.h строка 356

#define MAGMA_OFB_NONCE_SIZE   8

Размер синхропосылки MagmaOfb (в байтах)

См. определение в файле gostcrypto.h строка 351

#define MAGMA_OFB_SIZE   44

Размер контекста MagmaOfb (в байтах)

См. определение в файле gostcrypto.h строка 361

#define MAGMA_SIZE   32

Размер контекста Magma (в байтах)

См. определение в файле gostcrypto.h строка 124

#define STREEBOG256_ALIGNMENT   8

Выравнивание состояния Streebog256 (в байтах)

См. определение в файле gostcrypto.h строка 281

#define STREEBOG256_RESULT_SIZE   32

Длина хэш-кода Streebog256 (в байтах)

См. определение в файле gostcrypto.h строка 276

#define STREEBOG256_SIZE   264

Размер состояния Streebog256 (в байтах)

См. определение в файле gostcrypto.h строка 286

#define STREEBOG512_ALIGNMENT   8

Выравнивание состояния Streebog512 (в байтах)

См. определение в файле gostcrypto.h строка 296

#define STREEBOG512_RESULT_SIZE   64

Длина хэш-кода Streebog512 (в байтах)

См. определение в файле gostcrypto.h строка 291

#define STREEBOG512_SIZE   264

Размер состояния Streebog512 (в байтах)

См. определение в файле gostcrypto.h строка 301

#define SYMMETRIC_KEY_SIZE   32

Размер ключа симметричного шифра (в байтах)

См. определение в файле gostcrypto.h строка 14

Типы

typedef uintptr_t Ec256

Алгоритмы формирования, проверки электронной цифровой подписи и выработки общих ключей.

Определены в ГОСТ 34.10-2012 и ГОСТ 34.10-2018.

Типы ключей для работы с эллиптическими кривыми:

Набор функций для работы с эллиптическими кривыми:

Идентификаторы эллиптических кривых:

Набор констант для работы с эллиптическими кривыми:

См. определение в файле gostcrypto.h строка 633

typedef uint8_t Ec256PrivateKey[EC_256_WIDTH]

Несериализованный закрытый ключ кривых Ec256 длиной EC_256_WIDTH и выравниванием EC_256_PRIVATE_KEY_ALIGNMENT.

Предупреждения
Работа ключа одной кривой с идентификатором другой кривой приводит к неопределенному поведению.

См. определение в файле gostcrypto.h строка 640

typedef uint8_t Ec256PublicKey[EC_256_PUBLIC_KEY_SIZE]

Несериализованный открытый ключ кривых Ec256 длиной EC_256_PUBLIC_KEY_SIZE и выравниванием EC_256_PUBLIC_KEY_ALIGNMENT.

Предупреждения
Работа ключа одной кривой с идентификатором другой кривой приводит к неопределенному поведению.

См. определение в файле gostcrypto.h строка 647

typedef uintptr_t Ec512

Алгоритмы формирования, проверки электронной цифровой подписи и выработки общих ключей.

Определены в ГОСТ 34.10-2012 и ГОСТ 34.10-2018.

Типы ключей для работы с эллиптическими кривыми:

Набор функций для работы с эллиптическими кривыми:

Идентификаторы эллиптических кривых:

Набор констант для работы с эллиптическими кривыми:

См. определение в файле gostcrypto.h строка 688

typedef uint8_t Ec512PrivateKey[EC_512_WIDTH]

Несериализованный закрытый ключ кривых Ec512 длиной EC_512_WIDTH и выравниванием EC_512_PRIVATE_KEY_ALIGNMENT.

Предупреждения
Работа ключа одной кривой с идентификатором другой кривой приводит к неопределенному поведению.

См. определение в файле gostcrypto.h строка 695

typedef uint8_t Ec512PublicKey[EC_512_PUBLIC_KEY_SIZE]

Несериализованный открытый ключ кривых Ec512 длиной EC_512_PUBLIC_KEY_SIZE и выравниванием EC_512_PUBLIC_KEY_ALIGNMENT.

Предупреждения
Работа ключа одной кривой с идентификатором другой кривой приводит к неопределенному поведению.

См. определение в файле gostcrypto.h строка 702

typedef uint8_t Kuznyechik[KUZNYECHIK_SIZE]

Блочный шифр с длиной блока 128 бит.

Определён в ГОСТ Р 34.12-2015 (Кузнечик), ГОСТ 34.12-2018.

Набор функций для работы с шифром:

Набор констант для работы с шифром:

См. определение в файле gostcrypto.h строка 489

typedef uint8_t KuznyechikCbc[KUZNYECHIK_CBC_SIZE]

Блочный шифр с длиной блока 128 бит в режиме простой замены с зацеплением с размером синхропосылки 16 байт.

Определен в ГОСТ 34.13-2015 и ГОСТ 34.13-2018.

Набор функций для работы с шифром:

Набор констант для работы с шифром:

См. определение в файле gostcrypto.h строка 405

typedef uint8_t KuznyechikCfb[KUZNYECHIK_CFB_SIZE]

Потоковый шифр с длиной блока 128 бит в режиме гаммирования с обратной связью по шифртексту с размером синхропосылки 16 байт.

Определен в ГОСТ 34.13-2015 и ГОСТ 34.13-2018.

Набор функций для работы с шифром:

Набор констант для работы с шифром:

См. определение в файле gostcrypto.h строка 448

typedef uint8_t KuznyechikCtr[KUZNYECHIK_CTR_SIZE]

Потоковый шифр с длиной блока 128 бит в режиме гаммирования.

Определен в ГОСТ 34.13-2015 и ГОСТ 34.13-2018.

Набор функций для работы с шифром:

Набор констант для работы с шифром:

См. определение в файле gostcrypto.h строка 530

typedef uint8_t KuznyechikEcb[KUZNYECHIK_ECB_SIZE]

Блочный шифр с длиной блока 128 бит в режиме простой замены.

Определен в ГОСТ 34.13-2015 и ГОСТ 34.13-2018.

Набор функций для работы с шифром:

Набор констант для работы с шифром:

См. определение в файле gostcrypto.h строка 571

typedef uint8_t KuznyechikMac[KUZNYECHIK_MAC_SIZE]

Режим выработки имитовставки с использованием шифра с длиной блока 128 бит.

Определен в ГОСТ 34.13-2015 и ГОСТ 34.13-2018.

Набор функций для работы с режимом выработки имитовставки:

Набор констант для работы с режимом выработки имитовставки:

См. определение в файле gostcrypto.h строка 766

typedef uint8_t KuznyechikMgm[KUZNYECHIK_MGM_SIZE]

Блочный шифр с длиной блока 128 бит в режиме работы блочных шифров, реализующим аутентифицирующее шифрование с присоединёнными данными (AEAD).

Определен в Р 1323565.1.026–2019.

Набор функций для работы с MGM:

Набор констант для работы с MGM:

См. определение в файле gostcrypto.h строка 382

typedef uint8_t KuznyechikOfb[KUZNYECHIK_OFB_SIZE]

Потоковый шифр с длиной блока 128 бит в режиме гаммирования с обратной связью по выходу с размером синхропосылки 16 байт.

Определен в ГОСТ Р 34.13-2015 и ГОСТ 34.13-2018.

Набор функций для работы с шифром:

Набор констант для работы с шифром:

См. определение в файле gostcrypto.h строка 807

typedef uint8_t Magma[MAGMA_SIZE]

Блочный шифр с длиной блока 64 бит.

Определён в ГОСТ Р 34.12-2015 (Магма), ГОСТ 34.12-2018.

Набор функций для работы с шифром:

Набор констант для работы с шифром:

См. определение в файле gostcrypto.h строка 510

typedef uint8_t MagmaCbc[MAGMA_CBC_SIZE]

Блочный шифр с длиной блока 64 бит в режиме простой замены с зацеплением с размером синхропосылки 8 байт.

Определен в ГОСТ 34.13-2015 и ГОСТ 34.13-2018.

Набор функций для работы с шифром:

Набор констант для работы с шифром:

См. определение в файле gostcrypto.h строка 428

typedef uint8_t MagmaCfb[MAGMA_CFB_SIZE]

Потоковый шифр с длиной блока 64 бит в режиме гаммирования с обратной связью по шифртексту с размером синхропосылки 8 байт.

Определен в ГОСТ 34.13-2015 и ГОСТ 34.13-2018.

Набор функций для работы с шифром:

Набор констант для работы с шифром:

См. определение в файле gostcrypto.h строка 468

typedef uint8_t MagmaCtr[MAGMA_CTR_SIZE]

Потоковый шифр с длиной блока 64 бит в режиме гаммирования.

Определен в ГОСТ 34.13-2015 и ГОСТ 34.13-2018.

Набор функций для работы с шифром:

Набор констант для работы с шифром:

См. определение в файле gostcrypto.h строка 550

typedef uint8_t MagmaEcb[MAGMA_ECB_SIZE]

Блочный шифр с длиной блока 64 бит в режиме простой замены.

Определен в ГОСТ 34.13-2015 и ГОСТ 34.13-2018.

Набор функций для работы с шифром:

Набор констант для работы с шифром:

См. определение в файле gostcrypto.h строка 592

typedef uint8_t MagmaMac[MAGMA_MAC_SIZE]

Режим выработки имитовставки с использованием шифра с длиной блока 64 бит.

Определен в ГОСТ 34.13-2015 и ГОСТ 34.13-2018.

Набор функций для работы с режимом выработки имитовставки:

Набор констант для работы с режимом выработки имитовставки:

См. определение в файле gostcrypto.h строка 788

typedef uint8_t MagmaOfb[MAGMA_OFB_SIZE]

Потоковый шифр с длиной блока 64 бит в режиме гаммирования с обратной связью по выходу с размером синхропосылки 8 байт.

Определен в ГОСТ Р 34.13-2015 и ГОСТ 34.13-2018.

Набор функций для работы с шифром:

Набор констант для работы с шифром:

См. определение в файле gostcrypto.h строка 826

typedef uint8_t Streebog256[STREEBOG256_SIZE]

Функция хэширования с длиной хэш-кода 256 бит.

Определена в ГОСТ Р 34.11-2012 (Стрибог) и ГОСТ 34.11-2018.

Набор функций для работы с функцией хэширования:

Набор констант для работы с функцией хэширования:

См. определение в файле gostcrypto.h строка 723

typedef uint8_t Streebog512[STREEBOG512_SIZE]

Функция хэширования с длиной хэш-кода 512 бит.

Определена в ГОСТ Р 34.11-2012 (Стрибог) и ГОСТ 34.11-2018.

Набор функций для работы с функцией хэширования:

Набор констант для работы с функцией хэширования:

См. определение в файле gostcrypto.h строка 744

Функции

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] 
)

Подписать сообщение.

Подписывает сообщение с помощью закрытого ключа для заданной эллиптической кривой.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cid— идентификатор кривой
sk— закрытый ключ
msg— указатель на сообщение
msg_len— длина сообщения
rand_bytes— набор чисел, сгенерированный случайным образом
signature— результирующая подпись
Возвращает
0, в случае успеха, EC_ERR_CURVE_ID, EC_ERR_BAD_RAND_BYTES, в случае ошибки
См. также
Ec256
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] 
)

Подписать хэш сообщения.

Подписывает хэш сообщения с помощью закрытого ключа для заданной эллиптической кривой. По ГОСТу хэш сообщения должен быть вычислен с помощью функции Стрибог.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cid— идентификатор кривой
sk— закрытый ключ
hash— хэш сообщения
rand_bytes— набор чисел, сгенерированный случайным образом
signature— результирующая подпись
Возвращает
0, в случае успеха, EC_ERR_CURVE_ID, EC_ERR_BAD_RAND_BYTES, в случае ошибки
См. также
Ec256
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] 
)

Проверить подпись сообщения.

Проверяет подпись сообщения с помощью публичной ключа для заданной эллиптической кривой.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cid— идентификатор кривой
pk— открытый ключ
msg— сообщение
msg_len— длина сообщения
signature— подпись сообщения
Возвращает
0, в случае успеха, EC_ERR_CURVE_ID, EC_ERR_SIGNATURE, в случае ошибки
См. также
Ec256
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] 
)

Проверить подпись хэша сообщения.

Проверяет подпись хэша сообщения с помощью публичной ключа для заданной эллиптической кривой. По ГОСТу хэш сообщения должен быть вычислен с помощью функции Стрибог.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cid— идентификатор кривой
pk— открытый ключ
hash— хэш сообщения
signature— подпись сообщения
Возвращает
0, в случае успеха, EC_ERR_CURVE_ID, EC_ERR_SIGNATURE, в случае ошибки
См. также
Ec256
intptr_t ec256_gen_private_key ( Ec256  cid,
Ec256PrivateKey  sk,
const uint8_t  rand_bytes[EC_256_WIDTH] 
)

Создать закрытый ключ.

Создаёт закрытый ключ для заданной эллиптической кривой.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cid— идентификатор кривой
sk— результирующий закрытый ключ
rand_bytes— набор чисел, сгенерированный случайным образом
Возвращает
0, в случае успеха, EC_ERR_CURVE_ID, EC_ERR_BAD_RAND_BYTES, в случае ошибки
См. также
Ec256
intptr_t ec256_get_public_key ( Ec256  cid,
Ec256PrivateKey  sk,
Ec256PublicKey  pk 
)

Получить открытый ключ.

Получает открытый ключ из закрытого ключа для заданной эллиптической кривой.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cid— идентификатор кривой
sk— закрытый ключ
pk— результирующий открытый ключ
Возвращает
0, в случае успеха, EC_ERR_CURVE_ID, в случае ошибки
См. также
Ec256
void ec256_private_key_drop ( Ec256PrivateKey  sk)

Уничтожить закрытый ключ.

Очищает переданный ключ и обнуляет память. Ключ должен быть предварительно создан с помощью функции ec256_gen_private_key, ec256_private_key_from_bytes или скопирован из существующего.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Использование ключа после вызова данной функции приводит к неопределённому поведению.
Аргументы
sk— ненулевой указатель на закрытый ключ
См. также
Ec256
intptr_t ec256_private_key_from_bytes ( Ec256  cid,
const uint8_t  bytes[EC_256_WIDTH],
Ec256PrivateKey  sk 
)

Десериалировать закрытый ключ.

Десериализует закрытый ключ из представления ГОСТ 34.10-2012 раздел 5.2/ГОСТ 34.10-2018 раздел 5.3 во внутреннее представление для заданной эллиптической кривой.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cid— идентификатор кривой
bytes— сериализованное представление
sk— результирующий закрытый ключ
Возвращает
0, в случае успеха, EC_ERR_CURVE_ID, EC_ERR_PRIVATE_KEY_BYTES, в случае ошибки
См. также
Ec256
intptr_t ec256_private_key_to_bytes ( Ec256  cid,
Ec256PrivateKey  sk,
uint8_t  bytes[EC_256_WIDTH] 
)

Сериализовать закрытый ключ.

Сериализует закрытый ключ из внутреннего представления в представление ГОСТ 34.10-2012 раздел 5.2/ГОСТ 34.10-2018 раздел 5.3 для заданной эллиптической кривой.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cid— идентификатор кривой
sk— закрытый ключ
bytes— результирующее сериализованное представление
Возвращает
0, в случае успеха, EC_ERR_CURVE_ID, в случае ошибки
См. также
Ec256
intptr_t ec256_public_key_from_bytes ( Ec256  cid,
const uint8_t  bytes[EC_256_DOUBLE_WIDTH],
Ec256PublicKey  pk 
)

Десериалировать открытый ключ.

Десериализует открытый ключ из представления ГОСТ 34.10-2012 раздел 5.2/ГОСТ 34.10-2018 раздел 5.3 во внутреннее представление для заданной эллиптической кривой.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cid— идентификатор кривой
bytes— сериализованное представление
pk— результирующий открытый ключ
Возвращает
0, в случае успеха, EC_ERR_CURVE_ID, EC_ERR_PUBLIC_KEY_BYTES, в случае ошибки
См. также
Ec256
intptr_t ec256_public_key_to_bytes ( Ec256  cid,
Ec256PublicKey  pk,
uint8_t  bytes[EC_256_DOUBLE_WIDTH] 
)

Сериализовать открытый ключ.

Сериализует открытый ключ из внутреннего представления в представление ГОСТ 34.10-2012 раздел 5.2/ГОСТ 34.10-2018 раздел 5.3 для заданной эллиптической кривой.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cid— идентификатор кривой
pk— открытый ключ
bytes— результирующее сериализованное представление
Возвращает
0, в случае успеха, EC_ERR_CURVE_ID, в случае ошибки
См. также
Ec256
intptr_t ec256_vko256 ( Ec256  cid,
Ec256PrivateKey  sk,
Ec256PublicKey  pk,
const uint8_t  ukm[EC_256_WIDTH],
uint8_t  out[EC_256_WIDTH] 
)

Выработать общий ключ.

Вырабатывает 256-битный алгоритм выработки ключей обмена длиной 256 бит, используя 256-битные эллиптические кривые.

Если в ukm передан нулевой указатель, то используется значение по умолчанию равное единице. Если указатель не нулевой, то значение на которое он указывает не должно быть равным нулю по модулю простого числа эллиптической кривой. В случае передачи такого значения возвращается код ошибки EC_ERR_VKO_UKM. Если используемый приватный или публичный ключ статичны (т.е. используются неэфемерные ключи), то рекомендуется использовать ukm, содержащий не менее 128 переменных бит.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению. (Для параметра ukm нулевое значение допустимо.)
Аргументы
cid— идентификатор кривой
sk— свой закрытый ключ
pk— чужой открытый ключ
ukm— указатель на пользовательский ключевой материал (опционально)
out— результирующий общий ключ
Возвращает
0, в случае успеха, EC_ERR_CURVE_ID, EC_ERR_VKO_UKM, в случае ошибки
См. также
Ec256
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] 
)

Подписать сообщение.

Подписывает сообщение с помощью закрытого ключа для заданной эллиптической кривой.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cid— идентификатор кривой
sk— закрытый ключ
msg— указатель на сообщение
msg_len— длина сообщения
rand_bytes— набор чисел, сгенерированный случайным образом
signature— результирующая подпись
Возвращает
0, в случае успеха, EC_ERR_CURVE_ID, EC_ERR_BAD_RAND_BYTES, в случае ошибки
См. также
Ec512
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] 
)

Подписать хэш сообщения.

Подписывает хэш сообщения с помощью закрытого ключа для заданной эллиптической кривой. По ГОСТу хэш сообщения должен быть вычислен с помощью функции Стрибог.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cid— идентификатор кривой
sk— закрытый ключ
hash— хэш сообщения
rand_bytes— набор чисел, сгенерированный случайным образом
signature— результирующая подпись
Возвращает
0, в случае успеха, EC_ERR_CURVE_ID, EC_ERR_BAD_RAND_BYTES, в случае ошибки
См. также
Ec512
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] 
)

Проверить подпись сообщения.

Проверяет подпись сообщения с помощью публичной ключа для заданной эллиптической кривой.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cid— идентификатор кривой
pk— открытый ключ
msg— сообщение
msg_len— длина сообщения
signature— подпись сообщения
Возвращает
0, в случае успеха, EC_ERR_CURVE_ID, EC_ERR_SIGNATURE, в случае ошибки
См. также
Ec512
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] 
)

Проверить подпись хэша сообщения.

Проверяет подпись хэша сообщения с помощью публичной ключа для заданной эллиптической кривой. По ГОСТу хэш сообщения должен быть вычислен с помощью функции Стрибог.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cid— идентификатор кривой
pk— открытый ключ
hash— хэш сообщения
signature— подпись сообщения
Возвращает
0, в случае успеха, EC_ERR_CURVE_ID, EC_ERR_SIGNATURE, в случае ошибки
См. также
Ec512
intptr_t ec512_gen_private_key ( Ec512  cid,
Ec512PrivateKey  sk,
const uint8_t  rand_bytes[EC_512_WIDTH] 
)

Создать закрытый ключ.

Создаёт закрытый ключ для заданной эллиптической кривой.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cid— идентификатор кривой
sk— результирующий закрытый ключ
rand_bytes— набор чисел, сгенерированный случайным образом
Возвращает
0, в случае успеха, EC_ERR_CURVE_ID, EC_ERR_BAD_RAND_BYTES, в случае ошибки
См. также
Ec512
intptr_t ec512_get_public_key ( Ec512  cid,
Ec512PrivateKey  sk,
Ec512PublicKey  pk 
)

Получить открытый ключ.

Получает открытый ключ из закрытого ключа для заданной эллиптической кривой.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cid— идентификатор кривой
sk— закрытый ключ
pk— результирующий открытый ключ
Возвращает
0, в случае успеха, EC_ERR_CURVE_ID, в случае ошибки
См. также
Ec512
void ec512_private_key_drop ( Ec512PrivateKey  sk)

Уничтожить закрытый ключ.

Очищает переданный ключ и обнуляет память. Ключ должен быть предварительно создан с помощью функции ec512_gen_private_key, ec512_private_key_from_bytes или скопирован из существующего.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Использование ключа после вызова данной функции приводит к неопределённому поведению.
Аргументы
sk— ненулевой указатель на закрытый ключ
См. также
Ec512
intptr_t ec512_private_key_from_bytes ( Ec512  cid,
const uint8_t  bytes[EC_512_WIDTH],
Ec512PrivateKey  sk 
)

Десериалировать закрытый ключ.

Десериализует закрытый ключ из представления ГОСТ 34.10-2012 раздел 5.2/ГОСТ 34.10-2018 раздел 5.3 во внутреннее представление для заданной эллиптической кривой.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cid— идентификатор кривой
bytes— сериализованное представление
sk— результирующий закрытый ключ
Возвращает
0, в случае успеха, EC_ERR_CURVE_ID, EC_ERR_PRIVATE_KEY_BYTES, в случае ошибки
См. также
Ec512
intptr_t ec512_private_key_to_bytes ( Ec512  cid,
Ec512PrivateKey  sk,
uint8_t  bytes[EC_512_WIDTH] 
)

Сериализовать закрытый ключ.

Сериализует закрытый ключ из внутреннего представления в представление ГОСТ 34.10-2012 раздел 5.2ГОСТ 34.10-2018 раздел 5.3 для заданной эллиптической кривой.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cid— идентификатор кривой
sk— закрытый ключ
bytes— результирующее сериализованное представление
Возвращает
0, в случае успеха, EC_ERR_CURVE_ID, в случае ошибки
См. также
Ec512
intptr_t ec512_public_key_from_bytes ( Ec512  cid,
const uint8_t  bytes[EC_512_DOUBLE_WIDTH],
Ec512PublicKey  pk 
)

Десериалировать открытый ключ.

Десериализует открытый ключ из представления ГОСТ 34.10-2012 раздел 5.2/ГОСТ 34.10-2018 раздел 5.3 во внутреннее представление для заданной эллиптической кривой.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cid— идентификатор кривой
bytes— сериализованное представление
pk— результирующий открытый ключ
Возвращает
0, в случае успеха, EC_ERR_CURVE_ID, EC_ERR_PUBLIC_KEY_BYTES, в случае ошибки
См. также
Ec512
intptr_t ec512_public_key_to_bytes ( Ec512  cid,
Ec512PublicKey  pk,
uint8_t  bytes[EC_512_DOUBLE_WIDTH] 
)

Сериализовать открытый ключ.

Сериализует открытый ключ из внутреннего представления в представление ГОСТ 34.10-2012 раздел 5.2/ГОСТ 34.10-2018 раздел 5.3 для заданной эллиптической кривой.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cid— идентификатор кривой
pk— открытый ключ
bytes— результирующее сериализованное представление
Возвращает
0, в случае успеха, EC_ERR_CURVE_ID, в случае ошибки
См. также
Ec512
intptr_t ec512_vko256 ( Ec512  cid,
Ec512PrivateKey  sk,
Ec512PublicKey  pk,
const uint8_t  ukm[EC_512_WIDTH],
uint8_t  out[EC_256_WIDTH] 
)

Выработать общий ключ.

Вырабатывает алгоритм выработки ключей обмена длиной 256 бит, используя 512-битные эллиптические кривые.

Если в ukm передан нулевой указатель, то используется значение по умолчанию равное единице. Если указатель не нулевой, то значение на которое он указывает не должно быть равным нулю по модулю простого числа эллиптической кривой. В случае передачи такого значения возвращается код ошибки EC_ERR_VKO_UKM. Если используемый приватный или публичный ключ статичны (т.е. используются неэфемерные ключи), то рекомендуется использовать ukm, содержащий не менее 128 переменных бит.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению. (Для параметра ukm нулевое значение допустимо.)
Аргументы
cid— идентификатор кривой
sk— свой закрытый ключ
pk— чужой открытый ключ
ukm— указатель на пользовательский ключевой материал (опционально)
out— результирующий общий ключ
Возвращает
0, в случае успеха, EC_ERR_CURVE_ID, EC_ERR_VKO_UKM, в случае ошибки
См. также
Ec512
intptr_t ec512_vko512 ( Ec512  cid,
Ec512PrivateKey  sk,
Ec512PublicKey  pk,
const uint8_t  ukm[EC_512_WIDTH],
uint8_t  out[EC_512_WIDTH] 
)

Выработать общий ключ.

Вырабатывает алгоритм выработки ключей обмена длиной 512 бит, используя 512-битные эллиптические кривые.

Если в ukm передан нулевой указатель, то используется значение по умолчанию равное единице. Если указатель не нулевой, то значение на которое он указывает не должно быть равным нулю по модулю простого числа эллиптической кривой. В случае передачи такого значения возвращается код ошибки EC_ERR_VKO_UKM. Если используемый приватный или публичный ключ статичны (т.е. используются неэфемерные ключи), то рекомендуется использовать ukm, содержащий не менее 128 переменных бит.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению. (Для параметра ukm нулевое значение допустимо.)
Аргументы
cid— идентификатор кривой
sk— свой закрытый ключ
pk— чужой открытый ключ
ukm— указатель на пользовательский ключевой материал (опционально)
out— результирующий общий ключ
Возвращает
0, в случае успеха, EC_ERR_CURVE_ID, EC_ERR_VKO_UKM, в случае ошибки
См. также
Ec512
void kuznyechik_cbc_decrypt_blocks ( KuznyechikCbc  cipher,
uint8_t  blocks[KUZNYECHIK_BLOCK_SIZE],
uintptr_t  blocks_len 
)

Расшифровать массив блоков.

Расшифровывает блоки данных с помощью заданного контекста KuznyechikCbc. Блоки расшифровываются на месте.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
blocks— ненулевой указатель на массив блоков. Блок представляет собой последовательность байт длиной KUZNYECHIK_BLOCK_SIZE.
blocks_len— длина массива блоков (в блоках)
См. также
KuznyechikCbc
intptr_t kuznyechik_cbc_decrypt_pad ( KuznyechikCbc  cipher,
uint8_t *  buf,
uintptr_t  buf_len 
)

Расшифровать сообщение.

Расшифровывает сообщение на месте с помощью заданного контекста KuznyechikCbc. Уничтожает контекст шифра.

Возвращает ошибку в случае, когда длина буфера не делится на KUZNYECHIK_BLOCK_SIZE или расшифрованное сообщение имеет некорректное дополнение.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Использование указателя на контекст после вызова данной функции приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
buf— ненулевой указатель на массив байт
buf_len— длина буфера (в байтах)
Возвращает
Длину сообщения, в случае успеха или -1, в случае ошибки
См. также
KuznyechikCbc
void kuznyechik_cbc_drop ( KuznyechikCbc  cipher)

Уничтожить контекст шифра.

Очищает переданный контекст и обнуляет память. Контекст должен быть предварительно создан с помощью функции kuznyechik_cbc_new или скопирован из существующего.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Использование указателя на контекст после вызова данной функции приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
См. также
KuznyechikCbc
void kuznyechik_cbc_encrypt_blocks ( KuznyechikCbc  cipher,
uint8_t  blocks[KUZNYECHIK_BLOCK_SIZE],
uintptr_t  blocks_len 
)

Зашифровать массив блоков.

Шифрует блоки данных с помощью заданного контекста KuznyechikCbc. Блоки шифруются на месте.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
blocks— ненулевой указатель на массив блоков. Блок представляет собой последовательность байт длиной KUZNYECHIK_BLOCK_SIZE.
blocks_len— длина массива блоков (в блоках)
См. также
KuznyechikCbc
intptr_t kuznyechik_cbc_encrypt_pad ( KuznyechikCbc  cipher,
uint8_t *  buf,
uintptr_t  buf_len,
uintptr_t  pos 
)

Зашифровать сообщение.

Зашифровывает сообщение на месте с помощью заданного контекста KuznyechikCbc. Уничтожает контекст шифра.

Байты 0..pos буфера buf используются как сообщение, когда же байты pos..buf_len используются как зарезервированное место для дополнения.

Возвращает ошибку в случае, когда место для дополнения недостаточно велико.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Использование указателя на контекст после вызова данной функции приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
buf— ненулевой указатель на массив байт
buf_len— длина буфера (в байтах)
pos— индекс байта, с которого начинается дополнение в буфере buf
Возвращает
Длину шифротекста, в случае успеха или -1, в случае ошибки
См. также
KuznyechikCbc
void kuznyechik_cbc_new ( KuznyechikCbc  dst,
const uint8_t  key[SYMMETRIC_KEY_SIZE],
const uint8_t  nonce[KUZNYECHIK_CBC_NONCE_SIZE] 
)

Создать контекст блочного шифра.

Создаёт контекст блочного шифра в режиме простой замены с зацеплением с использованием ключа key и синхропосылки nonce.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
dst— ненулевой указатель на область памяти длиной KUZNYECHIK_CBC_SIZE и выравниванием KUZNYECHIK_CBC_ALIGNMENT
key— ненулевой указатель на массив длинной SYMMETRIC_KEY_SIZE байт
nonce— ненулевой указатель на массив длинной KUZNYECHIK_CBC_NONCE_SIZE байт
См. также
KuznyechikCbc
void kuznyechik_cfb_decrypt ( KuznyechikCfb  cipher,
uint8_t *  buf,
uintptr_t  buf_len 
)

Расшифровать сообщение.

Расшифровывает сообщение на месте с помощью заданного контекста KuznyechikCfb.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
buf— ненулевой указатель на массив байт
buf_len— длина буфера (в байтах)
См. также
KuznyechikCfb
void kuznyechik_cfb_drop ( KuznyechikCfb  cipher)

Уничтожить контекст шифра.

Очищает переданный контекст и обнуляет память. Контекст должен быть предварительно создан с помощью функции kuznyechik_cfb_new или скопирован из существующего.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Использование указателя на контекст после вызова данной функции приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
См. также
KuznyechikCfb
void kuznyechik_cfb_encrypt ( KuznyechikCfb  cipher,
uint8_t *  buf,
uintptr_t  buf_len 
)

Зашифровать сообщение.

Зашифровывает сообщение на месте с помощью заданного контекста KuznyechikCfb.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
buf— ненулевой указатель на массив байт
buf_len— длина буфера (в байтах)
См. также
KuznyechikCfb
void kuznyechik_cfb_new ( KuznyechikCfb  dst,
const uint8_t  key[SYMMETRIC_KEY_SIZE],
const uint8_t  nonce[KUZNYECHIK_CFB_NONCE_SIZE] 
)

Создать контекст потокового шифра.

Создаёт контекст потокового шифра в режиме гаммирования с обратной связью по шифртексту с использованием ключа key и синхропосылки nonce.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
dst— ненулевой указатель на область памяти длиной KUZNYECHIK_CFB_SIZE и выравниванием KUZNYECHIK_CFB_ALIGNMENT
key— ненулевой указатель на массив длинной SYMMETRIC_KEY_SIZE байт
nonce— ненулевой указатель на массив длинной KUZNYECHIK_CFB_NONCE_SIZE байт
См. также
KuznyechikCfb
intptr_t kuznyechik_ctr_apply_keystream ( KuznyechikCtr  cipher,
uint8_t *  buf,
uintptr_t  buf_len 
)

Гаммировать сообщение ключевым потоком шифра.

Шифрует или расшифровывает сообщение на месте посредством гаммирования его ключевым потоком шифра. Возвращает ошибку в случае, когда достигнут конец ключевого потока.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
buf— ненулевой указатель на массив байт
buf_len— длина буфера (в байтах)
Возвращает
0, в случае успеха, -1, в случае ошибки
См. также
KuznyechikCtr
void kuznyechik_ctr_drop ( KuznyechikCtr  cipher)

Уничтожить контекст шифра.

Очищает переданный контекст и обнуляет память. Контекст должен быть предварительно создан с помощью функции kuznyechik_ctr_new или скопирован из существующего.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Использование указателя на контекст после вызова данной функции приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
См. также
KuznyechikCtr
uint64_t kuznyechik_ctr_get_pos ( KuznyechikCtr  cipher)

Получить позицию ключевого потока шифра.

Возвращает текущую позицию ключевого потока шифра.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
Возвращает
Текущая позиция ключевого потока
См. также
KuznyechikCtr
void kuznyechik_ctr_new ( KuznyechikCtr  dst,
const uint8_t  key[SYMMETRIC_KEY_SIZE],
const uint8_t  nonce[KUZNYECHIK_CTR_NONCE_SIZE] 
)

Создать контекст потокового шифра.

Создаёт контекст потокового шифра в режиме гаммирования с использованием ключа key и синхропосылки nonce

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
dst— ненулевой указатель на область памяти длиной KUZNYECHIK_CTR_SIZE и выравниванием KUZNYECHIK_CTR_ALIGNMENT
key— ненулевой указатель на массив длинной SYMMETRIC_KEY_SIZE байт
nonce— ненулевой указатель на массив длинной KUZNYECHIK_CTR_NONCE_SIZE байт
См. также
KuznyechikCtr
intptr_t kuznyechik_ctr_seek ( KuznyechikCtr  cipher,
uint64_t  pos 
)

Установить позицию ключевого потока шифра.

Устанавливает текущую позицию ключевого потока шифра. Возвращает ошибку в случае, когда требуемая позиция превышает длину ключевого потока.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
pos— новая позиция ключевого потока
Возвращает
0, в случае успеха, -1, в случае ошибки
См. также
KuznyechikCtr
void kuznyechik_decrypt_block ( Kuznyechik  cipher,
uint8_t  block[KUZNYECHIK_BLOCK_SIZE] 
)

Расшифровать блок данных.

Расшифровывает блок с помощью заданного контекста Kuznyechik. Блок расшифровывается на месте.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределенному поведению.
Аргументы
cipher- ненулевой указатель на корректный контекст.
block- ненулевой указатель на блок длиной KUZNYECHIK_BLOCK_SIZE байт.
См. также
Kuznyechik
void kuznyechik_decrypt_blocks ( Kuznyechik  cipher,
uint8_t  blocks[KUZNYECHIK_BLOCK_SIZE],
uintptr_t  len 
)

Расшифровать массив блоков.

Расшифровывает массив блоков с помощью заданного контекста Kuznyechik. Блоки расшифровываются на месте.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределенному поведению.
Аргументы
cipher- ненулевой указатель на корректный контекст.
blocks- ненулевой указатель на массив блоков, каждый блок длиной KUZNYECHIK_BLOCK_SIZE байт.
len- длина массива блоков.
См. также
Kuznyechik
void kuznyechik_drop ( Kuznyechik  cipher)

Уничтожить контекст.

Очищает переданный контекст и обнуляет память. Контекст должен быть предварительно создан с помощью функции kuznyechik_new или скопирован из существующего. После вызова этой функции работать с этим контекстом нельзя, так как он перестает быть корректным.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределенному поведению.
Аргументы
cipher- ненулевой указатель на корректный контекст.
См. также
Kuznyechik
void kuznyechik_ecb_decrypt_blocks ( KuznyechikEcb  cipher,
uint8_t  blocks[KUZNYECHIK_BLOCK_SIZE],
uintptr_t  blocks_len 
)

Расшифровать массив блоков.

Расшифровывает блоки данных с помощью заданного контекста KuznyechikEcb. Блоки расшифровываются на месте.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
blocks— ненулевой указатель на массив блоков. Блок представляет собой последовательность байт длиной KUZNYECHIK_BLOCK_SIZE.
blocks_len— длина массива блоков (в блоках)
См. также
KuznyechikEcb
intptr_t kuznyechik_ecb_decrypt_pad ( KuznyechikEcb  cipher,
uint8_t *  buf,
uintptr_t  buf_len 
)

Расшифровать сообщение.

Расшифровывает сообщение на месте с помощью заданного контекста KuznyechikEcb. Уничтожает контекст шифра.

Возвращает ошибку в случае, когда длина буфера не делится на KUZNYECHIK_BLOCK_SIZE или расшифрованное сообщение имеет некорректное дополнение.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Использование указателя на контекст после вызова данной функции приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
buf— ненулевой указатель на массив байт
buf_len— длина буфера (в байтах)
Возвращает
Длину сообщения, в случае успеха или -1, в случае ошибки
См. также
KuznyechikEcb
void kuznyechik_ecb_drop ( KuznyechikEcb  cipher)

Уничтожить контекст шифра.

Очищает переданный контекст и обнуляет память. Контекст должен быть предварительно создан с помощью функции kuznyechik_ecb_new или скопирован из существующего.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Использование указателя на контекст после вызова данной функции приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
См. также
KuznyechikEcb
void kuznyechik_ecb_encrypt_blocks ( KuznyechikEcb  cipher,
uint8_t  blocks[KUZNYECHIK_BLOCK_SIZE],
uintptr_t  blocks_len 
)

Зашифровать массив блоков

Шифрует блоки данных с помощью заданного контекста KuznyechikEcb. Блоки шифруются на месте.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
blocks— ненулевой указатель на массив блоков. Блок представляет собой последовательность байт длиной KUZNYECHIK_BLOCK_SIZE.
blocks_len— длина массива блоков (в блоках)
См. также
KuznyechikEcb
intptr_t kuznyechik_ecb_encrypt_pad ( KuznyechikEcb  cipher,
uint8_t *  buf,
uintptr_t  buf_len,
uintptr_t  pos 
)

Зашифровать сообщение.

Зашифровывает сообщение на месте с помощью заданного контекста KuznyechikEcb. Уничтожает контекст шифра.

Байты 0..pos буфера buf используются как сообщение, когда же байты pos..buf_len используются как зарезервированное место для дополнения.

Возвращает ошибку в случае, когда место для дополнения недостаточно велико.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Использование указателя на контекст после вызова данной функции приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
buf— ненулевой указатель на массив байт
buf_len— длина буфера (в байтах)
pos— индекс байта, с которого начинается дополнение в буфере buf
Возвращает
Длину шифротекста, в случае успеха или -1, в случае ошибки
См. также
KuznyechikEcb
void kuznyechik_ecb_new ( KuznyechikEcb  dst,
const uint8_t  key[SYMMETRIC_KEY_SIZE] 
)

Создать контекст блочного шифра.

Создаёт контекст блочного шифра в режиме простой замены с зацеплением с использованием ключа key.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
dst— ненулевой указатель на область памяти длиной KUZNYECHIK_ECB_SIZE и выравниванием KUZNYECHIK_ECB_ALIGNMENT
key— ненулевой указатель на массив длинной SYMMETRIC_KEY_SIZE байт
См. также
KuznyechikEcb
void kuznyechik_encrypt_block ( Kuznyechik  cipher,
uint8_t  block[KUZNYECHIK_BLOCK_SIZE] 
)

Зашифровать блок данных.

Шифрует блок с помощью заданного контекста Kuznyechik. Блок шифруется на месте.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределенному поведению.
Аргументы
cipher- ненулевой указатель на корректный контекст.
block- ненулевой указатель на блок длиной KUZNYECHIK_BLOCK_SIZE байт.
См. также
Kuznyechik
void kuznyechik_encrypt_blocks ( Kuznyechik  cipher,
uint8_t  blocks[KUZNYECHIK_BLOCK_SIZE],
uintptr_t  len 
)

Зашифровать массив блоков.

Шифрует массив блоков с помощью заданного контекста Kuznyechik. Блоки шифруются на месте.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределенному поведению.
Аргументы
cipher- ненулевой указатель на корректный контекст.
blocks- ненулевой указатель на массив блоков, каждый блок длиной KUZNYECHIK_BLOCK_SIZE байт.
len- длина массива блоков.
См. также
Kuznyechik
void kuznyechik_mac_drop ( KuznyechikMac  state)

Уничтожить состояние режима выработки имитовставки.

Уничтожает состояние режима выработки имитовставки.

Предупреждения
Использование указателя на состояние после вызова данной функции приводит к неопределённому поведению.
Аргументы
state— ненулевой указатель на состояние режима выработки имитовставки
См. также
KuznyechikMac
void kuznyechik_mac_finalize ( KuznyechikMac  state,
uint8_t  res[KUZNYECHIK_MAC_RESULT_SIZE] 
)

Финализировать состояние режима выработки имитовставки.

Финализирует состояние режима выработки имитовставки и копирует результирующую имитовставку в массив res. Уничтожает состояние.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Использование указателя на состояние после вызова данной функции приводит к неопределённому поведению.
Аргументы
state— ненулевой указатель на состояние режима выработки имитовставки
res— массив длиной не менее чем KUZNYECHIK_MAC_RESULT_SIZE байт
См. также
KuznyechikMac
void kuznyechik_mac_finalize_reset ( KuznyechikMac  state,
uint8_t  res[KUZNYECHIK_MAC_RESULT_SIZE] 
)

Финализировать состояние режима выработки имитовставки и заменить его новым.

Финализирует состояние режима выработки имитовставки и копирует результирующую имитовставку в массив res. Заменяет существующий состояние на новый.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
state— ненулевой указатель на состояние режима выработки имитовставки
res— массив длиной не менее чем KUZNYECHIK_MAC_RESULT_SIZE байт
См. также
KuznyechikMac
void kuznyechik_mac_new ( KuznyechikMac  dst,
const uint8_t  key[SYMMETRIC_KEY_SIZE] 
)

Создать состояние режима выработки имитовставки.

Создаёт новый состояние режима выработки имитовставки с использованием ключа key.

Аргументы
dst— ненулевой указатель на область памяти длиной KUZNYECHIK_MAC_SIZE и выравниванием KUZNYECHIK_MAC_ALIGNMENT
key— ненулевой указатель на массив длинной SYMMETRIC_KEY_SIZE байт
См. также
KuznyechikMac
void kuznyechik_mac_reset ( KuznyechikMac  state)

Сбросить состояние режима выработки имитовставки.

Заменяет состояние режима выработки имитовставки новым состоянием.

Аргументы
state— ненулевой указатель на состояние режима выработки имитовставки
См. также
KuznyechikMac
void kuznyechik_mac_update ( KuznyechikMac  state,
const uint8_t *  msg,
uintptr_t  len 
)

Обновить состояние режиму выработки имитовставки.

Скармливает сообщение режиму выработки имитовставки, обновляя его состояние.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
state— ненулевой указатель на состояние режима выработки имитовставки
msg— ненулевой указатель на массив байт
len— длина сообщения в байтах
См. также
KuznyechikMac
bool kuznyechik_mac_verify ( KuznyechikMac  state,
const uint8_t  code[KUZNYECHIK_MAC_RESULT_SIZE] 
)

Проверить целостность данных.

Проверяет соответствие данных, скормленных режиму выработки имитовставки, данной имитовставке.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Использование указателя на состояние после вызова данной функции приводит к неопределённому поведению.
Аргументы
state— ненулевой указатель на состояние режима выработки имитовставки
code— массив байт длиной KUZNYECHIK_MAC_RESULT_SIZE
Возвращает
true, в случае соответствия, false в случае несоответствия
См. также
KuznyechikMac
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] 
)

Расшифровать сообщение с присоединёнными данными.

Расшифровывает сообщение на месте с присоединёнными данными с использованием данной имитовставки tag. Возвращает ошибку в случае, если имитовставка не соответствует шифротексту.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст AEAD
nonce— синхропосылка как массив байт длиной KUZNYECHIK_MGM_NONCE_SIZE
aad— присоединённые данные
aad_len— длина присоединённых данных в байтах
buf— буфер, содержащий подлежащие расшифрованию данные
buf_len— длина буфера (в байтах)
tag— имитовставка как массив байт длиной KUZNYECHIK_MGM_TAG_SIZE
Возвращает
0, в случае успеха, -1, в случае ошибки
См. также
KuznyechikMgm
void kuznyechik_mgm_drop ( KuznyechikMgm  cipher)

Уничтожить контекст шифра

Очищает переданный контекст и обнуляет память. Контекст должен быть предварительно создан с помощью функции kuznyechik_mgm_new или скопирован из существующего.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Использование указателя на контекст после вызова данной функции приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
См. также
KuznyechikMgm
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] 
)

Зашифровать сообщение с присоединёнными данными.

Зашифровывает сообщение на месте с присоединёнными данными и копирует соответствующую имитовставку в массив tag.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст AEAD
nonce— синхропосылка как массив байт длиной KUZNYECHIK_MGM_NONCE_SIZE. Старший бит nonce[0] должен быть равен нулю.
aad— присоединённые данные
aad_len— длина присоединённых данных в байтах
buf— буфер, содержащий подлежащие шифрованию данные
buf_len— длина буфера (в байтах)
tag— имитовставка как массив байт длиной KUZNYECHIK_MGM_TAG_SIZE
Возвращает
0, в случае успеха, -1, в случае ошибки
См. также
KuznyechikMgm
void kuznyechik_mgm_new ( KuznyechikMgm  dst,
const uint8_t  key[SYMMETRIC_KEY_SIZE] 
)

Создать контекст AEAD.

Создаёт контекст AEAD с использованием ключа key в заданной области памяти.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
dst— ненулевой указатель на область памяти длиной KUZNYECHIK_MGM_SIZE и выравниванием KUZNYECHIK_MGM_ALIGNMENT
key— ненулевой указатель на массив длинной SYMMETRIC_KEY_SIZE байт
См. также
KuznyechikMgm
void kuznyechik_new ( Kuznyechik  dst,
const uint8_t  key[SYMMETRIC_KEY_SIZE] 
)

Создать контекст блочного шифра.

Создаёт новый контекст блочного шифра.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределенному поведению.
Аргументы
dst— ненулевой указатель на область памяти длиной KUZNYECHIK_SIZE и выравниванием KUZNYECHIK_ALIGNMENT
key- ненулевой указатель на ключ длиной SYMMETRIC_KEY_SIZE байт.
См. также
Kuznyechik
void kuznyechik_ofb_apply_keystream ( KuznyechikOfb  cipher,
uint8_t *  buf,
uintptr_t  buf_len 
)

Гаммировать сообщение ключевым потоком шифра.

Шифрует или расшифровывает сообщение на месте посредством гаммирования его ключевым потоком шифра.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
buf— ненулевой указатель на массив байт
buf_len— длина буфера (в байтах)
См. также
KuznyechikOfb
void kuznyechik_ofb_drop ( KuznyechikOfb  cipher)

Уничтожить контекст шифра.

Очищает переданный контекст и обнуляет память. Контекст должен быть предварительно создан с помощью функции kuznyechik_ofb_new или скопирован из существующего.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Использование указателя на контекст после вызова данной функции приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
См. также
KuznyechikOfb
void kuznyechik_ofb_new ( KuznyechikOfb  dst,
const uint8_t  key[SYMMETRIC_KEY_SIZE],
const uint8_t  nonce[KUZNYECHIK_OFB_NONCE_SIZE] 
)

Создать контекст потокового шифра.

Создаёт контекст потокового шифра в режиме гаммирования с обратной связью по выходу с использованием ключа key и синхропосылки nonce.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
dst— ненулевой указатель на область памяти длиной KUZNYECHIK_OFB_SIZE и выравниванием KUZNYECHIK_OFB_ALIGNMENT
key— ненулевой указатель на массив длинной SYMMETRIC_KEY_SIZE байт
nonce— ненулевой указатель на массив длинной KUZNYECHIK_OFB_NONCE_SIZE байт
См. также
KuznyechikOfb
void magma_cbc_decrypt_blocks ( MagmaCbc  cipher,
uint8_t  blocks[MAGMA_BLOCK_SIZE],
uintptr_t  blocks_len 
)

Расшифровать массив блоков.

Расшифровывает блоки данных с помощью заданного контекста MagmaCbc. Блоки расшифровываются на месте.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
blocks— ненулевой указатель на массив блоков. Блок представляет собой последовательность байт длиной MAGMA_BLOCK_SIZE.
blocks_len— длина массива блоков (в блоках)
См. также
MagmaCbc
intptr_t magma_cbc_decrypt_pad ( MagmaCbc  cipher,
uint8_t *  buf,
uintptr_t  buf_len 
)

Расшифровать сообщение.

Расшифровывает сообщение на месте с помощью заданного контекста MagmaCbc. Уничтожает контекст шифра.

Возвращает ошибку в случае, когда длина буфера не делится на MAGMA_BLOCK_SIZE или расшифрованное сообщение имеет некорректное дополнение.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Использование указателя на контекст после вызова данной функции приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
buf— ненулевой указатель на массив байт
buf_len— длина буфера (в байтах)
Возвращает
Длину сообщения, в случае успеха или -1, в случае ошибки
См. также
MagmaCbc
void magma_cbc_drop ( MagmaCbc  cipher)

Уничтожить контекст шифра.

Очищает переданный контекст и обнуляет память. Контекст должен быть предварительно создан с помощью функции magma_cbc_new или скопирован из существующего.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Использование указателя на контекст после вызова данной функции приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
См. также
MagmaCbc
void magma_cbc_encrypt_blocks ( MagmaCbc  cipher,
uint8_t  blocks[MAGMA_BLOCK_SIZE],
uintptr_t  blocks_len 
)

Зашифровать массив блоков.

Шифрует блоки данных с помощью заданного контекста MagmaCbc. Блоки шифруются на месте.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
blocks— ненулевой указатель на массив блоков. Блок представляет собой последовательность байт длиной MAGMA_BLOCK_SIZE.
blocks_len— длина массива блоков (в блоках)
См. также
MagmaCbc
intptr_t magma_cbc_encrypt_pad ( MagmaCbc  cipher,
uint8_t *  buf,
uintptr_t  buf_len,
uintptr_t  pos 
)

Зашифровать сообщение.

Зашифровывает сообщение на месте с помощью заданного контекста MagmaCbc. Уничтожает контекст шифра.

Байты 0..pos буфера buf используются как сообщение, когда же байты pos..buf_len используются как зарезервированное место для дополнения.

Возвращает ошибку в случае, когда место для дополнения недостаточно велико.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Использование указателя на контекст после вызова данной функции приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
buf— ненулевой указатель на массив байт
buf_len— длина буфера (в байтах)
pos— индекс байта, с которого начинается дополнение в буфере buf
Возвращает
Длину шифротекста, в случае успеха или -1, в случае ошибки
См. также
MagmaCbc
void magma_cbc_new ( MagmaCbc  dst,
const uint8_t  key[SYMMETRIC_KEY_SIZE],
const uint8_t  nonce[MAGMA_CBC_NONCE_SIZE] 
)

Создать контекст блочного шифра.

Создаёт контекст блочного шифра в режиме простой замены с зацеплением с использованием ключа key и синхропосылки nonce.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
dst— ненулевой указатель на область памяти длиной MAGMA_CBC_SIZE и выравниванием MAGMA_CBC_ALIGNMENT
key— ненулевой указатель на массив длинной SYMMETRIC_KEY_SIZE байт
nonce— ненулевой указатель на массив длинной MAGMA_CBC_NONCE_SIZE байт
См. также
MagmaCbc
void magma_cfb_decrypt ( MagmaCfb  cipher,
uint8_t *  buf,
uintptr_t  buf_len 
)

Расшифровать сообщение.

Расшифровывает сообщение на месте с помощью заданного контекста MagmaCfb.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
buf— ненулевой указатель на массив байт
buf_len— длина буфера (в байтах)
См. также
MagmaCfb
void magma_cfb_drop ( MagmaCfb  cipher)

Уничтожить контекст шифра.

Очищает переданный контекст и обнуляет память. Контекст должен быть предварительно создан с помощью функции magma_cfb_new или скопирован из существующего.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Использование указателя на контекст после вызова данной функции приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
См. также
MagmaCfb
void magma_cfb_encrypt ( MagmaCfb  cipher,
uint8_t *  buf,
uintptr_t  buf_len 
)

Зашифровать сообщение.

Зашифровывает сообщение на месте с помощью заданного контекста MagmaCfb.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
buf— ненулевой указатель на массив байт
buf_len— длина буфера (в байтах)
См. также
MagmaCfb
void magma_cfb_new ( MagmaCfb  dst,
const uint8_t  key[SYMMETRIC_KEY_SIZE],
const uint8_t  nonce[MAGMA_CFB_NONCE_SIZE] 
)

Создать контекст потокового шифра.

Создаёт контекст потокового шифра в режиме гаммирования с обратной связью по шифртексту с использованием ключа key и синхропосылки nonce.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
dst— ненулевой указатель на область памяти длиной MAGMA_CFB_SIZE и выравниванием MAGMA_CFB_ALIGNMENT
key— ненулевой указатель на массив длинной SYMMETRIC_KEY_SIZE байт
nonce— ненулевой указатель на массив длинной MAGMA_CFB_NONCE_SIZE байт
См. также
MagmaCfb
intptr_t magma_ctr_apply_keystream ( MagmaCtr  cipher,
uint8_t *  buf,
uintptr_t  buf_len 
)

Гаммировать сообщение ключевым потоком шифра.

Шифрует или расшифровывает сообщение на месте посредством гаммирования его ключевым потоком шифра. Возвращает ошибку в случае, когда достигнут конец ключевого потока.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
buf— ненулевой указатель на массив байт
buf_len— длина буфера (в байтах)
Возвращает
0, в случае успеха, -1, в случае ошибки
См. также
MagmaCtr
void magma_ctr_drop ( MagmaCtr  cipher)

Уничтожить контекст шифра.

Очищает переданный контекст и обнуляет память. Контекст должен быть предварительно создан с помощью функции magma_ctr_new или скопирован из существующего.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Использование указателя на контекст после вызова данной функции приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
См. также
MagmaCtr
uint64_t magma_ctr_get_pos ( MagmaCtr  cipher)

Получить позицию ключевого потока шифра.

Возвращает текущую позицию ключевого потока шифра.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
Возвращает
Текущая позиция ключевого потока
См. также
MagmaCtr
void magma_ctr_new ( MagmaCtr  dst,
const uint8_t  key[SYMMETRIC_KEY_SIZE],
const uint8_t  nonce[MAGMA_CTR_NONCE_SIZE] 
)

Создать контекст потокового шифра.

Создаёт контекст потокового шифра в режиме гаммирования с использованием ключа key и синхропосылки nonce.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
dst— ненулевой указатель на область памяти длиной MAGMA_CTR_SIZE и выравниванием MAGMA_CTR_ALIGNMENT
key— ненулевой указатель на массив длинной SYMMETRIC_KEY_SIZE байт
nonce— ненулевой указатель на массив длинной MAGMA_CTR_NONCE_SIZE байт
См. также
MagmaCtr
intptr_t magma_ctr_seek ( MagmaCtr  cipher,
uint64_t  pos 
)

Установить позицию ключевого потока шифра.

Устанавливает текущую позицию ключевого потока шифра. Возвращает ошибку в случае, когда требуемая позиция превышает длину ключевого потока.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
pos— новая позиция ключевого потока
Возвращает
0, в случае успеха, -1, в случае ошибки
См. также
MagmaCtr
void magma_decrypt_block ( Magma  cipher,
uint8_t  block[MAGMA_BLOCK_SIZE] 
)

Расшифровать блок данных.

Расшифровывает блок с помощью заданного контекста Magma. Блок расшифровывается на месте.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределенному поведению.
Аргументы
cipher- ненулевой указатель на корректный контекст.
block- ненулевой указатель на блок длиной MAGMA_BLOCK_SIZE байт.
См. также
Magma
void magma_decrypt_blocks ( Magma  cipher,
uint8_t  blocks[MAGMA_BLOCK_SIZE],
uintptr_t  len 
)

Расшифровать массив блоков.

Расшифровывает массив блоков с помощью заданного контекста Magma. Блоки расшифровываются на месте.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределенному поведению.
Аргументы
cipher- ненулевой указатель на корректный контекст.
blocks- ненулевой указатель на массив блоков, каждый блок длиной MAGMA_BLOCK_SIZE байт.
len- длина массива блоков.
См. также
Magma
void magma_drop ( Magma  cipher)

Уничтожить контекст.

Очищает переданный контекст и обнуляет память. Контекст должен быть предварительно создан с помощью функции magma_new или скопирован из существующего. После вызова этой функции работать с этим контекстом нельзя, так как он перестает быть корректным.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределенному поведению.
Аргументы
cipher- ненулевой указатель на корректный контекст.
См. также
Magma
void magma_ecb_decrypt_blocks ( MagmaEcb  cipher,
uint8_t  blocks[MAGMA_BLOCK_SIZE],
uintptr_t  blocks_len 
)

Расшифровать массив блоков.

Расшифровывает блоки данных с помощью заданного контекста MagmaEcb. Блоки расшифровываются на месте.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
blocks— ненулевой указатель на массив блоков. Блок представляет собой последовательность байт длиной MAGMA_BLOCK_SIZE.
blocks_len— длина массива блоков (в блоках)
См. также
MagmaEcb
intptr_t magma_ecb_decrypt_pad ( MagmaEcb  cipher,
uint8_t *  buf,
uintptr_t  buf_len 
)

Расшифровать сообщение.

Расшифровывает сообщение на месте с помощью заданного контекста MagmaEcb. Уничтожает контекст шифра.

Возвращает ошибку в случае, когда длина буфера не делится на MAGMA_BLOCK_SIZE или расшифрованное сообщение имеет некорректное дополнение.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Использование указателя на контекст после вызова данной функции приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
buf— ненулевой указатель на массив байт
buf_len— длина буфера (в байтах)
Возвращает
Длину сообщения, в случае успеха или -1, в случае ошибки
См. также
MagmaEcb
void magma_ecb_drop ( MagmaEcb  cipher)

Уничтожить контекст шифра.

Очищает переданный контекст и обнуляет память. Контекст должен быть предварительно создан с помощью функции magma_ecb_new или скопирован из существующего.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Использование указателя на контекст после вызова данной функции приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
См. также
MagmaEcb
void magma_ecb_encrypt_blocks ( MagmaEcb  cipher,
uint8_t  blocks[MAGMA_BLOCK_SIZE],
uintptr_t  blocks_len 
)

Зашифровать массив блоков.

Шифрует блоки данных с помощью заданного контекста MagmaEcb. Блоки шифруются на месте.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
blocks— ненулевой указатель на массив блоков. Блок представляет собой последовательность байт длиной MAGMA_BLOCK_SIZE.
blocks_len— длина массива блоков (в блоках)
См. также
MagmaEcb
intptr_t magma_ecb_encrypt_pad ( MagmaEcb  cipher,
uint8_t *  buf,
uintptr_t  buf_len,
uintptr_t  pos 
)

Зашифровать сообщение.

Зашифровывает сообщение на месте с помощью заданного контекста MagmaEcb. Уничтожает контекст шифра.

Байты 0..pos буфера buf используются как сообщение, когда же байты pos..buf_len используются как зарезервированное место для дополнения.

Возвращает ошибку в случае, когда место для дополнения недостаточно велико.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Использование указателя на контекст после вызова данной функции приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
buf— ненулевой указатель на массив байт
buf_len— длина буфера (в байтах)
pos— индекс байта, с которого начинается дополнение в буфере buf
Возвращает
Длину шифротекста, в случае успеха или -1, в случае ошибки
См. также
MagmaEcb
void magma_ecb_new ( MagmaEcb  dst,
const uint8_t  key[SYMMETRIC_KEY_SIZE] 
)

Создать контекст блочного шифра.

Создаёт контекст блочного шифра в режиме простой замены с зацеплением с использованием ключа key.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
dst— ненулевой указатель на область памяти длиной MAGMA_ECB_SIZE и выравниванием MAGMA_ECB_ALIGNMENT
key— ненулевой указатель на массив длинной SYMMETRIC_KEY_SIZE байт
См. также
MagmaEcb
void magma_encrypt_block ( Magma  cipher,
uint8_t  block[MAGMA_BLOCK_SIZE] 
)

Зашифровать блок данных.

Шифрует блок с помощью заданного контекста Magma. Блок шифруется на месте.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределенному поведению.
Аргументы
cipher- ненулевой указатель на корректный контекст.
block- ненулевой указатель на блок длиной MAGMA_BLOCK_SIZE байт.
См. также
Magma
void magma_encrypt_blocks ( Magma  cipher,
uint8_t  blocks[MAGMA_BLOCK_SIZE],
uintptr_t  len 
)

Зашифровать массив блоков.

Шифрует массив блоков с помощью заданного контекста Magma. Блоки шифруются на месте.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределенному поведению.
Аргументы
cipher- ненулевой указатель на корректный контекст.
blocks- ненулевой указатель на массив блоков, каждый блок длиной MAGMA_BLOCK_SIZE байт.
len- длина массива блоков.
См. также
Magma
void magma_mac_drop ( MagmaMac  state)

Уничтожить состояние режима выработки имитовставки.

Уничтожает состояние режима выработки имитовставки.

Предупреждения
Использование указателя на состояние после вызова данной функции приводит к неопределённому поведению.
Аргументы
state— ненулевой указатель на состояние режима выработки имитовставки
См. также
MagmaMac
void magma_mac_finalize ( MagmaMac  state,
uint8_t  res[MAGMA_MAC_RESULT_SIZE] 
)

Финализировать состояние режима выработки имитовставки.

Финализирует состояние режима выработки имитовставки и копирует результирующую имитовставку в массив res. Уничтожает состояние.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Использование указателя на состояние после вызова данной функции приводит к неопределённому поведению.
Аргументы
state— ненулевой указатель на состояние режима выработки имитовставки
res— массив длиной не менее чем MAGMA_MAC_RESULT_SIZE байт
См. также
MagmaMac
void magma_mac_finalize_reset ( MagmaMac  state,
uint8_t  res[MAGMA_MAC_RESULT_SIZE] 
)

Финализировать состояние режима выработки имитовставки и заменить его новым.

Финализирует состояние режима выработки имитовставки и копирует результирующую имитовставку в массив res. Заменяет существующий состояние на новый.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
state— ненулевой указатель на состояние режима выработки имитовставки
res— массив длиной не менее чем MAGMA_MAC_RESULT_SIZE байт
См. также
MagmaMac
void magma_mac_new ( MagmaMac  dst,
const uint8_t  key[SYMMETRIC_KEY_SIZE] 
)

Создать состояние режима выработки имитовставки.

Создаёт новый состояние режима выработки имитовставки с использованием ключа key.

Аргументы
dst— ненулевой указатель на область памяти длиной MAGMA_MAC_SIZE и выравниванием MAGMA_MAC_ALIGNMENT
key— ненулевой указатель на массив длинной SYMMETRIC_KEY_SIZE байт
См. также
MagmaMac
void magma_mac_reset ( MagmaMac  state)

Сбросить состояние режима выработки имитовставки.

Заменяет состояние режима выработки имитовставки новым состоянием.

Аргументы
state— ненулевой указатель на состояние режима выработки имитовставки
См. также
MagmaMac
void magma_mac_update ( MagmaMac  state,
const uint8_t *  msg,
uintptr_t  len 
)

Обновить состояние режиму выработки имитовставки.

Скармливает сообщение режиму выработки имитовставки, обновляя его состояние.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
state— ненулевой указатель на состояние режима выработки имитовставки
msg— ненулевой указатель на массив байт
len— длина сообщения в байтах
См. также
MagmaMac
bool magma_mac_verify ( MagmaMac  state,
const uint8_t  code[MAGMA_MAC_RESULT_SIZE] 
)

Проверить целостность данных.

Проверяет соответствие данных, скормленных режиму выработки имитовставки, данной имитовставке.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Использование указателя на состояние после вызова данной функции приводит к неопределённому поведению.
Аргументы
state— ненулевой указатель на состояние режима выработки имитовставки
code— массив байт длиной MAGMA_MAC_RESULT_SIZE
Возвращает
true, в случае соответствия, false в случае несоответствия
См. также
MagmaMac
void magma_new ( Magma  dst,
const uint8_t  key[SYMMETRIC_KEY_SIZE] 
)

Создать контекст блочного шифра.

Создает новый контекст блочного шифра.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределенному поведению.
Аргументы
dst— ненулевой указатель на область памяти длиной MAGMA_SIZE и выравниванием MAGMA_ALIGNMENT
key- ненулевой указатель на ключ длиной SYMMETRIC_KEY_SIZE байт.
См. также
Magma
void magma_ofb_apply_keystream ( MagmaOfb  cipher,
uint8_t *  buf,
uintptr_t  buf_len 
)

Гаммировать сообщение ключевым потоком шифра.

Шифрует или расшифровывает сообщение на месте посредством гаммирования его ключевым потоком шифра.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
buf— ненулевой указатель на массив байт
buf_len— длина буфера (в байтах)
См. также
MagmaOfb
void magma_ofb_drop ( MagmaOfb  cipher)

Уничтожить контекст шифра.

Очищает переданный контекст и обнуляет память. Контекст должен быть предварительно создан с помощью функции magma_ofb_new или скопирован из существующего.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Использование указателя на контекст после вызова данной функции приводит к неопределённому поведению.
Аргументы
cipher— ненулевой указатель на контекст шифра
См. также
MagmaOfb
void magma_ofb_new ( MagmaOfb  dst,
const uint8_t  key[SYMMETRIC_KEY_SIZE],
const uint8_t  nonce[MAGMA_OFB_NONCE_SIZE] 
)

Создать контекст потокового шифра.

Создаёт контекст потокового шифра в режиме гаммирования с обратной связью по выходу с использованием ключа key и синхропосылки nonce.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
dst— ненулевой указатель на область памяти длиной MAGMA_OFB_SIZE и выравниванием MAGMA_OFB_ALIGNMENT
key— ненулевой указатель на массив длинной SYMMETRIC_KEY_SIZE байт
nonce— ненулевой указатель на массив длинной MAGMA_OFB_NONCE_SIZE байт
См. также
MagmaOfb
void streebog256_digest ( const uint8_t *  msg,
uintptr_t  len,
uint8_t  res[STREEBOG256_RESULT_SIZE] 
)

Хэшировать сообщение.

Хэширует массив данных msg и копирует результат в массив res.

Предупреждения
Передача нулевых или некорректных указателей приводит к неопределённому поведению.
Аргументы
msg— ненулевой указатель на массив байт
len— длина сообщения в байтах
res— массив длиной не менее чем STREEBOG256_RESULT_SIZE байт
См. также
Streebog256
void streebog256_drop ( Streebog256  state)

Уничтожить состояние функции хэширования.

Уничтожает состояние функции хэширования.

Предупреждения
Использование указателя на состояние после вызова данной функции приводит к неопределённому поведению.
Аргументы
state— ненулевой указатель на состояние функции хэширования
См. также
Streebog256
void streebog256_finalize ( Streebog256  state,
uint8_t  res[STREEBOG256_RESULT_SIZE] 
)

Финализировать состояние функции хэширования.

Финализирует состояние функции хэширования и копирует результирующий хэш-код в массив res. Уничтожает состояние.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Использование указателя на состояние после вызова данной функции приводит к неопределённому поведению.
Аргументы
state— ненулевой указатель на состояние функции хэширования
res— массив длиной не менее чем STREEBOG256_RESULT_SIZE байт
См. также
Streebog256
void streebog256_finalize_reset ( Streebog256  state,
uint8_t  res[STREEBOG256_RESULT_SIZE] 
)

Финализировать состояние функции хэширования и заменить его новым.

Финализирует состояние функции хэширования и копирует результирующий хэш-код в массив res. Заменяет существующий состояние на новый.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
state— ненулевой указатель на состояние функции хэширования
res— массив длиной не менее чем STREEBOG256_RESULT_SIZE байт
См. также
Streebog256
void streebog256_new ( Streebog256  dst)

Создать состояние функции хэширования.

Создаёт новый состояние функции хэширования.

Аргументы
dst— ненулевой указатель на область памяти длиной STREEBOG256_SIZE и выравниванием STREEBOG256_ALIGNMENT
См. также
Streebog256
void streebog256_reset ( Streebog256  state)

Сбросить состояние функции хэширования.

Заменяет состояние функции хэширования новым состоянием.

Аргументы
state— ненулевой указатель на состояние функции хэширования
См. также
Streebog256
void streebog256_update ( Streebog256  state,
const uint8_t *  msg,
uintptr_t  len 
)

Обновить состояние функции хэширования.

Скармливает сообщение функции хэширования, обновляя её состояние.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
state— ненулевой указатель на состояние функции хэширования
msg— ненулевой указатель на массив байт
len— длина сообщения в байтах
См. также
Streebog256
void streebog512_digest ( const uint8_t *  msg,
uintptr_t  len,
uint8_t  res[STREEBOG512_RESULT_SIZE] 
)

Хэшировать сообщение.

Хэширует массив данных msg и копирует результат в массив res.

Предупреждения
Передача нулевых или некорректных указателей приводит к неопределённому поведению.
Аргументы
msg— ненулевой указатель на массив байт
len— длина сообщения в байтах
res— массив длиной не менее чем STREEBOG512_RESULT_SIZE байт
См. также
Streebog512
void streebog512_drop ( Streebog512  state)

Уничтожить состояние функции хэширования.

Уничтожает состояние функции хэширования.

Предупреждения
Использование указателя на состояние после вызова данной функции приводит к неопределённому поведению.
Аргументы
state— ненулевой указатель на состояние функции хэширования
См. также
Streebog512
void streebog512_finalize ( Streebog512  state,
uint8_t  res[STREEBOG512_RESULT_SIZE] 
)

Финализировать состояние функции хэширования.

Финализирует состояние функции хэширования и копирует результирующий хэш-код в массив res. Уничтожает состояние.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Использование указателя на состояние после вызова данной функции приводит к неопределённому поведению.
Аргументы
state— ненулевой указатель на состояние функции хэширования
res— массив длиной не менее чем STREEBOG512_RESULT_SIZE байт
См. также
Streebog512
void streebog512_finalize_reset ( Streebog512  state,
uint8_t  res[STREEBOG512_RESULT_SIZE] 
)

Финализировать состояние функции хэширования и заменить его новым.

Финализирует состояние функции хэширования и копирует результирующий хэш-код в массив res. Заменяет существующий состояние на новый.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
state— ненулевой указатель на состояние функции хэширования
res— массив длиной не менее чем STREEBOG512_RESULT_SIZE байт
См. также
Streebog512
void streebog512_new ( Streebog512  dst)

Создать состояние функции хэширования.

Создаёт новый состояние функции хэширования.

Аргументы
dst— ненулевой указатель на область памяти длиной STREEBOG512_SIZE и выравниванием STREEBOG512_ALIGNMENT
См. также
Streebog512
void streebog512_reset ( Streebog512  state)

Сбросить состояние функции хэширования.

Заменяет состояние функции хэширования новым состоянием.

Аргументы
state— ненулевой указатель на состояние функции хэширования
См. также
Streebog512
void streebog512_update ( Streebog512  state,
const uint8_t *  msg,
uintptr_t  len 
)

Обновить состояние функции хэширования.

Скармливает сообщение функции хэширования, обновляя её состояние.

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
state— ненулевой указатель на состояние функции хэширования
msg— ненулевой указатель на массив байт
len— длина сообщения в байтах
См. также
Streebog512