Closed
Conversation
…odularity This commit implements a comprehensive three-layer native FFI architecture: **Layer 1: Rust FFI (C ABI)** - Base FFI crate (cose_sign1_validation_ffi) with opaque handles - Per-pack FFI crates: certificates, MST, AKV, trust (placeholder) - Status codes, panic catching, thread-local error messages - ABI versioning support **Layer 2: C Projection** - Modular headers per pack (cose_sign1.h, cose_certificates.h, cose_mst.h, cose_azure_key_vault.h) - CMake build system with conditional pack linking - Per-pack options structs (certificate_trust_options, mst_trust_options, akv_trust_options) - Smoke test validating builder + pack registration **Layer 3: C++ Projection** - Modern C++17 RAII wrappers (validator.hpp, certificates.hpp, mst.hpp, azure_key_vault.hpp) - Exception-based error handling with cose::cose_error - Fluent builder pattern with method chaining - Non-copyable, movable resource handles - Automatic cleanup via destructors - Smoke test validating all packs with default and custom options **Architecture Highlights:** - Per-pack modularity at ALL layers (Rust FFI, C, C++) - Consumers include/link only packs they need - CMake defines COSE_HAS_<PACK>_PACK when packs are available - Zero-cost C++ abstractions over C API - Comprehensive documentation (ARCHITECTURE.md, FFI_PROJECTIONS_PROGRESS.md) **Testing:** - All smoke tests passing (C and C++) - Requires Rust FFI DLLs in PATH - 272 Rust tests passing - Ready for integration testing with real COSE messages Milestone M2 (C ABI validation parity) substantially complete.
- Add built-in Rust post-signature validator for V1 indirect signature formats - Add integration tests (kept under tests/) to preserve production-only coverage gates - Improve Rust llvm-cov stability on Windows and suppress known noisy warning - Teach native coverage scripts to find VS-bundled CMake and ASAN runtime DLLs
Replace optional ml-dsa usage with pqcrypto-mldsa (PQClean-based) behind the existing pqc-mldsa feature. Update signing-key verification + tests accordingly, and ensure the ASAN coverage pipeline also builds the pqcrypto/PQClean code under ASAN.
Document pqcrypto-mldsa (PQClean) behind pqc-mldsa, note ASAN pipeline behavior for Rust-built C deps, and describe the built-in indirect-signature post-signature validator formats.
Update native/docs/README.md to direct readers to the Rust documentation surfaces as the source of truth, while keeping quick links for vcpkg/CMake consumption and the C/C++ projection guides.
Convert file-path references across native/**/*.md into clickable Markdown links to improve navigation (docs, guides, scripts, and example sources).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.