# Synta Documentation
**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)*
- [Getting Started](#getting-started)
- [Language Bindings](#language-bindings)
- [Python Bindings](#python-bindings)
- [C API](#c-api)
- [Performance](#performance)
- [Code Generation](#code-generation)
- [Advanced Topics](#advanced-topics)
- [Examples](#examples)
- [Testing](#testing)
- [API Documentation](#api-documentation)
- [Contributing](#contributing)
- [License](#license)
Welcome to the Synta documentation! This directory contains comprehensive guides for using Synta in various contexts.
## Getting Started
- **[Main README](../README.md)** - Project overview and quick start
- **[Usage Guide](usage.md)** - Detailed Rust usage examples
## Language Bindings
### Python Bindings
- **[Python Bindings Guide](PYTHON_BINDINGS.md)** - Complete Python API reference and examples
- **[Python Package README](../python/README.md)** - Quick start for Python users
### C API
- **[C API Reference](C_API.md)** - Complete C API documentation
- **[C Memory Management](C_MEMORY.md)** - Memory safety and ownership in C
- **[C Code Generation](C_CODE_GENERATION.md)** - Generating C structures from ASN.1 schemas
- **[Migration from OpenSSL](MIGRATION_OPENSSL.md)** - Guide for OpenSSL users
- **[Migration from libtasn1](MIGRATION_LIBTASN1.md)** - Guide for libtasn1 users
## Performance
- **[Performance](performance.md)** - Benchmark results, detailed per-certificate data, optimization history, and methodology
- **[Comparison Benchmarks](COMPARISON_BENCHMARK.md)** - Comparison with other ASN.1 libraries
## Code Generation
- **[ASN.1 Support](asn1-support.md)** - What ASN.1 syntax is supported; complete support matrix
- **[Rust Code Generation](rust-generation.md)** - Type mappings, naming, constraint validation, build.rs integration
- **[C Code Generation](c-generation.md)** - Type mappings, libcsynta API reference, memory contract, arena mode
- **[Tutorial](tutorial.md)** - Step-by-step guide from basics to real-world examples
- **[API Reference](api-reference.md)** - Complete CLI options, examples, and library API
- **[Limitations](limitations.md)** - Unsupported constructs and workarounds
- **[Best Practices](best-practices.md)** - Production guidelines: schema design, project organization, performance
- **[Troubleshooting](troubleshooting.md)** - Common issues and solutions
## Advanced Topics
- **[no_std Support](no_std.md)** - Using Synta in embedded/no_std environments
- **[Post-Quantum OIDs](POST_QUANTUM_OIDS.md)** - Support for ML-DSA and ML-KEM algorithms
- **[Serde Integration](usage.md#serde-integration)** - JSON and other format serialization via the `serde` feature
## Examples
Example code is available in the [examples/](../examples/) directory.
See [examples/README.md](../examples/README.md) for the full list and descriptions.
- **Rust Examples**
- `decode_integer.rs` - Integer encoding/decoding
- `encode_sequence.rs` - Building and encoding SEQUENCE structures
- `oid_usage.rs` - Working with Object Identifiers
- `parse_certificate.rs` - X.509 certificate parsing
- `asn1parse.rs` - ASN.1 tree viewer utility (like openssl asn1parse)
- `derive_usage.rs` - Using derive macros for automatic implementations
- `serde_usage.rs` - JSON serialization of all ASN.1 types (`--features serde`)
- `serde_cert.rs` - Parse a PEM certificate and serialize to JSON (`--features serde`)
- `generate_test_cert.rs` - Generate test certificate files
- **C Examples** (`synta-ffi/examples/c/`)
- `decode_integer.c` - Basic C API usage
- `encode_sequence.c` - Encoding SEQUENCE in C
- `oid_usage.c` - Working with OIDs in C
- `parse_certificate.c` - Certificate parsing in C
- `certificate_codegen_example.c` - synta-codegen workflow
- `openssl_migration_cert.c` - OpenSSL migration guide
- **Python Examples**
- `examples/python_basic.py` - Python bindings usage
## Testing
- **Rust Tests**: `cargo test`
- **C Tests**: `tests/c/`
- **Python Tests**: `tests/python/test_basic.py`
## API Documentation
- **Rust API Docs**: Run `cargo doc --open` to generate and view API documentation
- **C API**: See [C_API.md](C_API.md)
- **Python API**: See [PYTHON_BINDINGS.md](PYTHON_BINDINGS.md)
## Contributing
See the main [README](../README.md) for contribution guidelines.
## License
Synta is dual-licensed under MIT OR Apache-2.0.