
Быстрая, портативная и легковесная реализация COSE + CBOR для встраиваемых систем. Поддерживает PQC, FIPS 140-3, DO-178 и MISRA C. Работает на базе wolfSSL.
wolfCOSE — это легковесная C-библиотека, реализующая CBOR (RFC 8949), COSE (RFC 9052/9053) и пост-квантовый ML-DSA для COSE (RFC 9964) с использованием wolfSSL в качестве криптографического бэкенда.
COSE_Sign и мультиполучательские COSE_Encrypt / COSE_MacCOSE_Key (тип ключа AKP, сид-основанные закрытые ключи).data/.bss)COSE_Sign1 wolfCOSE (движок COSE + CBOR) ~5.1 КБ только проверка и ~6.8 КБ подпись + проверка.
Общий объем flash с wolfCrypt составляет ~26.2 КБ только проверка (WOLFCOSE_LEAN_VERIFY) и ~34.6 КБ подпись + проверкаCOSE_Sign1, x86_64, wolfCrypt sp_256 asm): 66,538 подписей/с, 26,437 проверок/сCOSE_Sign1 общий объем flash с wolfCrypt составляет ~20.8 КБ только проверка
(WOLFCOSE_LEAN_VERIFY_MLDSA) и ~35.8 КБ подпись + проверка, примерно в пределах 1 КБ от классического ES256. Доля самого wolfCOSE
составляет 4.6 КБ и ~6.6 КБ соответственно. См. РазмерПодпись: ES256, ES384, ES512, EdDSA (Ed25519/Ed448), PS256/384/512, ML-DSA-44/65/87
Шифрование: AES-GCM (128/192/256), ChaCha20-Poly1305, варианты AES-CCM
MAC: HMAC-SHA256/384/512, AES-MAC
Распределение ключей: Direct, AES Key Wrap, ECDH-ES+HKDF
wolfCOSE реализует все сообщения RFC 9052 как для одного, так и для нескольких участников:
wolfCOSE требует wolfSSL в качестве криптографического бэкенда. Минимальная поддерживаемая версия: v5.8.0-stable (первый выпуск с публичным символом wc_ForceZero). Пост-квантовая подпись использует канонический API FIPS 204 wc_MlDsaKey, который появляется в wolfSSL после v5.9.1-stable; сборка wolfCOSE с v5.8.0–v5.9.1 работает для всего, кроме ML-DSA. Более старые версии 5.x технически могут поддерживаться, но требуют изменений на уровне исходного кода; обращайтесь в wolfSSL за коммерческой поддержкой.
Выберите конфигурацию сборки в зависимости от необходимых алгоритмов.
Это даёт вам COSE Sign1 (ES256/384/512) и Encrypt0 (AES-GCM):
cd wolfssl
./autogen.sh
./configure --enable-ecc --enable-aesgcm \
--enable-sha384 --enable-sha512 --enable-keygen
make && sudo make install
sudo ldconfig
Включённые алгоритмы: ES256, ES384, ES512, AES-GCM-128/192/256
Для уменьшения размера wolfCrypt добавьте --enable-cryptonly, чтобы отключить стек TLS
и отключить алгоритмы, которые не используются в сборке Sign1 + Encrypt0:
./configure --enable-cryptonly --enable-ecc --enable-aesgcm \
--enable-sha384 --enable-sha512 --enable-keygen \
--enable-lowresource \
--disable-dh --disable-rsa --disable-aescbc \
--disable-sha --disable-md5 --disable-chacha --disable-poly1305 \
--disable-errorstrings
См. Настройка для размера и Настройка для скорости для дальнейшего сжатия wolfCOSE и wolfCrypt на микроконтроллерах.
Для чисто пост-квантовой подписи с ML-DSA-44/65/87:
cd wolfssl
./autogen.sh
./configure --enable-cryptonly --enable-mldsa
make && sudo make install
sudo ldconfig
Включённые алгоритмы: ML-DSA-44, ML-DSA-65, ML-DSA-87
(SHAKE-128/256 подтягиваются автоматически при --enable-mldsa. API
wc_MlDsaKey требует wolfSSL новее, чем v5.9.1-stable.)
cd wolfssl
./autogen.sh
./configure --enable-ecc --enable-ed25519 --enable-ed448 \
--enable-curve25519 --enable-aesgcm --enable-aesccm \
--enable-sha384 --enable-sha512 --enable-keygen \
--enable-rsapss --enable-chacha --enable-poly1305 \
--enable-mldsa \
--enable-hkdf --enable-aeskeywrap
make && sudo make install
sudo ldconfig
# Основная библиотека (libwolfcose.a)
make
# Запуск модульных тестов
make test
# Сборка и запуск циклических тестов CLI-инструмента (все алгоритмы)
make tool-test
# Запуск демонстрации жизненного цикла (11 алгоритмов)
make demo
См. examples/ для полного работающего кода:
sign1_demo.c, encrypt0_demo.c, mac0_demo.c: демонстрации алгоритмовlifecycle_demo.c: полный рабочий процесс от периферии до облакаcomprehensive/: тесты матрицы алгоритмовscenarios/: подпись прошивки, аттестация, конфигурация устройствВыполняется при каждом push и PR:
-fanalyzer--addon=misra проверка всех путей кода wolfCOSEbugprone-*, cert-*, clang-analyzer-*, misc-*)make coverage # Запуск тестов с gcov
make coverage-force-failure # Включить тестирование путей криптографических сбоев
Полная документация доступна в Wiki:
Текущий релиз — 1.0.0, первый стабильный выпуск: полный набор сообщений COSE RFC 9052 (все шесть типов сообщений, один и несколько участников), 40 алгоритмов и стандартизованный пост-квантовый ML-DSA (RFC 9964), всё с нулевым динамическим выделением. См. ChangeLog.md для полных заметок о релизе.
wolfCOSE 1.0.0 разработан в соответствии с процессом разработки и контроля качества wolfSSL (см. https://www.wolfssl.com/about/wolfssl-software-development-process-quality-assurance) и успешно прошёл критерии качества.
wolfCOSE — это свободное программное обеспечение, распространяемое по лицензии GPLv3; см. LICENSE для полного текста.
Copyright (C) 2026 wolfSSL Inc.
Для коммерческого лицензирования, контрактов профессиональной поддержки или обсуждения внедрения wolfCOSE в вашу производственную среду обращайтесь в wolfSSL.
| Сообщение | RFC 9052 | API | Назначение |
|---|
COSE_Sign1 | Sec. 4.2 | wc_CoseSign1_Sign / wc_CoseSign1_Verify | Подпись с одним подписантом |
COSE_Sign | Sec. 4.1 | wc_CoseSign_Sign / wc_CoseSign_Verify | Мультиподпись (независимые подписи над одними и теми же данными) |
COSE_Encrypt0 | Sec. 5.2 | wc_CoseEncrypt0_Encrypt / wc_CoseEncrypt0_Decrypt | AEAD с одним получателем |
COSE_Encrypt | Sec. 5.1 | wc_CoseEncrypt_Encrypt / wc_CoseEncrypt_Decrypt | Мультиполучатель (один шифротекст, много получателей через Direct / AES-KW / ECDH-ES) |
COSE_Mac0 | Sec. 6.2 | wc_CoseMac0_Create / wc_CoseMac0_Verify | MAC с одним получателем |
COSE_Mac | Sec. 6.1 | wc_CoseMac_Create / wc_CoseMac_Verify | Мультиполучательский MAC (общий MAC-ключ, распределённый по получателям) |
COSE_Key / COSE_KeySet | Sec. 7 | wc_CoseKey_Encode / wc_CoseKey_Decode | Сериализация ключей для всех типов ключей |
| Цель | Описание |
|---|
make all | Сборка libwolfcose.a (только основная библиотека) |
make shared | Сборка libwolfcose.so |
make test | Сборка + запуск модульных тестов CBOR и COSE |
make tool | Сборка CLI-инструмента (tools/wolfcose_tool) |
make tool-test | Циклический самотест для всех 17 алгоритмов |
make demo | Сборка + запуск демонстрации жизненного цикла (11 алгоритмов) |
make clean | Удаление всех артефактов сборки |