We welcome contributions to the shamir_share library! This document provides guidelines for contributing to the project.
- Fork the repository on GitHub
- Clone your fork locally
- Create a new branch for your feature or bug fix
- Make your changes
- Test your changes thoroughly
- Submit a pull request
- Rust 1.70 or later
- Cargo for building and testing
Before submitting a pull request, please ensure your code meets the following standards:
Run the following commands to ensure code quality:
# Format code
cargo fmt
# Run clippy for linting
cargo clippy -- -D warnings
# Run all tests
cargo test
# Run benchmarks (optional)
cargo bench- All new features must include comprehensive tests
- Existing tests must continue to pass
- Aim for high test coverage, especially for security-critical code
- Include both unit tests and integration tests where appropriate
- All public APIs must be documented with rustdoc comments
- Include examples in documentation where helpful
- Update the README.md if your changes affect the public API
This library handles sensitive cryptographic operations. Please ensure:
- No timing side-channels are introduced
- Constant-time operations are maintained where required
- Memory is handled securely (no sensitive data in debug output)
- Random number generation uses cryptographically secure sources
- Ensure your code follows the quality standards above
- Update documentation as needed
- Add tests for new functionality
- Ensure all tests pass
- Write a clear pull request description explaining:
- What changes you made
- Why you made them
- How to test the changes
Please be respectful and constructive in all interactions. We're committed to providing a welcoming environment for all contributors.
If you have questions about contributing, please open an issue on GitHub and we'll be happy to help!
By contributing to this project, you agree that your contributions will be licensed under the same license as the project (MIT License).