
एम्बेडेड सिस्टम के लिए एक तेज़, पोर्टेबल और हल्का COSE + CBOR कार्यान्वयन। PQC, FIPS 140-3, DO-178, और MISRA C का समर्थन करता है। wolfSSL द्वारा संचालित।
wolfCOSE एक हल्की C लाइब्रेरी है जो CBOR (RFC 8949), COSE (RFC 9052/9053), और पोस्ट-क्वांटम ML-DSA for COSE (RFC 9964) को wolfSSL क्रिप्टो बैकएंड के रूप में उपयोग करके कार्यान्वित करती है।
COSE_Sign और बहु-प्राप्तकर्ता COSE_Encrypt / COSE_Mac शामिल हैंCOSE_Key (AKP कुंजी प्रकार, बीज-आधारित निजी कुंजी) के साथ.data/.bss)COSE_Sign1 wolfCOSE (COSE + CBOR इंजन) ~5.1 KB केवल-सत्यापन और ~6.8 KB हस्ताक्षर + सत्यापन।
wolfCrypt सहित कुल फ्लैश ~26.2 KB केवल-सत्यापन (WOLFCOSE_LEAN_VERIFY) और ~34.6 KB हस्ताक्षर + सत्यापन हैCOSE_Sign1, x86_64, wolfCrypt sp_256 asm): 66,538 हस्ताक्षर/सेकंड, 26,437 सत्यापन/सेकंडCOSE_Sign1 का wolfCrypt सहित कुल फ्लैश ~20.8 KB केवल-सत्यापन है
(WOLFCOSE_LEAN_VERIFY_MLDSA) और ~35.8 KB हस्ताक्षर + सत्यापन, जो क्लासिकल ES256 के लगभग 1 KB के भीतर है। केवल wolfCOSE भाग
क्रमशः 4.6 KB और ~6.6 KB है। फुटप्रिंट देखेंहस्ताक्षर: 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
कुंजी वितरण: प्रत्यक्ष, AES कुंजी रैप, ECDH-ES+HKDF
wolfCOSE ने सभी RFC 9052 संदेशों को एकल-अभिनेता और बहु-अभिनेता दोनों प्रकारों में लागू किया है:
| संदेश | RFC 9052 | API | उद्देश्य |
|---|---|---|---|
COSE_Sign1 | धारा 4.2 | wc_CoseSign1_Sign / wc_CoseSign1_Verify | एकल-हस्ताक्षरकर्ता हस्ताक्षर |
COSE_Sign | धारा 4.1 | wc_CoseSign_Sign / wc_CoseSign_Verify | बहु-हस्ताक्षरकर्ता (समान पेलोड पर स्वतंत्र हस्ताक्षर) |
COSE_Encrypt0 | धारा 5.2 | wc_CoseEncrypt0_Encrypt / wc_CoseEncrypt0_Decrypt | एकल-प्राप्तकर्ता AEAD |
COSE_Encrypt | धारा 5.1 | wc_CoseEncrypt_Encrypt / wc_CoseEncrypt_Decrypt | बहु-प्राप्तकर्ता (एक सिफरटेक्स्ट, Direct / AES-KW / ECDH-ES के माध्यम से कई प्राप्तकर्ता) |
COSE_Mac0 | धारा 6.2 | wc_CoseMac0_Create / wc_CoseMac0_Verify | एकल-प्राप्तकर्ता MAC |
COSE_Mac | धारा 6.1 | wc_CoseMac_Create / wc_CoseMac_Verify | बहु-प्राप्तकर्ता MAC (साझा MAC कुंजी, प्राप्तकर्ताओं को वितरित) |
COSE_Key / COSE_KeySet | धारा 7 | wc_CoseKey_Encode / wc_CoseKey_Decode | सभी कुंजी प्रकारों के लिए कुंजी क्रमांकन |
wolfCOSE को अपने क्रिप्टो बैकएंड के रूप में wolfSSL की आवश्यकता है। न्यूनतम समर्थित संस्करण: v5.8.0-stable (सार्वजनिक wc_ForceZero प्रतीक के साथ पहला रिलीज़)। पोस्ट-क्वांटम हस्ताक्षर विहित FIPS 204 wc_MlDsaKey API का उपयोग करता है, जो 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 फुटप्रिंट के लिए, TLS स्टैक को हटाने और उन एल्गोरिदम को अक्षम करने के लिए --enable-cryptonly जोड़ें जो 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
MCU पर 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 द्वारा स्वचालित रूप से शामिल किए जाते हैं।
wc_MlDsaKey API के लिए 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/: फर्मवेयर हस्ताक्षर, प्रमाणीकरण, फ्लीट कॉन्फ़िगप्रत्येक पुश और PR पर चलता है:
-fanalyzer--addon=misrabugprone-*, cert-*, clang-analyzer-*, misc-*)make coverage # gcov के साथ परीक्षण चलाएँ
make coverage-force-failure # क्रिप्टो विफलता पथ परीक्षण शामिल करें