GostCrypto
0.2.0
Криптография, реализованная в соответствии с ГОСТ
|
Библиотека криптографических алгоритмов ГОСТ. Подробнее...
#include <stdint.h>
#include <stdbool.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 | — результирующая подпись |
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 | — результирующая подпись |
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 | — подпись сообщения |
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 | — подпись сообщения |
intptr_t ec256_gen_private_key | ( | Ec256 | cid, |
Ec256PrivateKey | sk, | ||
const uint8_t | rand_bytes[EC_256_WIDTH] | ||
) |
Создать закрытый ключ.
Создаёт закрытый ключ для заданной эллиптической кривой.
cid | — идентификатор кривой |
sk | — результирующий закрытый ключ |
rand_bytes | — набор чисел, сгенерированный случайным образом |
intptr_t ec256_get_public_key | ( | Ec256 | cid, |
Ec256PrivateKey | sk, | ||
Ec256PublicKey | pk | ||
) |
Получить открытый ключ.
Получает открытый ключ из закрытого ключа для заданной эллиптической кривой.
cid | — идентификатор кривой |
sk | — закрытый ключ |
pk | — результирующий открытый ключ |
void ec256_private_key_drop | ( | Ec256PrivateKey | sk | ) |
Уничтожить закрытый ключ.
Очищает переданный ключ и обнуляет память. Ключ должен быть предварительно создан с помощью функции ec256_gen_private_key, ec256_private_key_from_bytes или скопирован из существующего.
sk | — ненулевой указатель на закрытый ключ |
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 | — результирующий закрытый ключ |
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 | — результирующее сериализованное представление |
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 | — результирующий открытый ключ |
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 | — результирующее сериализованное представление |
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 | — результирующий общий ключ |
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 | — результирующая подпись |
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 | — результирующая подпись |
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 | — подпись сообщения |
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 | — подпись сообщения |
intptr_t ec512_gen_private_key | ( | Ec512 | cid, |
Ec512PrivateKey | sk, | ||
const uint8_t | rand_bytes[EC_512_WIDTH] | ||
) |
Создать закрытый ключ.
Создаёт закрытый ключ для заданной эллиптической кривой.
cid | — идентификатор кривой |
sk | — результирующий закрытый ключ |
rand_bytes | — набор чисел, сгенерированный случайным образом |
intptr_t ec512_get_public_key | ( | Ec512 | cid, |
Ec512PrivateKey | sk, | ||
Ec512PublicKey | pk | ||
) |
Получить открытый ключ.
Получает открытый ключ из закрытого ключа для заданной эллиптической кривой.
cid | — идентификатор кривой |
sk | — закрытый ключ |
pk | — результирующий открытый ключ |
void ec512_private_key_drop | ( | Ec512PrivateKey | sk | ) |
Уничтожить закрытый ключ.
Очищает переданный ключ и обнуляет память. Ключ должен быть предварительно создан с помощью функции ec512_gen_private_key, ec512_private_key_from_bytes или скопирован из существующего.
sk | — ненулевой указатель на закрытый ключ |
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 | — результирующий закрытый ключ |
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 | — результирующее сериализованное представление |
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 | — результирующий открытый ключ |
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 | — результирующее сериализованное представление |
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 | — результирующий общий ключ |
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 | — результирующий общий ключ |
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 | — длина массива блоков (в блоках) |
intptr_t kuznyechik_cbc_decrypt_pad | ( | KuznyechikCbc | cipher, |
uint8_t * | buf, | ||
uintptr_t | buf_len | ||
) |
Расшифровать сообщение.
Расшифровывает сообщение на месте с помощью заданного контекста KuznyechikCbc. Уничтожает контекст шифра.
Возвращает ошибку в случае, когда длина буфера не делится на KUZNYECHIK_BLOCK_SIZE или расшифрованное сообщение имеет некорректное дополнение.
cipher | — ненулевой указатель на контекст шифра |
buf | — ненулевой указатель на массив байт |
buf_len | — длина буфера (в байтах) |
void kuznyechik_cbc_drop | ( | KuznyechikCbc | cipher | ) |
Уничтожить контекст шифра.
Очищает переданный контекст и обнуляет память. Контекст должен быть предварительно создан с помощью функции kuznyechik_cbc_new или скопирован из существующего.
cipher | — ненулевой указатель на контекст шифра |
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 | — длина массива блоков (в блоках) |
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 |
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 байт |
void kuznyechik_cfb_decrypt | ( | KuznyechikCfb | cipher, |
uint8_t * | buf, | ||
uintptr_t | buf_len | ||
) |
Расшифровать сообщение.
Расшифровывает сообщение на месте с помощью заданного контекста KuznyechikCfb.
cipher | — ненулевой указатель на контекст шифра |
buf | — ненулевой указатель на массив байт |
buf_len | — длина буфера (в байтах) |
void kuznyechik_cfb_drop | ( | KuznyechikCfb | cipher | ) |
Уничтожить контекст шифра.
Очищает переданный контекст и обнуляет память. Контекст должен быть предварительно создан с помощью функции kuznyechik_cfb_new или скопирован из существующего.
cipher | — ненулевой указатель на контекст шифра |
void kuznyechik_cfb_encrypt | ( | KuznyechikCfb | cipher, |
uint8_t * | buf, | ||
uintptr_t | buf_len | ||
) |
Зашифровать сообщение.
Зашифровывает сообщение на месте с помощью заданного контекста KuznyechikCfb.
cipher | — ненулевой указатель на контекст шифра |
buf | — ненулевой указатель на массив байт |
buf_len | — длина буфера (в байтах) |
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 байт |
intptr_t kuznyechik_ctr_apply_keystream | ( | KuznyechikCtr | cipher, |
uint8_t * | buf, | ||
uintptr_t | buf_len | ||
) |
Гаммировать сообщение ключевым потоком шифра.
Шифрует или расшифровывает сообщение на месте посредством гаммирования его ключевым потоком шифра. Возвращает ошибку в случае, когда достигнут конец ключевого потока.
cipher | — ненулевой указатель на контекст шифра |
buf | — ненулевой указатель на массив байт |
buf_len | — длина буфера (в байтах) |
void kuznyechik_ctr_drop | ( | KuznyechikCtr | cipher | ) |
Уничтожить контекст шифра.
Очищает переданный контекст и обнуляет память. Контекст должен быть предварительно создан с помощью функции kuznyechik_ctr_new или скопирован из существующего.
cipher | — ненулевой указатель на контекст шифра |
uint64_t kuznyechik_ctr_get_pos | ( | KuznyechikCtr | cipher | ) |
Получить позицию ключевого потока шифра.
Возвращает текущую позицию ключевого потока шифра.
cipher | — ненулевой указатель на контекст шифра |
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 байт |
intptr_t kuznyechik_ctr_seek | ( | KuznyechikCtr | cipher, |
uint64_t | pos | ||
) |
Установить позицию ключевого потока шифра.
Устанавливает текущую позицию ключевого потока шифра. Возвращает ошибку в случае, когда требуемая позиция превышает длину ключевого потока.
cipher | — ненулевой указатель на контекст шифра |
pos | — новая позиция ключевого потока |
void kuznyechik_decrypt_block | ( | Kuznyechik | cipher, |
uint8_t | block[KUZNYECHIK_BLOCK_SIZE] | ||
) |
Расшифровать блок данных.
Расшифровывает блок с помощью заданного контекста Kuznyechik. Блок расшифровывается на месте.
cipher | - ненулевой указатель на корректный контекст. |
block | - ненулевой указатель на блок длиной KUZNYECHIK_BLOCK_SIZE байт. |
void kuznyechik_decrypt_blocks | ( | Kuznyechik | cipher, |
uint8_t | blocks[KUZNYECHIK_BLOCK_SIZE], | ||
uintptr_t | len | ||
) |
Расшифровать массив блоков.
Расшифровывает массив блоков с помощью заданного контекста Kuznyechik. Блоки расшифровываются на месте.
cipher | - ненулевой указатель на корректный контекст. |
blocks | - ненулевой указатель на массив блоков, каждый блок длиной KUZNYECHIK_BLOCK_SIZE байт. |
len | - длина массива блоков. |
void kuznyechik_drop | ( | Kuznyechik | cipher | ) |
Уничтожить контекст.
Очищает переданный контекст и обнуляет память. Контекст должен быть предварительно создан с помощью функции kuznyechik_new или скопирован из существующего. После вызова этой функции работать с этим контекстом нельзя, так как он перестает быть корректным.
cipher | - ненулевой указатель на корректный контекст. |
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 | — длина массива блоков (в блоках) |
intptr_t kuznyechik_ecb_decrypt_pad | ( | KuznyechikEcb | cipher, |
uint8_t * | buf, | ||
uintptr_t | buf_len | ||
) |
Расшифровать сообщение.
Расшифровывает сообщение на месте с помощью заданного контекста KuznyechikEcb. Уничтожает контекст шифра.
Возвращает ошибку в случае, когда длина буфера не делится на KUZNYECHIK_BLOCK_SIZE или расшифрованное сообщение имеет некорректное дополнение.
cipher | — ненулевой указатель на контекст шифра |
buf | — ненулевой указатель на массив байт |
buf_len | — длина буфера (в байтах) |
void kuznyechik_ecb_drop | ( | KuznyechikEcb | cipher | ) |
Уничтожить контекст шифра.
Очищает переданный контекст и обнуляет память. Контекст должен быть предварительно создан с помощью функции kuznyechik_ecb_new или скопирован из существующего.
cipher | — ненулевой указатель на контекст шифра |
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 | — длина массива блоков (в блоках) |
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 |
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 байт |
void kuznyechik_encrypt_block | ( | Kuznyechik | cipher, |
uint8_t | block[KUZNYECHIK_BLOCK_SIZE] | ||
) |
Зашифровать блок данных.
Шифрует блок с помощью заданного контекста Kuznyechik. Блок шифруется на месте.
cipher | - ненулевой указатель на корректный контекст. |
block | - ненулевой указатель на блок длиной KUZNYECHIK_BLOCK_SIZE байт. |
void kuznyechik_encrypt_blocks | ( | Kuznyechik | cipher, |
uint8_t | blocks[KUZNYECHIK_BLOCK_SIZE], | ||
uintptr_t | len | ||
) |
Зашифровать массив блоков.
Шифрует массив блоков с помощью заданного контекста Kuznyechik. Блоки шифруются на месте.
cipher | - ненулевой указатель на корректный контекст. |
blocks | - ненулевой указатель на массив блоков, каждый блок длиной KUZNYECHIK_BLOCK_SIZE байт. |
len | - длина массива блоков. |
void kuznyechik_mac_drop | ( | KuznyechikMac | state | ) |
Уничтожить состояние режима выработки имитовставки.
Уничтожает состояние режима выработки имитовставки.
state | — ненулевой указатель на состояние режима выработки имитовставки |
void kuznyechik_mac_finalize | ( | KuznyechikMac | state, |
uint8_t | res[KUZNYECHIK_MAC_RESULT_SIZE] | ||
) |
Финализировать состояние режима выработки имитовставки.
Финализирует состояние режима выработки имитовставки и копирует результирующую имитовставку в массив res
. Уничтожает состояние.
state | — ненулевой указатель на состояние режима выработки имитовставки |
res | — массив длиной не менее чем KUZNYECHIK_MAC_RESULT_SIZE байт |
void kuznyechik_mac_finalize_reset | ( | KuznyechikMac | state, |
uint8_t | res[KUZNYECHIK_MAC_RESULT_SIZE] | ||
) |
Финализировать состояние режима выработки имитовставки и заменить его новым.
Финализирует состояние режима выработки имитовставки и копирует результирующую имитовставку в массив res
. Заменяет существующий состояние на новый.
state | — ненулевой указатель на состояние режима выработки имитовставки |
res | — массив длиной не менее чем KUZNYECHIK_MAC_RESULT_SIZE байт |
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 байт |
void kuznyechik_mac_reset | ( | KuznyechikMac | state | ) |
Сбросить состояние режима выработки имитовставки.
Заменяет состояние режима выработки имитовставки новым состоянием.
state | — ненулевой указатель на состояние режима выработки имитовставки |
void kuznyechik_mac_update | ( | KuznyechikMac | state, |
const uint8_t * | msg, | ||
uintptr_t | len | ||
) |
Обновить состояние режиму выработки имитовставки.
Скармливает сообщение режиму выработки имитовставки, обновляя его состояние.
state | — ненулевой указатель на состояние режима выработки имитовставки |
msg | — ненулевой указатель на массив байт |
len | — длина сообщения в байтах |
bool kuznyechik_mac_verify | ( | KuznyechikMac | state, |
const uint8_t | code[KUZNYECHIK_MAC_RESULT_SIZE] | ||
) |
Проверить целостность данных.
Проверяет соответствие данных, скормленных режиму выработки имитовставки, данной имитовставке.
state | — ненулевой указатель на состояние режима выработки имитовставки |
code | — массив байт длиной KUZNYECHIK_MAC_RESULT_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] | ||
) |
Расшифровать сообщение с присоединёнными данными.
Расшифровывает сообщение на месте с присоединёнными данными с использованием данной имитовставки tag
. Возвращает ошибку в случае, если имитовставка не соответствует шифротексту.
cipher | — ненулевой указатель на контекст AEAD |
nonce | — синхропосылка как массив байт длиной KUZNYECHIK_MGM_NONCE_SIZE |
aad | — присоединённые данные |
aad_len | — длина присоединённых данных в байтах |
buf | — буфер, содержащий подлежащие расшифрованию данные |
buf_len | — длина буфера (в байтах) |
tag | — имитовставка как массив байт длиной KUZNYECHIK_MGM_TAG_SIZE |
void kuznyechik_mgm_drop | ( | KuznyechikMgm | cipher | ) |
Уничтожить контекст шифра
Очищает переданный контекст и обнуляет память. Контекст должен быть предварительно создан с помощью функции kuznyechik_mgm_new или скопирован из существующего.
cipher | — ненулевой указатель на контекст шифра |
intptr_t kuznyechik_mgm_encrypt | ( | KuznyechikMgm | cipher, |
const uint8_t | nonce[KUZNYECHIK_MGM_NONCE_SIZE], | ||
const uint8_t * | aad, | ||
uintptr_t | aad_len, | ||
uint8_t * | buf, | ||
uintptr_t | buf_len, | ||
uint8_t | tag[KUZNYECHIK_MGM_TAG_SIZE] | ||
) |
Зашифровать сообщение с присоединёнными данными.
Зашифровывает сообщение на месте с присоединёнными данными и копирует соответствующую имитовставку в массив tag
.
cipher | — ненулевой указатель на контекст AEAD |
nonce | — синхропосылка как массив байт длиной KUZNYECHIK_MGM_NONCE_SIZE. Старший бит nonce[0] должен быть равен нулю. |
aad | — присоединённые данные |
aad_len | — длина присоединённых данных в байтах |
buf | — буфер, содержащий подлежащие шифрованию данные |
buf_len | — длина буфера (в байтах) |
tag | — имитовставка как массив байт длиной KUZNYECHIK_MGM_TAG_SIZE |
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 байт |
void kuznyechik_new | ( | Kuznyechik | dst, |
const uint8_t | key[SYMMETRIC_KEY_SIZE] | ||
) |
Создать контекст блочного шифра.
Создаёт новый контекст блочного шифра.
dst | — ненулевой указатель на область памяти длиной KUZNYECHIK_SIZE и выравниванием KUZNYECHIK_ALIGNMENT |
key | - ненулевой указатель на ключ длиной SYMMETRIC_KEY_SIZE байт. |
void kuznyechik_ofb_apply_keystream | ( | KuznyechikOfb | cipher, |
uint8_t * | buf, | ||
uintptr_t | buf_len | ||
) |
Гаммировать сообщение ключевым потоком шифра.
Шифрует или расшифровывает сообщение на месте посредством гаммирования его ключевым потоком шифра.
cipher | — ненулевой указатель на контекст шифра |
buf | — ненулевой указатель на массив байт |
buf_len | — длина буфера (в байтах) |
void kuznyechik_ofb_drop | ( | KuznyechikOfb | cipher | ) |
Уничтожить контекст шифра.
Очищает переданный контекст и обнуляет память. Контекст должен быть предварительно создан с помощью функции kuznyechik_ofb_new или скопирован из существующего.
cipher | — ненулевой указатель на контекст шифра |
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 байт |
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 | — длина массива блоков (в блоках) |
intptr_t magma_cbc_decrypt_pad | ( | MagmaCbc | cipher, |
uint8_t * | buf, | ||
uintptr_t | buf_len | ||
) |
Расшифровать сообщение.
Расшифровывает сообщение на месте с помощью заданного контекста MagmaCbc. Уничтожает контекст шифра.
Возвращает ошибку в случае, когда длина буфера не делится на MAGMA_BLOCK_SIZE или расшифрованное сообщение имеет некорректное дополнение.
cipher | — ненулевой указатель на контекст шифра |
buf | — ненулевой указатель на массив байт |
buf_len | — длина буфера (в байтах) |
void magma_cbc_drop | ( | MagmaCbc | cipher | ) |
Уничтожить контекст шифра.
Очищает переданный контекст и обнуляет память. Контекст должен быть предварительно создан с помощью функции magma_cbc_new или скопирован из существующего.
cipher | — ненулевой указатель на контекст шифра |
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 | — длина массива блоков (в блоках) |
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 |
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 байт |
void magma_cfb_decrypt | ( | MagmaCfb | cipher, |
uint8_t * | buf, | ||
uintptr_t | buf_len | ||
) |
Расшифровать сообщение.
Расшифровывает сообщение на месте с помощью заданного контекста MagmaCfb.
cipher | — ненулевой указатель на контекст шифра |
buf | — ненулевой указатель на массив байт |
buf_len | — длина буфера (в байтах) |
void magma_cfb_drop | ( | MagmaCfb | cipher | ) |
Уничтожить контекст шифра.
Очищает переданный контекст и обнуляет память. Контекст должен быть предварительно создан с помощью функции magma_cfb_new или скопирован из существующего.
cipher | — ненулевой указатель на контекст шифра |
void magma_cfb_encrypt | ( | MagmaCfb | cipher, |
uint8_t * | buf, | ||
uintptr_t | buf_len | ||
) |
Зашифровать сообщение.
Зашифровывает сообщение на месте с помощью заданного контекста MagmaCfb.
cipher | — ненулевой указатель на контекст шифра |
buf | — ненулевой указатель на массив байт |
buf_len | — длина буфера (в байтах) |
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 байт |
intptr_t magma_ctr_apply_keystream | ( | MagmaCtr | cipher, |
uint8_t * | buf, | ||
uintptr_t | buf_len | ||
) |
Гаммировать сообщение ключевым потоком шифра.
Шифрует или расшифровывает сообщение на месте посредством гаммирования его ключевым потоком шифра. Возвращает ошибку в случае, когда достигнут конец ключевого потока.
cipher | — ненулевой указатель на контекст шифра |
buf | — ненулевой указатель на массив байт |
buf_len | — длина буфера (в байтах) |
void magma_ctr_drop | ( | MagmaCtr | cipher | ) |
Уничтожить контекст шифра.
Очищает переданный контекст и обнуляет память. Контекст должен быть предварительно создан с помощью функции magma_ctr_new или скопирован из существующего.
cipher | — ненулевой указатель на контекст шифра |
uint64_t magma_ctr_get_pos | ( | MagmaCtr | cipher | ) |
Получить позицию ключевого потока шифра.
Возвращает текущую позицию ключевого потока шифра.
cipher | — ненулевой указатель на контекст шифра |
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 байт |
intptr_t magma_ctr_seek | ( | MagmaCtr | cipher, |
uint64_t | pos | ||
) |
Установить позицию ключевого потока шифра.
Устанавливает текущую позицию ключевого потока шифра. Возвращает ошибку в случае, когда требуемая позиция превышает длину ключевого потока.
cipher | — ненулевой указатель на контекст шифра |
pos | — новая позиция ключевого потока |
void magma_decrypt_block | ( | Magma | cipher, |
uint8_t | block[MAGMA_BLOCK_SIZE] | ||
) |
Расшифровать блок данных.
Расшифровывает блок с помощью заданного контекста Magma. Блок расшифровывается на месте.
cipher | - ненулевой указатель на корректный контекст. |
block | - ненулевой указатель на блок длиной MAGMA_BLOCK_SIZE байт. |
void magma_decrypt_blocks | ( | Magma | cipher, |
uint8_t | blocks[MAGMA_BLOCK_SIZE], | ||
uintptr_t | len | ||
) |
Расшифровать массив блоков.
Расшифровывает массив блоков с помощью заданного контекста Magma. Блоки расшифровываются на месте.
cipher | - ненулевой указатель на корректный контекст. |
blocks | - ненулевой указатель на массив блоков, каждый блок длиной MAGMA_BLOCK_SIZE байт. |
len | - длина массива блоков. |
void magma_drop | ( | Magma | cipher | ) |
Уничтожить контекст.
Очищает переданный контекст и обнуляет память. Контекст должен быть предварительно создан с помощью функции magma_new или скопирован из существующего. После вызова этой функции работать с этим контекстом нельзя, так как он перестает быть корректным.
cipher | - ненулевой указатель на корректный контекст. |
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 | — длина массива блоков (в блоках) |
intptr_t magma_ecb_decrypt_pad | ( | MagmaEcb | cipher, |
uint8_t * | buf, | ||
uintptr_t | buf_len | ||
) |
Расшифровать сообщение.
Расшифровывает сообщение на месте с помощью заданного контекста MagmaEcb. Уничтожает контекст шифра.
Возвращает ошибку в случае, когда длина буфера не делится на MAGMA_BLOCK_SIZE или расшифрованное сообщение имеет некорректное дополнение.
cipher | — ненулевой указатель на контекст шифра |
buf | — ненулевой указатель на массив байт |
buf_len | — длина буфера (в байтах) |
void magma_ecb_drop | ( | MagmaEcb | cipher | ) |
Уничтожить контекст шифра.
Очищает переданный контекст и обнуляет память. Контекст должен быть предварительно создан с помощью функции magma_ecb_new или скопирован из существующего.
cipher | — ненулевой указатель на контекст шифра |
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 | — длина массива блоков (в блоках) |
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 |
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 байт |
void magma_encrypt_block | ( | Magma | cipher, |
uint8_t | block[MAGMA_BLOCK_SIZE] | ||
) |
Зашифровать блок данных.
Шифрует блок с помощью заданного контекста Magma. Блок шифруется на месте.
cipher | - ненулевой указатель на корректный контекст. |
block | - ненулевой указатель на блок длиной MAGMA_BLOCK_SIZE байт. |
void magma_encrypt_blocks | ( | Magma | cipher, |
uint8_t | blocks[MAGMA_BLOCK_SIZE], | ||
uintptr_t | len | ||
) |
Зашифровать массив блоков.
Шифрует массив блоков с помощью заданного контекста Magma. Блоки шифруются на месте.
cipher | - ненулевой указатель на корректный контекст. |
blocks | - ненулевой указатель на массив блоков, каждый блок длиной MAGMA_BLOCK_SIZE байт. |
len | - длина массива блоков. |
void magma_mac_drop | ( | MagmaMac | state | ) |
Уничтожить состояние режима выработки имитовставки.
Уничтожает состояние режима выработки имитовставки.
state | — ненулевой указатель на состояние режима выработки имитовставки |
void magma_mac_finalize | ( | MagmaMac | state, |
uint8_t | res[MAGMA_MAC_RESULT_SIZE] | ||
) |
Финализировать состояние режима выработки имитовставки.
Финализирует состояние режима выработки имитовставки и копирует результирующую имитовставку в массив res
. Уничтожает состояние.
state | — ненулевой указатель на состояние режима выработки имитовставки |
res | — массив длиной не менее чем MAGMA_MAC_RESULT_SIZE байт |
void magma_mac_finalize_reset | ( | MagmaMac | state, |
uint8_t | res[MAGMA_MAC_RESULT_SIZE] | ||
) |
Финализировать состояние режима выработки имитовставки и заменить его новым.
Финализирует состояние режима выработки имитовставки и копирует результирующую имитовставку в массив res
. Заменяет существующий состояние на новый.
state | — ненулевой указатель на состояние режима выработки имитовставки |
res | — массив длиной не менее чем MAGMA_MAC_RESULT_SIZE байт |
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 байт |
void magma_mac_reset | ( | MagmaMac | state | ) |
Сбросить состояние режима выработки имитовставки.
Заменяет состояние режима выработки имитовставки новым состоянием.
state | — ненулевой указатель на состояние режима выработки имитовставки |
void magma_mac_update | ( | MagmaMac | state, |
const uint8_t * | msg, | ||
uintptr_t | len | ||
) |
Обновить состояние режиму выработки имитовставки.
Скармливает сообщение режиму выработки имитовставки, обновляя его состояние.
state | — ненулевой указатель на состояние режима выработки имитовставки |
msg | — ненулевой указатель на массив байт |
len | — длина сообщения в байтах |
bool magma_mac_verify | ( | MagmaMac | state, |
const uint8_t | code[MAGMA_MAC_RESULT_SIZE] | ||
) |
Проверить целостность данных.
Проверяет соответствие данных, скормленных режиму выработки имитовставки, данной имитовставке.
state | — ненулевой указатель на состояние режима выработки имитовставки |
code | — массив байт длиной MAGMA_MAC_RESULT_SIZE |
void magma_new | ( | Magma | dst, |
const uint8_t | key[SYMMETRIC_KEY_SIZE] | ||
) |
Создать контекст блочного шифра.
Создает новый контекст блочного шифра.
dst | — ненулевой указатель на область памяти длиной MAGMA_SIZE и выравниванием MAGMA_ALIGNMENT |
key | - ненулевой указатель на ключ длиной SYMMETRIC_KEY_SIZE байт. |
void magma_ofb_apply_keystream | ( | MagmaOfb | cipher, |
uint8_t * | buf, | ||
uintptr_t | buf_len | ||
) |
Гаммировать сообщение ключевым потоком шифра.
Шифрует или расшифровывает сообщение на месте посредством гаммирования его ключевым потоком шифра.
cipher | — ненулевой указатель на контекст шифра |
buf | — ненулевой указатель на массив байт |
buf_len | — длина буфера (в байтах) |
void magma_ofb_drop | ( | MagmaOfb | cipher | ) |
Уничтожить контекст шифра.
Очищает переданный контекст и обнуляет память. Контекст должен быть предварительно создан с помощью функции magma_ofb_new или скопирован из существующего.
cipher | — ненулевой указатель на контекст шифра |
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 байт |
void streebog256_digest | ( | const uint8_t * | msg, |
uintptr_t | len, | ||
uint8_t | res[STREEBOG256_RESULT_SIZE] | ||
) |
Хэшировать сообщение.
Хэширует массив данных msg
и копирует результат в массив res
.
msg | — ненулевой указатель на массив байт |
len | — длина сообщения в байтах |
res | — массив длиной не менее чем STREEBOG256_RESULT_SIZE байт |
void streebog256_drop | ( | Streebog256 | state | ) |
Уничтожить состояние функции хэширования.
Уничтожает состояние функции хэширования.
state | — ненулевой указатель на состояние функции хэширования |
void streebog256_finalize | ( | Streebog256 | state, |
uint8_t | res[STREEBOG256_RESULT_SIZE] | ||
) |
Финализировать состояние функции хэширования.
Финализирует состояние функции хэширования и копирует результирующий хэш-код в массив res
. Уничтожает состояние.
state | — ненулевой указатель на состояние функции хэширования |
res | — массив длиной не менее чем STREEBOG256_RESULT_SIZE байт |
void streebog256_finalize_reset | ( | Streebog256 | state, |
uint8_t | res[STREEBOG256_RESULT_SIZE] | ||
) |
Финализировать состояние функции хэширования и заменить его новым.
Финализирует состояние функции хэширования и копирует результирующий хэш-код в массив res
. Заменяет существующий состояние на новый.
state | — ненулевой указатель на состояние функции хэширования |
res | — массив длиной не менее чем STREEBOG256_RESULT_SIZE байт |
void streebog256_new | ( | Streebog256 | dst | ) |
Создать состояние функции хэширования.
Создаёт новый состояние функции хэширования.
dst | — ненулевой указатель на область памяти длиной STREEBOG256_SIZE и выравниванием STREEBOG256_ALIGNMENT |
void streebog256_reset | ( | Streebog256 | state | ) |
Сбросить состояние функции хэширования.
Заменяет состояние функции хэширования новым состоянием.
state | — ненулевой указатель на состояние функции хэширования |
void streebog256_update | ( | Streebog256 | state, |
const uint8_t * | msg, | ||
uintptr_t | len | ||
) |
Обновить состояние функции хэширования.
Скармливает сообщение функции хэширования, обновляя её состояние.
state | — ненулевой указатель на состояние функции хэширования |
msg | — ненулевой указатель на массив байт |
len | — длина сообщения в байтах |
void streebog512_digest | ( | const uint8_t * | msg, |
uintptr_t | len, | ||
uint8_t | res[STREEBOG512_RESULT_SIZE] | ||
) |
Хэшировать сообщение.
Хэширует массив данных msg
и копирует результат в массив res
.
msg | — ненулевой указатель на массив байт |
len | — длина сообщения в байтах |
res | — массив длиной не менее чем STREEBOG512_RESULT_SIZE байт |
void streebog512_drop | ( | Streebog512 | state | ) |
Уничтожить состояние функции хэширования.
Уничтожает состояние функции хэширования.
state | — ненулевой указатель на состояние функции хэширования |
void streebog512_finalize | ( | Streebog512 | state, |
uint8_t | res[STREEBOG512_RESULT_SIZE] | ||
) |
Финализировать состояние функции хэширования.
Финализирует состояние функции хэширования и копирует результирующий хэш-код в массив res
. Уничтожает состояние.
state | — ненулевой указатель на состояние функции хэширования |
res | — массив длиной не менее чем STREEBOG512_RESULT_SIZE байт |
void streebog512_finalize_reset | ( | Streebog512 | state, |
uint8_t | res[STREEBOG512_RESULT_SIZE] | ||
) |
Финализировать состояние функции хэширования и заменить его новым.
Финализирует состояние функции хэширования и копирует результирующий хэш-код в массив res
. Заменяет существующий состояние на новый.
state | — ненулевой указатель на состояние функции хэширования |
res | — массив длиной не менее чем STREEBOG512_RESULT_SIZE байт |
void streebog512_new | ( | Streebog512 | dst | ) |
Создать состояние функции хэширования.
Создаёт новый состояние функции хэширования.
dst | — ненулевой указатель на область памяти длиной STREEBOG512_SIZE и выравниванием STREEBOG512_ALIGNMENT |
void streebog512_reset | ( | Streebog512 | state | ) |
Сбросить состояние функции хэширования.
Заменяет состояние функции хэширования новым состоянием.
state | — ненулевой указатель на состояние функции хэширования |
void streebog512_update | ( | Streebog512 | state, |
const uint8_t * | msg, | ||
uintptr_t | len | ||
) |
Обновить состояние функции хэширования.
Скармливает сообщение функции хэширования, обновляя её состояние.
state | — ненулевой указатель на состояние функции хэширования |
msg | — ненулевой указатель на массив байт |
len | — длина сообщения в байтах |