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.
- pqc_binary_format-3.0.0/.gitignore +41 -0
- pqc_binary_format-3.0.0/CHANGELOG.md +303 -0
- pqc_binary_format-3.0.0/CONTRIBUTING.md +138 -0
- pqc_binary_format-3.0.0/Cargo.lock +924 -0
- pqc_binary_format-3.0.0/Cargo.toml +75 -0
- pqc_binary_format-3.0.0/LICENSE-APACHE +202 -0
- pqc_binary_format-3.0.0/LICENSE-MIT +21 -0
- pqc_binary_format-3.0.0/PKG-INFO +745 -0
- pqc_binary_format-3.0.0/PUBLISHING.md +78 -0
- pqc_binary_format-3.0.0/README.md +716 -0
- pqc_binary_format-3.0.0/TEST_RESULTS_v1.0.4.md +356 -0
- pqc_binary_format-3.0.0/TEST_VERIFICATION.md +95 -0
- pqc_binary_format-3.0.0/benches/format_benchmarks.rs +78 -0
- pqc_binary_format-3.0.0/bindings/c-cpp/Makefile +40 -0
- pqc_binary_format-3.0.0/bindings/c-cpp/README.md +361 -0
- pqc_binary_format-3.0.0/bindings/c-cpp/example.cpp +191 -0
- pqc_binary_format-3.0.0/bindings/go/LICENSE +21 -0
- pqc_binary_format-3.0.0/bindings/go/README.md +349 -0
- pqc_binary_format-3.0.0/bindings/go/examples/example.go +125 -0
- pqc_binary_format-3.0.0/bindings/go/format.go +432 -0
- pqc_binary_format-3.0.0/bindings/go/format_test.go +315 -0
- pqc_binary_format-3.0.0/bindings/go/go.mod +8 -0
- pqc_binary_format-3.0.0/bindings/javascript/README.md +237 -0
- pqc_binary_format-3.0.0/bindings/javascript/example.js +131 -0
- pqc_binary_format-3.0.0/bindings/javascript/package.json +42 -0
- pqc_binary_format-3.0.0/bindings/python/README.md +155 -0
- pqc_binary_format-3.0.0/bindings/python/example.py +117 -0
- pqc_binary_format-3.0.0/bindings/python/setup.py +45 -0
- pqc_binary_format-3.0.0/cbindgen.toml +24 -0
- pqc_binary_format-3.0.0/deny.toml +36 -0
- pqc_binary_format-3.0.0/docs/algorithms.md +1357 -0
- pqc_binary_format-3.0.0/examples/README.md +222 -0
- pqc_binary_format-3.0.0/examples/algorithm_comparison.rs +48 -0
- pqc_binary_format-3.0.0/examples/basic_usage.rs +47 -0
- pqc_binary_format-3.0.0/examples/c/basic_usage.c +151 -0
- pqc_binary_format-3.0.0/examples/cpp/basic_usage.cpp +154 -0
- pqc_binary_format-3.0.0/examples/go/basic_usage.go +107 -0
- pqc_binary_format-3.0.0/examples/go/go.mod +7 -0
- pqc_binary_format-3.0.0/examples/javascript/basic_usage.js +121 -0
- pqc_binary_format-3.0.0/examples/python/algorithm_comparison.py +75 -0
- pqc_binary_format-3.0.0/examples/python/basic_usage.py +106 -0
- pqc_binary_format-3.0.0/examples/with_compression.rs +64 -0
- pqc_binary_format-3.0.0/include/pqc_binary_format.h +445 -0
- pqc_binary_format-3.0.0/pyproject.toml +39 -0
- pqc_binary_format-3.0.0/src/algorithm.rs +410 -0
- pqc_binary_format-3.0.0/src/error.rs +46 -0
- pqc_binary_format-3.0.0/src/ffi.rs +405 -0
- pqc_binary_format-3.0.0/src/format.rs +602 -0
- pqc_binary_format-3.0.0/src/lib.rs +145 -0
- pqc_binary_format-3.0.0/src/metadata.rs +363 -0
- pqc_binary_format-3.0.0/src/python.rs +397 -0
- pqc_binary_format-3.0.0/src/wasm.rs +473 -0
- 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! 🔐
|