- Fork the repository
- Clone your fork
- Build:
make clean && make CISCO=1 FORTIGATE=1 PANOS=1 - Run tests:
make test - Create a feature branch:
git checkout -b feature/your-feature
- C11 standard
- No dynamic memory allocation in the cryptographic path
- All device output must be HMAC-signed before leaving the driver
- Trust tier classification must happen before command execution, never after
- Use fixed-size buffers with explicit bounds checking
- Python 3.10+
- The Python layer is a bridge — it does not sign, verify, or classify
- All cryptographic operations happen in C
- Every new driver needs at least: connection test, command classification test, HMAC verification test
- Parser tests must include malformed input cases
- Run
make testbefore submitting — zero warnings required
- Create
src/drivers/driver_<vendor>.candinclude/virp_driver_<vendor>.h - Implement the
virp_driver_tinterface (connect, execute, classify, disconnect) - Add command classification for GREEN/YELLOW/RED/BLACK tiers
- Add parser for structured output extraction
- Write tests in
tests/test_driver_<vendor>.c - Update the Makefile with a
<VENDOR>=1flag - Create a feature branch and submit a PR
- Ensure
make testpasses with zero warnings - Update documentation if you changed behavior
- Describe what your PR does and why
- One PR per feature — keep them focused
If you find a vulnerability in the cryptographic verification path, do not open a public issue. See SECURITY.md.
Be professional. Be constructive. The goal is making networks safer, not winning arguments.
By contributing, you agree that your contributions will be licensed under the Apache License 2.0.