pqc-binary-format 1.0.12

Standardized binary format for post-quantum cryptography encrypted data interchange
Documentation
# Contributing to PQC Binary Format

Thank you for your interest in contributing! This document provides guidelines for contributing to the project.

## Code of Conduct

Be respectful and professional. We're all here to advance post-quantum cryptography.

## How to Contribute

### Reporting Bugs

1. Check if the bug has already been reported in [Issues]https://github.com/PQCrypta/pqcrypta-community/issues
2. If not, create a new issue with:
   - Clear title and description
   - Steps to reproduce
   - Expected vs actual behavior
   - Code samples if applicable
   - Rust version and OS

### Suggesting Features

1. Open an issue with the "enhancement" label
2. Describe the feature and its use case
3. Explain why it would be valuable to users

### Pull Requests

1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Make your changes
4. Add tests for new functionality
5. Ensure all tests pass (`cargo test`)
6. Run clippy (`cargo clippy`)
7. Format code (`cargo fmt`)
8. Commit with clear messages
9. Push to your fork
10. Open a Pull Request

### Code Standards

- Follow Rust API guidelines
- Write documentation for public APIs
- Add examples for new features
- Maintain test coverage above 80%
- Keep functions focused and small
- Use meaningful variable names

### Testing

```bash
# Run all tests
cargo test

# Run with output
cargo test -- --nocapture

# Run benchmarks
cargo bench

# Check documentation
cargo doc --open
```

### Commit Messages

- Use present tense ("Add feature" not "Added feature")
- Use imperative mood ("Move cursor to..." not "Moves cursor to...")
- Limit first line to 72 characters
- Reference issues and PRs liberally

Example:
```
Add support for custom algorithm identifiers

- Extend Algorithm enum with Custom variant
- Update binary format validation
- Add tests for custom algorithms

Fixes #123
```

## Project Structure

```
pqc-binary-format/
├── src/
│   ├── lib.rs          # Main library entry
│   ├── algorithm.rs    # Algorithm identifiers
│   ├── error.rs        # Error types
│   ├── format.rs       # Core format implementation
│   └── metadata.rs     # Metadata structures
├── examples/           # Usage examples
├── benches/            # Performance benchmarks
├── tests/              # Integration tests
└── docs/               # Additional documentation
```

## Areas Needing Help

### High Priority
- **Python bindings** using PyO3
- **JavaScript/WebAssembly** port
- **C FFI** for cross-language compatibility
- **Fuzzing** with cargo-fuzz
- **Documentation** improvements

### Medium Priority
- **Go bindings** using cgo
- **CLI tool** for format inspection
- **Performance optimizations**
- **Additional examples**

### Research
- **IETF RFC draft** for standardization
- **Security audit** by third parties
- **Formal verification** of checksum algorithm

## Getting Help

- **GitHub Discussions**: Ask questions
- **Issues**: Report bugs
- **Documentation**: Read the docs first

## Recognition

Contributors will be:
- Listed in CONTRIBUTORS.md
- Mentioned in release notes
- Credited in documentation

## License

By contributing, you agree that your contributions will be licensed under both the MIT and Apache 2.0 licenses.

---

Thank you for contributing to post-quantum cryptography! 🔐