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

Закрытый ключ эллиптических кривых. Подробнее...

#include <gostcrypto.hpp>

Открытые члены

 Ec256PrivateKey_t (const Ec256PrivateKey_t< CurveID > &)=default
 
Ec256PrivateKey_t< CurveID > & operator= (const Ec256PrivateKey_t< CurveID > &)=default
 
 Ec256PrivateKey_t (Ec256PrivateKey_t< CurveID > &&) noexcept=default
 
Ec256PrivateKey_t< CurveID > & operator= (Ec256PrivateKey_t< CurveID > &&) noexcept=default
 
 ~Ec256PrivateKey_t ()
 
 Ec256PrivateKey_t (const uint8_t rand_bytes[EC_256_WIDTH], intptr_t &error_code) noexcept
 Создать закрытый ключ. Подробнее...
 
 Ec256PrivateKey_t (const std::array< uint8_t, EC_256_WIDTH > &rand_bytes, intptr_t &error_code) noexcept
 Создать закрытый ключ. Подробнее...
 
Ec256PublicKey_t< CurveID > get_public_key () const noexcept
 Получить открытый ключ. Подробнее...
 
std::array< uint8_t, EC_256_WIDTHto_bytes () const noexcept
 Сериализовать закрытый ключ. Подробнее...
 
intptr_t sign_hash (const uint8_t hash[STREEBOG256_RESULT_SIZE], const uint8_t rand_bytes[EC_256_WIDTH], uint8_t signature[EC_256_DOUBLE_WIDTH]) const noexcept
 Подписать хэш сообщения. Подробнее...
 
std::array< uint8_t,
EC_256_DOUBLE_WIDTH
sign_hash (const std::array< uint8_t, STREEBOG256_RESULT_SIZE > &hash, const std::array< uint8_t, EC_256_WIDTH > &rand_bytes, intptr_t &error_code) const noexcept
 Подписать хэш сообщения. Подробнее...
 
intptr_t sign (const uint8_t *msg, uintptr_t msg_len, const uint8_t rand_bytes[EC_256_WIDTH], uint8_t signature[EC_256_DOUBLE_WIDTH]) const noexcept
 Подписать сообщение. Подробнее...
 
intptr_t sign (const std::vector< uint8_t > &msg, const std::array< uint8_t, EC_256_WIDTH > &rand_bytes, std::array< uint8_t, EC_256_DOUBLE_WIDTH > &signature) const noexcept
 Подписать сообщение. Подробнее...
 
std::array< uint8_t,
EC_256_DOUBLE_WIDTH
sign (const std::vector< uint8_t > &msg, const std::array< uint8_t, EC_256_WIDTH > &rand_bytes, intptr_t &error_code) const noexcept
 Подписать сообщение. Подробнее...
 
std::array< uint8_t, EC_256_WIDTHvko256 (const Ec256PublicKey_t< CurveID > &other_pk, intptr_t &error_code) const noexcept
 Выработать общий ключ. Подробнее...
 
std::array< uint8_t, EC_256_WIDTHvko256 (const Ec256PublicKey_t< CurveID > &other_pk, intptr_t &error_code, const uint8_t ukm[EC_256_WIDTH]) const noexcept
 Выработать общий ключ. Подробнее...
 

Открытые статические члены

static Ec256PrivateKey_t< CurveID > from_bytes (const uint8_t bytes[EC_256_WIDTH], intptr_t &error_code) noexcept
 Десериалировать закрытый ключ. Подробнее...
 
static Ec256PrivateKey_t< CurveID > from_bytes (const std::array< uint8_t, EC_256_WIDTH > &rand_bytes, intptr_t &error_code) noexcept
 Десериалировать закрытый ключ. Подробнее...
 

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

template<Gost3410_2012_256 CurveID>
class Ec256PrivateKey_t< CurveID >

Закрытый ключ эллиптических кривых.

Специализируется перечислением Gost3410_2012_256.

См. также
Ec256

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

Конструктор(ы)

Ec256PrivateKey_t ( const Ec256PrivateKey_t< CurveID > &  )
default
Ec256PrivateKey_t ( Ec256PrivateKey_t< CurveID > &&  )
defaultnoexcept
~Ec256PrivateKey_t ( )
inline

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

Ec256PrivateKey_t ( const uint8_t  rand_bytes[EC_256_WIDTH],
intptr_t &  error_code 
)
inlinenoexcept

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

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

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
rand_bytes— набор чисел, сгенерированный случайным образом
error_codeкод ошибки: 0, в случае успеха, EC_ERR_CURVE_ID, EC_ERR_BAD_RAND_BYTES в случае ошибки

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

Ec256PrivateKey_t ( const std::array< uint8_t, EC_256_WIDTH > &  rand_bytes,
intptr_t &  error_code 
)
inlineexplicitnoexcept

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

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

Аргументы
rand_bytes— набор чисел, сгенерированный случайным образом
error_codeкод ошибки: 0, в случае успеха, EC_ERR_CURVE_ID, EC_ERR_BAD_RAND_BYTES в случае ошибки

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

Методы

static Ec256PrivateKey_t<CurveID> from_bytes ( const uint8_t  bytes[EC_256_WIDTH],
intptr_t &  error_code 
)
inlinestaticnoexcept

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

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

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
bytes— сериализованное представление
error_code— код ошибки: 0, в случае успеха, EC_ERR_CURVE_ID, EC_ERR_BAD_RAND_BYTES в случае ошибки
Возвращает
десериализованный закрытый ключ

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

