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

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

#include <gostcrypto.hpp>

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

 Ec512PrivateKey_t (const Ec512PrivateKey_t< CurveID > &)=default
 
Ec512PrivateKey_t< CurveID > & operator= (const Ec512PrivateKey_t< CurveID > &)=default
 
 Ec512PrivateKey_t (Ec512PrivateKey_t< CurveID > &&) noexcept=default
 
Ec512PrivateKey_t< CurveID > & operator= (Ec512PrivateKey_t< CurveID > &&) noexcept=default
 
 ~Ec512PrivateKey_t ()
 
 Ec512PrivateKey_t (const uint8_t rand_bytes[EC_512_WIDTH], intptr_t &error_code) noexcept
 Создать закрытый ключ. Подробнее...
 
 Ec512PrivateKey_t (const std::array< uint8_t, EC_512_WIDTH > &rand_bytes, intptr_t &error_code) noexcept
 Создать закрытый ключ. Подробнее...
 
Ec512PublicKey_t< CurveID > get_public_key () const noexcept
 Получить открытый ключ. Подробнее...
 
std::array< uint8_t, EC_512_WIDTHto_bytes () const noexcept
 Сериализовать закрытый ключ. Подробнее...
 
intptr_t sign_hash (const uint8_t hash[STREEBOG512_RESULT_SIZE], const uint8_t rand_bytes[EC_512_WIDTH], uint8_t signature[EC_512_DOUBLE_WIDTH]) const noexcept
 Подписать хэш сообщения. Подробнее...
 
std::array< uint8_t,
EC_512_DOUBLE_WIDTH
sign_hash (const std::array< uint8_t, STREEBOG512_RESULT_SIZE > &hash, const std::array< uint8_t, EC_512_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_512_WIDTH], uint8_t signature[EC_512_DOUBLE_WIDTH]) const noexcept
 Подписать сообщение. Подробнее...
 
intptr_t sign (const std::vector< uint8_t > &msg, const std::array< uint8_t, EC_512_WIDTH > &rand_bytes, std::array< uint8_t, EC_512_DOUBLE_WIDTH > &signature) const noexcept
 Подписать сообщение. Подробнее...
 
std::array< uint8_t,
EC_512_DOUBLE_WIDTH
sign (const std::vector< uint8_t > &msg, const std::array< uint8_t, EC_512_WIDTH > &rand_bytes, intptr_t &error_code) const noexcept
 Подписать сообщение. Подробнее...
 
std::array< uint8_t, EC_256_WIDTHvko256 (const Ec512PublicKey_t< CurveID > &other_pk, intptr_t &error_code) const noexcept
 Выработать общий ключ. Подробнее...
 
std::array< uint8_t, EC_256_WIDTHvko256 (const Ec512PublicKey_t< CurveID > &other_pk, intptr_t &error_code, const uint8_t ukm[EC_512_WIDTH]) const noexcept
 Выработать общий ключ. Подробнее...
 
std::array< uint8_t, EC_512_WIDTHvko512 (const Ec512PublicKey_t< CurveID > &other_pk, intptr_t &error_code) const noexcept
 Выработать общий ключ. Подробнее...
 
std::array< uint8_t, EC_512_WIDTHvko512 (const Ec512PublicKey_t< CurveID > &other_pk, intptr_t &error_code, const uint8_t ukm[EC_512_WIDTH]) const noexcept
 Выработать общий ключ. Подробнее...
 

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

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

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

template<Gost3410_2012_512 CurveID>
class Ec512PrivateKey_t< CurveID >

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

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

См. также
Ec512

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

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

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

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

Ec512PrivateKey_t ( const uint8_t  rand_bytes[EC_512_WIDTH],
intptr_t &  error_code 
)
inlinenoexcept

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

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

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

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

Ec512PrivateKey_t ( const std::array< uint8_t, EC_512_WIDTH > &  rand_bytes,
intptr_t &  error_code 
)
inlineexplicitnoexcept

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

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

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

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

Методы

static Ec512PrivateKey_t<CurveID> from_bytes ( const uint8_t  bytes[EC_512_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 строка 2580

static Ec512PrivateKey_t<CurveID> from_bytes ( const std::array< uint8_t, EC_512_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 строка 2597

Ec512PublicKey_t<CurveID> get_public_key ( ) const
inlinenoexcept

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

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

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

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

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

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

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

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

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

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

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

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

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

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

std::array<uint8_t, EC_512_DOUBLE_WIDTH> sign ( const std::vector< uint8_t > &  msg,
const std::array< uint8_t, EC_512_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 строка 2709

intptr_t sign_hash ( const uint8_t  hash[STREEBOG512_RESULT_SIZE],
const uint8_t  rand_bytes[EC_512_WIDTH],
uint8_t  signature[EC_512_DOUBLE_WIDTH] 
) const
inlinenoexcept

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

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

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

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

std::array<uint8_t, EC_512_DOUBLE_WIDTH> sign_hash ( const std::array< uint8_t, STREEBOG512_RESULT_SIZE > &  hash,
const std::array< uint8_t, EC_512_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 строка 2649

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

std::array<uint8_t, EC_512_WIDTH> vko512 ( const Ec512PublicKey_t< CurveID > &  other_pk,
intptr_t &  error_code 
) const
inlinenoexcept

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

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

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

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

std::array<uint8_t, EC_512_WIDTH> vko512 ( const Ec512PublicKey_t< CurveID > &  other_pk,
intptr_t &  error_code,
const uint8_t  ukm[EC_512_WIDTH] 
) const
inlinenoexcept

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

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

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

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

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


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