synta 0.1.3

ASN.1 parser, decoder, and encoder library with DER/BER support and C FFI
Documentation
# Synta Documentation

<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
**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

<!-- END doctoc generated TOC please keep comment here to allow auto update -->

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
- **[X.509 Path Validation]../synta-x509-verification/README.md** - RFC 5280 certificate chain verification; crypto-agnostic, configurable policy, name constraints

## 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.