static Ec256PrivateKey_t<CurveID> from_bytes ( const std::array< uint8_t, EC_256_WIDTH > &  rand_bytes,
intptr_t &  error_code 
)
inlinestaticnoexcept

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

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

Аргументы
rand_bytes— сериализованное представление
error_code— код ошибки: 0, в случае успеха, EC_ERR_CURVE_ID, EC_ERR_BAD_RAND_BYTES в случае ошибки
Возвращает
десериализованный закрытый ключ

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

Ec256PublicKey_t<CurveID> get_public_key ( ) const
inlinenoexcept

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

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

Возвращает
открытый ключ

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

Ec256PrivateKey_t<CurveID>& operator= ( const Ec256PrivateKey_t< CurveID > &  )
default
Ec256PrivateKey_t<CurveID>& operator= ( Ec256PrivateKey_t< CurveID > &&  )
defaultnoexcept
intptr_t sign ( const uint8_t *  msg,
uintptr_t  msg_len,
const uint8_t  rand_bytes[EC_256_WIDTH],
uint8_t  signature[EC_256_DOUBLE_WIDTH] 
) const
inlinenoexcept

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

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

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
msg— указатель на сообщение
msg_len— длина сообщения
rand_bytes— набор чисел, сгенерированный случайным образом
signature— результирующая подпись
Возвращает
0, в случае успеха, EC_ERR_CURVE_ID, EC_ERR_BAD_RAND_BYTES, в случае ошибки

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

intptr_t sign ( const std::vector< uint8_t > &  msg,
const std::array< uint8_t, EC_256_WIDTH > &  rand_bytes,
std::array< uint8_t, EC_256_DOUBLE_WIDTH > &  signature 
) const
inlinenoexcept

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

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

Аргументы
msg— указатель на сообщение
rand_bytes— набор чисел, сгенерированный случайным образом
signature— результирующая подпись
Возвращает
0, в случае успеха, EC_ERR_CURVE_ID, EC_ERR_BAD_RAND_BYTES, в случае ошибки

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

std::array<uint8_t, EC_256_DOUBLE_WIDTH> sign ( const std::vector< uint8_t > &  msg,
const std::array< uint8_t, EC_256_WIDTH > &  rand_bytes,
intptr_t &  error_code 
) const
inlinenoexcept

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

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

Аргументы
msg— указатель на сообщение
rand_bytes— набор чисел, сгенерированный случайным образом
error_code— код ошибки: 0, в случае успеха, EC_ERR_CURVE_ID, EC_ERR_BAD_RAND_BYTES в случае ошибки
Возвращает
сигнатуру

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

intptr_t sign_hash ( const uint8_t  hash[STREEBOG256_RESULT_SIZE],
const uint8_t  rand_bytes[EC_256_WIDTH],
uint8_t  signature[EC_256_DOUBLE_WIDTH] 
) const
inlinenoexcept

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

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

Предупреждения
Передача нулевого или некорректного указателя приводит к неопределённому поведению.
Аргументы
hash— хэш сообщения
rand_bytes— набор чисел, сгенерированный случайным образом
signature— результирующая подпись
Возвращает
0, в случае успеха, EC_ERR_CURVE_ID, EC_ERR_BAD_RAND_BYTES, в случае ошибки

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

std::array<uint8_t, EC_256_DOUBLE_WIDTH> sign_hash ( const std::array< uint8_t, STREEBOG256_RESULT_SIZE > &  hash,
const std::array< uint8_t, EC_256_WIDTH > &  rand_bytes,
intptr_t &  error_code 
) const
inlinenoexcept

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

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

Аргументы
hash— хэш сообщения
rand_bytes— набор чисел, сгенерированный случайным образом
error_code— код ошибки: 0, в случае успеха, EC_ERR_CURVE_ID, EC_ERR_BAD_RAND_BYTES в случае ошибки
Возвращает
результирующая подпись

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

std::array<uint8_t, EC_256_WIDTH> to_bytes ( ) const
inlinenoexcept

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

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

Возвращает
сериализованный закрытый

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

std::array<uint8_t, EC_256_WIDTH> vko256 ( const Ec256PublicKey_t< CurveID > &  other_pk,
intptr_t &  error_code 
) const
inlinenoexcept

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

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

Аргументы
other_pk— чужой открытый ключ
error_code— код ошибки: 0, в случае успеха, EC_ERR_CURVE_ID, EC_ERR_VKO_UKM в случае ошибки
Возвращает
общий ключ

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

std::array<uint8_t, EC_256_WIDTH> vko256 ( const Ec256PublicKey_t< CurveID > &  other_pk,
intptr_t &  error_code,
const uint8_t  ukm[EC_256_WIDTH] 
) const
inlinenoexcept

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

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

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

Предупреждения
Передача некорректного указателя приводит к неопределённому поведению.
Аргументы
other_pk— чужой открытый ключ
ukm— указатель на пользовательский ключевой материал (опционально)
error_code— код ошибки: 0, в случае успеха, EC_ERR_CURVE_ID, EC_ERR_VKO_UKM в случае ошибки
Возвращает
общий ключ

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


Объявления и описания членов класса находятся в файле: