pqc-binary-format 3.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. pqc_binary_format-3.0.0/.gitignore +41 -0
  2. pqc_binary_format-3.0.0/CHANGELOG.md +303 -0
  3. pqc_binary_format-3.0.0/CONTRIBUTING.md +138 -0
  4. pqc_binary_format-3.0.0/Cargo.lock +924 -0
  5. pqc_binary_format-3.0.0/Cargo.toml +75 -0
  6. pqc_binary_format-3.0.0/LICENSE-APACHE +202 -0
  7. pqc_binary_format-3.0.0/LICENSE-MIT +21 -0
  8. pqc_binary_format-3.0.0/PKG-INFO +745 -0
  9. pqc_binary_format-3.0.0/PUBLISHING.md +78 -0
  10. pqc_binary_format-3.0.0/README.md +716 -0
  11. pqc_binary_format-3.0.0/TEST_RESULTS_v1.0.4.md +356 -0
  12. pqc_binary_format-3.0.0/TEST_VERIFICATION.md +95 -0
  13. pqc_binary_format-3.0.0/benches/format_benchmarks.rs +78 -0
  14. pqc_binary_format-3.0.0/bindings/c-cpp/Makefile +40 -0
  15. pqc_binary_format-3.0.0/bindings/c-cpp/README.md +361 -0
  16. pqc_binary_format-3.0.0/bindings/c-cpp/example.cpp +191 -0
  17. pqc_binary_format-3.0.0/bindings/go/LICENSE +21 -0
  18. pqc_binary_format-3.0.0/bindings/go/README.md +349 -0
  19. pqc_binary_format-3.0.0/bindings/go/examples/example.go +125 -0
  20. pqc_binary_format-3.0.0/bindings/go/format.go +432 -0
  21. pqc_binary_format-3.0.0/bindings/go/format_test.go +315 -0
  22. pqc_binary_format-3.0.0/bindings/go/go.mod +8 -0
  23. pqc_binary_format-3.0.0/bindings/javascript/README.md +237 -0
  24. pqc_binary_format-3.0.0/bindings/javascript/example.js +131 -0
  25. pqc_binary_format-3.0.0/bindings/javascript/package.json +42 -0
  26. pqc_binary_format-3.0.0/bindings/python/README.md +155 -0
  27. pqc_binary_format-3.0.0/bindings/python/example.py +117 -0
  28. pqc_binary_format-3.0.0/bindings/python/setup.py +45 -0
  29. pqc_binary_format-3.0.0/cbindgen.toml +24 -0
  30. pqc_binary_format-3.0.0/deny.toml +36 -0
  31. pqc_binary_format-3.0.0/docs/algorithms.md +1357 -0
  32. pqc_binary_format-3.0.0/examples/README.md +222 -0
  33. pqc_binary_format-3.0.0/examples/algorithm_comparison.rs +48 -0
  34. pqc_binary_format-3.0.0/examples/basic_usage.rs +47 -0
  35. pqc_binary_format-3.0.0/examples/c/basic_usage.c +151 -0
  36. pqc_binary_format-3.0.0/examples/cpp/basic_usage.cpp +154 -0
  37. pqc_binary_format-3.0.0/examples/go/basic_usage.go +107 -0
  38. pqc_binary_format-3.0.0/examples/go/go.mod +7 -0
  39. pqc_binary_format-3.0.0/examples/javascript/basic_usage.js +121 -0
  40. pqc_binary_format-3.0.0/examples/python/algorithm_comparison.py +75 -0
  41. pqc_binary_format-3.0.0/examples/python/basic_usage.py +106 -0
  42. pqc_binary_format-3.0.0/examples/with_compression.rs +64 -0
  43. pqc_binary_format-3.0.0/include/pqc_binary_format.h +445 -0
  44. pqc_binary_format-3.0.0/pyproject.toml +39 -0
  45. pqc_binary_format-3.0.0/src/algorithm.rs +410 -0
  46. pqc_binary_format-3.0.0/src/error.rs +46 -0
  47. pqc_binary_format-3.0.0/src/ffi.rs +405 -0
  48. pqc_binary_format-3.0.0/src/format.rs +602 -0
  49. pqc_binary_format-3.0.0/src/lib.rs +145 -0
  50. pqc_binary_format-3.0.0/src/metadata.rs +363 -0
  51. pqc_binary_format-3.0.0/src/python.rs +397 -0
  52. pqc_binary_format-3.0.0/src/wasm.rs +473 -0
  53. pqc_binary_format-3.0.0/tests/registry.rs +175 -0
@@ -0,0 +1,41 @@
1
+ # Rust build artifacts
2
+ /target/
3
+ **/*.rs.bk
4
+ *.pdb
5
+
6
+ # Cargo lock file (for libraries, this can be excluded)
7
+ # Cargo.lock
8
+
9
+ # IDE files
10
+ .vscode/
11
+ .idea/
12
+ *.swp
13
+ *.swo
14
+ *~
15
+
16
+ # OS files
17
+ .DS_Store
18
+ Thumbs.db
19
+
20
+ # Test artifacts
21
+ *.profraw
22
+ *.profdata
23
+
24
+ # Documentation build
25
+ /target/doc/
26
+
27
+ # Benchmark results
28
+ /target/criterion/
29
+
30
+ # C/C++ build artifacts
31
+ bindings/c-cpp/example
32
+ examples/c/basic_usage
33
+ examples/cpp/basic_usage
34
+ *.o
35
+ *.so
36
+ *.dylib
37
+ *.dll
38
+
39
+ # Build outputs
40
+ build-output.txt
41
+ .venv/
@@ -0,0 +1,303 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [3.0.0] - 2026-11-14
11
+
12
+ ### Added
13
+ - Four identifiers the PQCrypta platform assigns in the post-quantum range:
14
+ `X25519MlKem768` (0x0208, the X-Wing hybrid of ML-KEM-768 and X25519),
15
+ `FrodoKem1344` (0x0209), `ClassicMcEliece` (0x020A, parameter set 6960119) and
16
+ `FrodoKem976` (0x020B), in Rust, the C API, Python, JavaScript and Go.
17
+ - `Algorithm::ALL`, `Algorithm::family()` with the `Family` enum, and
18
+ `Algorithm::c_constant()`.
19
+ - One registry table in `src/algorithm.rs` generates the enum, every lookup and every
20
+ `PQC_ALGORITHM_*` constant; `tests/registry.rs` holds the C header, the Go binding, the
21
+ README and `docs/algorithms.md` to it.
22
+
23
+ ### Changed (breaking)
24
+ - `Algorithm` is `#[non_exhaustive]`: a `match` needs a wildcard arm, and new identifiers
25
+ arrive in minor releases.
26
+ - The C API exports a constant for every algorithm (it exported 24), and the header
27
+ declares all of them (it declared 13).
28
+ - Go: the module path is `github.com/PQCrypta/pqc-binary-format/bindings/go/v3`.
29
+
30
+ ### Fixed
31
+ - **C API**: `PQC_ALGORITHM_LATTICE_CODE_HYBRID` is 0x0206. It was 0x0208, an identifier
32
+ the library did not parse.
33
+ - **Go**: Password Classical's display name matches the other bindings.
34
+ - **Docs**: the README lists all 51 identifiers (it listed 31 of 47 and counted 47), and
35
+ `docs/algorithms.md` has a section for each, the ML-KEM, ML-DSA and SLH-DSA parameter
36
+ sets among them, numbered once.
37
+ - **Go**: 2.x's module path lacked `/v2`, so the module proxy ignored the 2.0.x tags and
38
+ served 1.0.14; it also still named the repository by its old name.
39
+ - **Python**: abi3 wheels for Linux (glibc and musl), macOS and Windows on x86-64 and ARM, and
40
+ the sdist. 2.0.x shipped one cp311 manylinux_2_34 x86-64 wheel, so `pip install` failed on
41
+ any other Python or platform.
42
+ - **Publishing**: a `v*` tag publishes to crates.io, PyPI and npm with trusted publishing (no
43
+ stored tokens) and tags the Go module; see PUBLISHING.md. The crates.io workflow waited for a
44
+ GitHub release and had no trusted publisher, the npm token had expired, and release-please
45
+ never opened a release, so 2.0.x was published by hand.
46
+ - `bindings/javascript/package.json` and `pyproject.toml` point at this repository, and the
47
+ former is at the released version.
48
+
49
+ ## [2.0.2] - 2026-06-29
50
+
51
+ ### Fixed
52
+ - README title, badges and dependency claims still described 1.0.14.
53
+
54
+ ## [2.0.1] - 2026-06-29
55
+
56
+ ### Fixed
57
+ - Crate-level documentation describes the v2 wire format.
58
+
59
+ ## [2.0.0] - 2026-06-29
60
+
61
+ ### Changed
62
+ - **Breaking**: the wire format follows the specification and is byte-for-byte interoperable
63
+ across the Rust, Python, JavaScript, Go and C/C++ bindings.
64
+ - pyo3 0.20 → 0.24 (RUSTSEC-2025-0020).
65
+
66
+ ### Fixed
67
+ - Go examples match the pure-Go binding's API.
68
+
69
+ ### Added
70
+ - CI: CodeQL, OSSF Scorecard, secret scanning, cargo-deny, dependabot and a stale bot.
71
+
72
+ ## [1.0.14] - 2026-01-17
73
+
74
+ ### Changed
75
+ - **Universal Algorithm Count**: Updated from 36/42 to **47 algorithm identifiers** across all documentation
76
+ - Format is designed for universal PQC ecosystem use, not just PQ Crypta engines
77
+ - Includes all NIST FIPS standalone variants (ML-KEM-512/768, ML-DSA-44/65/87, SLH-DSA-*)
78
+ - All package versions synchronized to 1.0.14
79
+ - Updated README.md, Go bindings, and all documentation to reflect 47 algorithms
80
+
81
+ ### Documentation
82
+ - Comprehensive algorithm breakdown across 9 categories:
83
+ - Core Algorithms (6)
84
+ - Multi-KEM & Stacks (5)
85
+ - Max-Secure Series (7)
86
+ - HQC Code-Based (3)
87
+ - ML-KEM FIPS 203 (2)
88
+ - FN-DSA Signatures (8)
89
+ - Experimental (7)
90
+ - ML-DSA FIPS 204 (3)
91
+ - SLH-DSA FIPS 205 (6)
92
+
93
+ ## [1.0.13] - 2026-01-17
94
+
95
+ ### Added
96
+ - **NIST Standard Algorithm IDs** - Complete FIPS algorithm identifier registry
97
+ - **ML-KEM Variants (FIPS 203)** - Key Encapsulation Mechanisms
98
+ - ML-KEM-512 (0x0700) - NIST Level 1, 128-bit security
99
+ - ML-KEM-768 (0x0701) - NIST Level 3, 192-bit security
100
+ - **ML-DSA Variants (FIPS 204)** - Digital Signature Algorithm
101
+ - ML-DSA-44 (0x0800) - NIST Level 2, 128-bit security
102
+ - ML-DSA-65 (0x0801) - NIST Level 3, 192-bit security
103
+ - ML-DSA-87 (0x0802) - NIST Level 5, 256-bit security
104
+ - **SLH-DSA Variants (FIPS 205)** - Stateless Hash-Based Digital Signatures
105
+ - SLH-DSA-SHA2-128s (0x0900) - NIST Level 1, small signatures
106
+ - SLH-DSA-SHA2-128f (0x0901) - NIST Level 1, fast signatures
107
+ - SLH-DSA-SHA2-192s (0x0902) - NIST Level 3, small signatures
108
+ - SLH-DSA-SHA2-192f (0x0903) - NIST Level 3, fast signatures
109
+ - SLH-DSA-SHA2-256s (0x0904) - NIST Level 5, small signatures
110
+ - SLH-DSA-SHA2-256f (0x0905) - NIST Level 5, fast signatures
111
+ - New algorithm ID ranges reserved: 0x0700-0x07FF (ML-KEM), 0x0800-0x08FF (ML-DSA), 0x0900-0x09FF (SLH-DSA)
112
+ - C/C++ FFI constants for all NIST algorithms (PQC_ALGORITHM_ML_KEM_512, etc.)
113
+ - **docs.rs Build Configuration**: Added `[package.metadata.docs.rs]` section to Cargo.toml
114
+ - Configured `all-features = true` for comprehensive documentation
115
+ - Added rustdoc-args for docs.rs environment detection
116
+ - Specified target platform for consistent builds
117
+
118
+ ### Changed
119
+ - Algorithm count increased from 31 to 47 algorithms (universal PQC support)
120
+ - All package versions at 1.0.14 for consistency
121
+ - Improved documentation build reliability across all registries
122
+
123
+ ### Impact
124
+ - **NIST FIPS Compliance**: Full implementation of NIST PQC standard algorithm identifiers
125
+ - **Interoperability**: Dedicated IDs enable standardized cross-implementation communication
126
+ - **Future-Proof**: Reserved ID ranges for future NIST algorithm variants
127
+
128
+ ## [1.0.11] - 2026-01-12
129
+
130
+ ### Fixed
131
+ - **Documentation Sync**: Updated all README files to show correct version (v1.0.11)
132
+ - **Algorithm Counts**: Corrected all references from "28 algorithms" to "31 algorithms"
133
+ - **pkg/README.md**: Updated version header and algorithm counts
134
+ - **docs/algorithms.md**: Added complete HQC algorithm specifications and updated totals
135
+ - **npm Workflow**: Fixed wasm-pack build command syntax for automated publishing
136
+
137
+ ### Changed
138
+ - All package versions incremented to 1.0.11 for consistency
139
+ - README documentation now accurately reflects 31 total algorithms
140
+ - Algorithm documentation expanded with HQC code-based series details
141
+
142
+ ### Documentation
143
+ - Added comprehensive HQC-128/192/256 specifications to docs/algorithms.md
144
+ - Updated algorithm category index to include HQC series
145
+ - Corrected package registry status tables
146
+
147
+ ## [1.0.10] - 2026-01-12
148
+
149
+ ### Added
150
+ - **HQC Code-Based Cryptography** - NIST 2025 Backup KEM standard
151
+ - HQC-128 (0x0600) - NIST Level 1, 128-bit security
152
+ - HQC-192 (0x0601) - NIST Level 3, 192-bit security
153
+ - HQC-256 (0x0602) - NIST Level 5, 256-bit security
154
+ - Algorithm family 0x0600-0x06FF reserved for code-based algorithms
155
+ - HQC constants in C/C++ FFI (`PQC_ALGORITHM_HQC_128/192/256`)
156
+ - HQC constants in Go bindings (`AlgorithmHqc128/192/256`)
157
+
158
+ ### Changed
159
+ - Updated algorithm count from 28+ to 31+ algorithms
160
+ - Updated Rust crate documentation
161
+ - Updated Go package documentation
162
+ - Updated JavaScript package documentation
163
+ - Updated Python package documentation
164
+
165
+ ### Impact
166
+ - **Cryptographic Diversity**: Adds code-based cryptography alongside lattice-based algorithms
167
+ - **NIST Compliance**: Implements NIST 2025 backup KEM standard
168
+ - **Quantum Resistance**: Provides additional security layer with different mathematical foundation
169
+
170
+ ## [1.0.9] - 2026-01-11
171
+
172
+ ### Published
173
+ - ✅ **crates.io**: https://crates.io/crates/pqc-binary-format v1.0.9
174
+ - ✅ **PyPI**: https://pypi.org/project/pqc-binary-format/ v1.0.9
175
+ - ✅ **npm**: https://www.npmjs.com/package/pqc-binary-format v1.0.9
176
+ - ✅ **pkg.go.dev**: https://pkg.go.dev/github.com/PQCrypta/pqcrypta-community/bindings/go@v1.0.9
177
+
178
+ ### Added
179
+ - **Pure Go implementation** - Complete rewrite of Go bindings eliminating CGO dependencies
180
+ - Comprehensive Go test suite with 12 tests and benchmarks
181
+ - Go examples directory with detailed usage examples
182
+ - MIT LICENSE file in Go bindings directory for pkg.go.dev compliance
183
+ - Full pkg.go.dev documentation now visible and indexed
184
+
185
+ ### Changed
186
+ - **Breaking change in Go**: Go bindings now pure Go implementation (no CGO)
187
+ - API changed from CGO-based to pure Go functions
188
+ - Old: `NewPqcBinaryFormat()` → New: `pqc.New()`
189
+ - Removed dependency on Rust library compilation
190
+ - Fully portable across all Go-supported platforms
191
+ - Updated all language binding versions to 1.0.9 for consistency
192
+ - Updated all documentation references to version 1.0.9
193
+
194
+ ### Fixed
195
+ - Go bindings now properly indexed on pkg.go.dev
196
+ - Go package documentation now displays correctly (license issue resolved)
197
+ - Cross-platform compatibility improved with pure Go implementation
198
+
199
+ ### Performance
200
+ - Go bindings performance: Serialize 1KB ~50μs, Parse 1KB ~40μs
201
+ - Constant-time checksum verification
202
+ - Zero-copy operations where possible
203
+
204
+ ## [1.0.7] - 2026-01-10
205
+
206
+ ### Published
207
+ - ✅ **crates.io**: https://crates.io/crates/pqc-binary-format
208
+ - ✅ **PyPI**: https://pypi.org/project/pqc-binary-format/
209
+ - ⏳ **npm**: https://www.npmjs.com/package/pqc-binary-format (publishing)
210
+ - ✅ **pkg.go.dev**: https://pkg.go.dev/github.com/PQCrypta/pqcrypta-community/bindings/go
211
+
212
+ ### Added
213
+ - New "Language Bindings" section in README with comprehensive table of all bindings
214
+ - Cross-language compatibility examples and workflow documentation
215
+ - Installation quick reference for all supported languages
216
+ - Package distribution status tracking table
217
+ - "Current Status" section in Contributing guidelines
218
+ - GitHub Actions workflows for automated publishing to npm and PyPI
219
+ - Comprehensive PUBLISHING.md guide for all package registries
220
+
221
+ ### Changed
222
+ - Updated "Areas for Contribution" to reflect completed language bindings
223
+ - Clarified that Python, JavaScript, Go, C, C++ bindings are production-ready and tested
224
+ - Improved contributing guidelines with clearer focus areas
225
+ - Version bumped to 1.0.7 across all packages
226
+ - Press release updated with all package registry links
227
+
228
+ ### Documentation
229
+ - Enhanced README with language binding details and cross-platform examples
230
+ - Updated all version references to 1.0.7
231
+ - Improved clarity on which bindings are complete vs. contribution opportunities
232
+ - Updated press release with multi-platform availability
233
+
234
+ ## [1.0.6] - 2026-01-10
235
+
236
+ ### Added
237
+ - Comprehensive examples for all language bindings (Rust, Python, JavaScript, Go, C, C++)
238
+ - `pyproject.toml` for proper Python package configuration
239
+ - Go module configuration for examples (`examples/go/go.mod`)
240
+ - Testing validation for all 9 examples across 6 languages
241
+
242
+ ### Changed
243
+ - Updated Python API to use properties instead of methods (`.name` instead of `.name()`)
244
+ - Updated JavaScript import paths to use `pkg/` directory from wasm-pack
245
+ - Improved build documentation with correct commands for all languages
246
+ - Updated examples/README.md with validated build instructions
247
+
248
+ ### Fixed
249
+ - Python bindings now correctly expose `.name`, `.id`, `.data` as properties
250
+ - Go bindings package conflict resolved (moved `example.go` to `.bak`)
251
+ - C/C++ examples now build correctly with `--no-default-features` flag
252
+ - JavaScript WASM module compatibility notes added for Node.js v22+
253
+
254
+ ### Documentation
255
+ - Root README.md updated with corrected Python examples
256
+ - examples/README.md updated with tested build commands
257
+ - Added testing status badges to all language sections
258
+ - Clarified FFI build requirements for C/C++/Go bindings
259
+
260
+ ### Tested
261
+ - ✅ Rust: 3 examples (basic_usage, algorithm_comparison, with_compression)
262
+ - ✅ Python: 2 examples (basic_usage, algorithm_comparison)
263
+ - ✅ C: 1 example (basic_usage)
264
+ - ✅ C++: 1 example (basic_usage)
265
+ - ✅ Go: 1 example (basic_usage)
266
+ - ⚠️ JavaScript: 1 example (WASM builds successfully, requires browser for Node.js v22+)
267
+
268
+ ## [1.0.5] - 2026-01-10
269
+
270
+ ### Changed
271
+ - Prepared for crates.io publication
272
+ - Version bump across all packages
273
+
274
+ ## [1.0.4] - 2026-01-10
275
+
276
+ ### Fixed
277
+ - Fixed type mismatches in Python/WASM bindings (compression level: i32 → u8)
278
+ - Removed unused imports in python.rs and ffi.rs
279
+ - Fixed cbindgen double-prefix issue (PqcPqcByteBuffer → ByteBuffer)
280
+ - Resolved all clippy warnings with strategic allow directives
281
+ - Fixed code formatting issues
282
+
283
+ ### Changed
284
+ - Git author configuration set to "PQCrypta <contact@pqcrypta.com>"
285
+ - Updated all documentation version references
286
+ - Synchronized version numbers across all language bindings
287
+
288
+ ## [1.0.3] - 2026-01-10
289
+
290
+ ### Added
291
+ - Initial language bindings for Python, JavaScript (WASM), Go, C/C++
292
+ - FFI layer for C interoperability
293
+ - Type safety improvements
294
+
295
+ ## [1.0.0] - 2026-01-10
296
+
297
+ ### Added
298
+ - Initial release of PQC Binary Format
299
+ - Support for 28 cryptographic algorithms
300
+ - Standardized binary format specification
301
+ - Cross-platform compatibility
302
+ - SHA-256 integrity verification
303
+ - Core Rust implementation
@@ -0,0 +1,138 @@
1
+ # Contributing to PQC Binary Format
2
+
3
+ Thank you for your interest in contributing! This document provides guidelines for contributing to the project.
4
+
5
+ ## Code of Conduct
6
+
7
+ Be respectful and professional. We're all here to advance post-quantum cryptography.
8
+
9
+ ## How to Contribute
10
+
11
+ ### Reporting Bugs
12
+
13
+ 1. Check if the bug has already been reported in [Issues](https://github.com/PQCrypta/pqcrypta-community/issues)
14
+ 2. If not, create a new issue with:
15
+ - Clear title and description
16
+ - Steps to reproduce
17
+ - Expected vs actual behavior
18
+ - Code samples if applicable
19
+ - Rust version and OS
20
+
21
+ ### Suggesting Features
22
+
23
+ 1. Open an issue with the "enhancement" label
24
+ 2. Describe the feature and its use case
25
+ 3. Explain why it would be valuable to users
26
+
27
+ ### Pull Requests
28
+
29
+ 1. Fork the repository
30
+ 2. Create a feature branch (`git checkout -b feature/amazing-feature`)
31
+ 3. Make your changes
32
+ 4. Add tests for new functionality
33
+ 5. Ensure all tests pass (`cargo test`)
34
+ 6. Run clippy (`cargo clippy`)
35
+ 7. Format code (`cargo fmt`)
36
+ 8. Commit with clear messages
37
+ 9. Push to your fork
38
+ 10. Open a Pull Request
39
+
40
+ ### Code Standards
41
+
42
+ - Follow Rust API guidelines
43
+ - Write documentation for public APIs
44
+ - Add examples for new features
45
+ - Maintain test coverage above 80%
46
+ - Keep functions focused and small
47
+ - Use meaningful variable names
48
+
49
+ ### Testing
50
+
51
+ ```bash
52
+ # Run all tests
53
+ cargo test
54
+
55
+ # Run with output
56
+ cargo test -- --nocapture
57
+
58
+ # Run benchmarks
59
+ cargo bench
60
+
61
+ # Check documentation
62
+ cargo doc --open
63
+ ```
64
+
65
+ ### Commit Messages
66
+
67
+ - Use present tense ("Add feature" not "Added feature")
68
+ - Use imperative mood ("Move cursor to..." not "Moves cursor to...")
69
+ - Limit first line to 72 characters
70
+ - Reference issues and PRs liberally
71
+
72
+ Example:
73
+ ```
74
+ Add support for custom algorithm identifiers
75
+
76
+ - Extend Algorithm enum with Custom variant
77
+ - Update binary format validation
78
+ - Add tests for custom algorithms
79
+
80
+ Fixes #123
81
+ ```
82
+
83
+ ## Project Structure
84
+
85
+ ```
86
+ pqc-binary-format/
87
+ ├── src/
88
+ │ ├── lib.rs # Main library entry
89
+ │ ├── algorithm.rs # Algorithm identifiers
90
+ │ ├── error.rs # Error types
91
+ │ ├── format.rs # Core format implementation
92
+ │ └── metadata.rs # Metadata structures
93
+ ├── examples/ # Usage examples
94
+ ├── benches/ # Performance benchmarks
95
+ ├── tests/ # Integration tests
96
+ └── docs/ # Additional documentation
97
+ ```
98
+
99
+ ## Areas Needing Help
100
+
101
+ ### High Priority
102
+ - **Python bindings** using PyO3
103
+ - **JavaScript/WebAssembly** port
104
+ - **C FFI** for cross-language compatibility
105
+ - **Fuzzing** with cargo-fuzz
106
+ - **Documentation** improvements
107
+
108
+ ### Medium Priority
109
+ - **Go bindings** using cgo
110
+ - **CLI tool** for format inspection
111
+ - **Performance optimizations**
112
+ - **Additional examples**
113
+
114
+ ### Research
115
+ - **IETF RFC draft** for standardization
116
+ - **Security audit** by third parties
117
+ - **Formal verification** of checksum algorithm
118
+
119
+ ## Getting Help
120
+
121
+ - **GitHub Discussions**: Ask questions
122
+ - **Issues**: Report bugs
123
+ - **Documentation**: Read the docs first
124
+
125
+ ## Recognition
126
+
127
+ Contributors will be:
128
+ - Listed in CONTRIBUTORS.md
129
+ - Mentioned in release notes
130
+ - Credited in documentation
131
+
132
+ ## License
133
+
134
+ By contributing, you agree that your contributions will be licensed under both the MIT and Apache 2.0 licenses.
135
+
136
+ ---
137
+
138
+ Thank you for contributing to post-quantum cryptography! 🔐