
wolfCOSE v2.0.0
Быстрая, портативная и легковесная реализация COSE + CBOR для встраиваемых систем. Поддерживает PQC, FIPS 140-3, DO-178 и MISRA C. Работает на базе wolfSSL.
wolfCOSE
wolfCOSE — это легковесная C-библиотека, реализующая CBOR (RFC 8949), COSE (RFC 9052/9053) и пост-квантовый ML-DSA для COSE (RFC 9964) с использованием wolfSSL в качестве криптографического бэкенда.
Основные возможности
- Полный набор сообщений RFC 9052: все шесть типов сообщений COSE, включая мультиподписные
COSE_Signи мультиполучательскиеCOSE_Encrypt/COSE_Mac - Пост-квантовая подпись: ML-DSA (FIPS 204) на всех трех уровнях безопасности, с RFC 9964
COSE_Key(тип ключа AKP, сид-основанные закрытые ключи) - 40 алгоритмов для подписи, шифрования, MAC и распределения ключей
- Нулевое динамическое выделение: без выделения памяти в куче и без рекурсии. Каждая операция выполняется на буферах, предоставленных вызывающей стороной,
в пределах ограниченного, настраиваемого под целевую платформу потолка стека (ничего в куче, ноль
.data/.bss) - Минимальный размер: ES256
COSE_Sign1wolfCOSE (движок COSE + CBOR) ~5.1 КБ только проверка и ~6.8 КБ подпись + проверка. Общий объем flash с wolfCrypt составляет ~26.2 КБ только проверка (WOLFCOSE_LEAN_VERIFY) и ~34.6 КБ подпись + проверка - Быстро: (ES256
COSE_Sign1, x86_64, wolfCryptsp_256asm): 66,538 подписей/с, 26,437 проверок/с - Пост-квант по той же цене: ML-DSA-44
COSE_Sign1общий объем flash с wolfCrypt составляет ~20.8 КБ только проверка (WOLFCOSE_LEAN_VERIFY_MLDSA) и ~35.8 КБ подпись + проверка, примерно в пределах 1 КБ от классического ES256. Доля самого wolfCOSE составляет 4.6 КБ и ~6.6 КБ соответственно. См. Размер - Путь к FIPS 140-3: через wolfCrypt Сертификат FIPS #4718 (единственная криптозависимость)
Поддерживаемые алгоритмы
Подпись: 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
Типы сообщений COSE (RFC 9052)
wolfCOSE реализует все сообщения RFC 9052 как для одного, так и для нескольких участников:
| Сообщение | 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 | Сериализация ключей для всех типов ключей |
Предварительные требования (wolfSSL)
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 за коммерческой поддержкой.
Выберите конфигурацию сборки в зависимости от необходимых алгоритмов.
Минимальная сборка (ECC + AES-GCM)
Это даёт вам 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)
Для чисто пост-квантовой подписи с 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
Цели сборки
| Цель | Описание |
|---|---|
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 | Удаление всех артефактов сборки |
Быстрый старт
Примеры
См. examples/ для полного работающего кода:
sign1_demo.c,encrypt0_demo.c,mac0_demo.c: демонстрации алгоритмовlifecycle_demo.c: полный рабочий процесс от периферии до облакаcomprehensive/: тесты матрицы алгоритмовscenarios/: подпись прошивки, аттестация, конфигурация устройств
CI / Тестирование
Выполняется при каждом push и PR:
- Сборка + Тест: Ubuntu, macOS, GCC 10-14, Clang 14-18
- Комплексные тесты: ~240 тестов комбинаций алгоритмов
- Статический анализ: cppcheck, анализатор Clang, GCC
-fanalyzer - MISRA C 2012: cppcheck
--addon=misraпроверка всех путей кода wolfCOSE - MISRA C 2023: строгие предупреждения GCC и clang-tidy (
bugprone-*,cert-*,clang-analyzer-*,misc-*) - Coverity Scan: ночной анализ дефектов
- Расширенный внутренний статический анализ: Fenrir — продвинутые инструменты статического анализа wolfssl
- Покрытие кода: 99.3% для wolfcose.c, 100% для wolfcose_cbor.c
make coverage # Запуск тестов с gcov
make coverage-force-failure # Включить тестирование путей криптографических сбоев
Документация
Полная документация доступна в Wiki:
- Начало работы: инструкции по сборке и первые шаги
- Типы сообщений: все шесть сообщений RFC 9052 (Sign1, Sign, Encrypt0, Encrypt, Mac0, Mac) с примерами кода
- Алгоритмы: полный список 40 поддерживаемых алгоритмов с идентификаторами COSE
- Справочник API: сигнатуры функций, структуры данных, коды ошибок
- Макросы: опции конфигурации времени компиляции
- Размер: показатели размера и скорости, настольные и встроенные системы
- Тестирование: инфраструктура тестирования, покрытие и инъекция сбоев
- Соответствие MISRA: статус соответствия MISRA C:2012 и C:2023 и обоснование отклонений
- Структура проекта: расположение исходных файлов
Заметки о релизе
Текущий релиз — 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.