Receiver
04.01.2024, 03:39
Описание:Легковесная библиотека с криптографическими алгоритмами, полностью написанная на C99 и имеющая выходной размер 140 килобайт. Её главная цель это минимазция кода и его зависимостей, а так же кроссплатформенность. Библиотека реализует и предоставляет следующий список криптографических примитивов:
SHA-256
HMAC
HMAC-PRNG
AES-128 (реализация только для 128 битового ключа)
CTR mode
CBC mode
CMAC mode
CCM mode
ECC-DH (реализация только для кривой secp256r1)
ECC-DSA
Сборка библиотеки:
git clone https://github.com/Receiver1/tinycrypt
mkdir build & cd build
cmake ..
cmake --build . --config Release
ctest -C Release (для прогона тестов)
Пример использования:
C++:
// AES это блочный шифр, поэтому на вход мы подаём данные партиями по TC_AES_BLOCK_SIZE = 16 байт
std
::
uint8_t
plain_text
[
TC_AES_BLOCK_SIZE
]
{
}
;
// Исходные данные
std
::
uint8_t
cipher_key
[
TC_AES_KEY_SIZE
]
{
}
;
// Ключ шифрования
std
::
uint8_t
cipher_text
[
TC_AES_BLOCK_SIZE
]
{
}
;
// Зашифрованные данные
// На этом этапе нужно заполнить plain_text и cipher_key
tc_aes_key_sched_struct state
{
}
;
if
(
tc_aes128_set_encrypt_key
(
&
state
,
cipher_key
)
!=
1
)
exit
(
EXIT_FAILURE
)
;
if
(
tc_aes_encrypt
(
cipher_text
,
plain_text
,
&
state
)
!=
1
)
exit
(
EXIT_FAILURE
)
;
// На этом этапе cipher_text содержит зашифрованные данные
Исходный код: https://github.com/Receiver1/tinycrypt
Это мой форк библиотеки переведённый на CMake.
Copyright (c) 2017, Intel Corporation. All rights reserved.
SHA-256
HMAC
HMAC-PRNG
AES-128 (реализация только для 128 битового ключа)
CTR mode
CBC mode
CMAC mode
CCM mode
ECC-DH (реализация только для кривой secp256r1)
ECC-DSA
Сборка библиотеки:
git clone https://github.com/Receiver1/tinycrypt
mkdir build & cd build
cmake ..
cmake --build . --config Release
ctest -C Release (для прогона тестов)
Пример использования:
C++:
// AES это блочный шифр, поэтому на вход мы подаём данные партиями по TC_AES_BLOCK_SIZE = 16 байт
std
::
uint8_t
plain_text
[
TC_AES_BLOCK_SIZE
]
{
}
;
// Исходные данные
std
::
uint8_t
cipher_key
[
TC_AES_KEY_SIZE
]
{
}
;
// Ключ шифрования
std
::
uint8_t
cipher_text
[
TC_AES_BLOCK_SIZE
]
{
}
;
// Зашифрованные данные
// На этом этапе нужно заполнить plain_text и cipher_key
tc_aes_key_sched_struct state
{
}
;
if
(
tc_aes128_set_encrypt_key
(
&
state
,
cipher_key
)
!=
1
)
exit
(
EXIT_FAILURE
)
;
if
(
tc_aes_encrypt
(
cipher_text
,
plain_text
,
&
state
)
!=
1
)
exit
(
EXIT_FAILURE
)
;
// На этом этапе cipher_text содержит зашифрованные данные
Исходный код: https://github.com/Receiver1/tinycrypt
Это мой форк библиотеки переведённый на CMake.
Copyright (c) 2017, Intel Corporation. All rights reserved.