bign96.h - Man Page
Подпись Bign уровня 96.
Synopsis
#include 'bee2/crypto/bign.h'
Функции
err_t bign96ParamsStd (bign_params *params, const char *name)
Загрузка стандартных долговременных параметров
err_t bign96ParamsVal (const bign_params *params)
Проверка долговременных параметров
err_t bign96KeypairGen (octet privkey[24], octet pubkey[48], const bign_params *params, gen_i rng, void *rng_state)
Генерация пары ключей
err_t bign96KeypairVal (const bign_params *params, const octet privkey[24], const octet pubkey[48])
Проверка пары ключей
err_t bign96PubkeyVal (const bign_params *params, const octet pubkey[48])
Проверка открытого ключа
err_t bign96PubkeyCalc (octet pubkey[48], const bign_params *params, const octet privkey[24])
Построение открытого ключа по личному
err_t bign96Sign (octet sig[34], const bign_params *params, const octet oid_der[], size_t oid_len, const octet hash[24], const octet privkey[24], gen_i rng, void *rng_state)
Выработка ЭЦП
err_t bign96Sign2 (octet sig[34], const bign_params *params, const octet oid_der[], size_t oid_len, const octet hash[24], const octet privkey[24], const void *t, size_t t_len)
Детерминированная выработка ЭЦП
err_t bign96Verify (const bign_params *params, const octet oid_der[], size_t oid_len, const octet hash[24], const octet sig[34], const octet pubkey[48])
Проверка ЭЦП
Подробное описание
Подпись Bign96 -- это подпись Bign при снижении уровня стойкости до l = 96 и следующих корректировках: 1) уменьшается длина s0, первой часть подписи: с 96 битов до 80; 2) в детерминированном режиме выработки подписи (функция bign96Sign2) для построения одноразового личного ключа вместо алгоритма belt-wblock используется алгоритм belt-32block (шифрование полутора блоков). Последний алгоритм определен в СТБ 34.101.31-2020 как вспомогательный для алгоритма belt-fmt.
Повторяются соглашения и интерфейсы модуля bee2/crypto/bign.
Ожидается [ERR_BAD_INPUT]
Все входные указатели корректны.
Функции
err_t bign96KeypairGen (octet privkey[24], octet pubkey[48], const bign_params * params, gen_i rng, void * rng_state)
При долговременных параметрах params генерируются личный privkey и открытый pubkey ключи. При генерации используется генератор rng и его состояние rng_state.
Ожидается [ERR_BAD_PARAMS]
Параметры params корректны.
Ожидается [ERR_BAD_RNG]
Генератор rng (с состоянием rng_state) корректен.
Ожидается
Используется криптографически стойкий генератор rng.
- Возвращает
ERR_OK, если ключи успешно сгенерированы, и код ошибки в противном случае.
- Аргументы
privkey личный ключ
pubkey открытый ключ
params долговременные параметры
rng генератор случайных чисел
rng_state [in/out] состояние генератора
err_t bign96KeypairVal (const bign_params * params, const octet privkey[24], const octet pubkey[48])
При долговременных параметрах params проверяется корректность личного ключа privkey и соответствие ему открытого ключа pubkey.
Ожидается [ERR_BAD_PARAMS]
Параметры params корректны.
- Возвращает
ERR_OK, если пара корректна, и код ошибки в противном случае.
- Аргументы
params долговременные параметры
privkey личный ключ
pubkey открытый ключ
err_t bign96ParamsStd (bign_params * params, const char * name)
В params загружаются стандартные долговременные параметры с именем name. Поддерживается только одно имя: "1.2.112.0.2.0.34.101.45.3.0".
- Возвращает
ERR_OK, если параметры успешно загружены, и код ошибки в противном случае.
- Аргументы
params стандартные параметры
name имя параметров
err_t bign96ParamsVal (const bign_params * params)
Проверяется корректность долговременных параметров params.
- Возвращает
ERR_OK, если параметры корректны, и код ошибки в противном случае.
- Аргументы
params долговременные параметры
err_t bign96PubkeyCalc (octet pubkey[48], const bign_params * params, const octet privkey[24])
При долговременных параметрах params по личному ключу privkey строится открытый ключ pubkey.
Ожидается [ERR_BAD_PARAMS]
Параметры params корректны.
Ожидается [ERR_BAD_PRIVKEY]
Личный ключ privkey корректен.
- Возвращает
ERR_OK, если открытый ключ успешно построен, и код ошибки в противном случае.
- Аргументы
pubkey открытый ключ
params долговременные параметры
privkey личный ключ
err_t bign96PubkeyVal (const bign_params * params, const octet pubkey[48])
При долговременных параметрах params проверяется корректность открытого ключа pubkey.
Ожидается [ERR_BAD_PARAMS]
Параметры params корректны.
- Возвращает
ERR_OK, если ключ корректен, и код ошибки в противном случае.
- Аргументы
params долговременные параметры
pubkey проверяемый ключ
err_t bign96Sign (octet sig[34], const bign_params * params, const octet oid_der[], size_t oid_len, const octet hash[24], const octet privkey[24], gen_i rng, void * rng_state)
Вырабатывается подпись sig сообщения с хэш-значением hash, полученном с помощью алгоритма с идентификатором [oid_len]oid_der, заданным DER-кодом. Подпись вырабатывается на личном ключе privkey. При выработке ЭЦП используются долговременные параметры params и генератор rng с состоянием rng_state.
Ожидается [ERR_BAD_PARAMS]
Параметры params корректны.
Ожидается [ERR_BAD_OID]
Идентификатор oid_der корректен.
Ожидается [ERR_BAD_INPUT]
Буферы sig и hash не пересекаются.
Ожидается [ERR_BAD_PRIVKEY]
Личный ключ privkey корректен.
Ожидается [ERR_BAD_RNG]
Генератор rng (с состоянием rng_state) корректен.
Ожидается
Генератор rng является криптографически стойким.
- Возвращает
ERR_OK, если подпись выработана, и код ошибки в противном случае.
- Аргументы
sig подпись
params долговременные параметры
oid_der идентификатор хэш-алгоритма
oid_len длина oid_der в октетах
hash хэш-значение
privkey личный ключ
rng генератор случайных чисел
rng_state [in/out] состояние генератора
err_t bign96Sign2 (octet sig[34], const bign_params * params, const octet oid_der[], size_t oid_len, const octet hash[24], const octet privkey[24], const void * t, size_t t_len)
Вырабатывается подпись sig сообщения с хэш-значением hash, полученном с помощью алгоритма с идентификатором [oid_len]oid_der, заданным DER-кодом. Подпись вырабатывается на личном ключе privkey. При выработке ЭЦП используются долговременные параметры params. Одноразовый личный ключ генерируется с использованием дополнительных данных [t_len]t. Если t == 0, то дополнительные данные не используются.
Ожидается [ERR_BAD_PARAMS]
Параметры params корректны.
Ожидается [ERR_BAD_OID]
Идентификатор oid_der корректен.
Ожидается [ERR_BAD_INPUT]
Буферы sig и hash не пересекаются.
Ожидается [ERR_BAD_PRIVKEY]
Личный ключ privkey корректен.
- Возвращает
ERR_OK, если подпись выработана, и код ошибки в противном случае.
- Аргументы
sig подпись
params долговременные параметры
oid_der идентификатор хэш-алгоритма
oid_len длина oid_der в октетах
hash хэш-значение
privkey личный ключ
t дополнительные данные
t_len размер дополнительных данных
err_t bign96Verify (const bign_params * params, const octet oid_der[], size_t oid_len, const octet hash[24], const octet sig[34], const octet pubkey[48])
Проверяется ЭЦП sig сообщения с хэш-значением hash. При проверке используются долговременные параметры params и открытый ключ pubkey. Считается, что хэш-значение hash получено с помощью алгоритма с идентификатором [oid_len]oid_der, заданным DER-кодом.
Ожидается [ERR_BAD_PARAMS]
Параметры params корректны.
Ожидается [ERR_BAD_OID]
Идентификатор oid_der корректен.
Ожидается [ERR_BAD_PUBKEY]
Открытый ключ pubkey корректен.
- Возвращает
ERR_OK, если подпись корректна, и код ошибки в противном случае.
Прим.
При нарушении ограничений на ЭЦП возвращается код ERR_BAD_SIG.
- Аргументы
params долговременные параметры
oid_der идентификатор хэш-алгоритма
oid_len длина oid_der в октетах
hash хэш-значение
sig подпись
pubkey открытый ключ
Автор
Автоматически создано Doxygen для Библиотека Bee2 из исходного текста.