Unofficial OpenTDF SDK for Python
- TDF Encryption/Decryption: Create and decrypt TDF files with policy-based access control
- Flexible Configuration: Support for various authentication methods and platform endpoints
- Comprehensive Testing: Full test suite with unit and integration tests
A legacy version (0.2.x) of this project is available for users who need the previous implementation. For more information, see LEGACY_VERSION.md or visit the legacy branch on GitHub.
Install from PyPI:
pip install otdf-python
from otdf_python.sdk_builder import SDKBuilder # Create and configure SDK using builder pattern builder = SDKBuilder() builder.set_platform_endpoint("https://platform.example.com") builder.client_secret("your-client-id", "your-client-secret") # Build the SDK instance sdk = builder.build()
from otdf_python.sdk_builder import SDKBuilder # Create SDK with additional configuration options builder = SDKBuilder() builder.set_platform_endpoint("https://platform.example.com") builder.set_issuer_endpoint("https://auth.example.com") builder.client_secret("your-client-id", "your-client-secret") # Examples, for local development # Use HTTP instead of HTTPS builder.use_insecure_plaintext_connection(True) # Or # Skip TLS verification builder.use_insecure_skip_verify(True) # Build the SDK instance sdk = builder.build()
from io import BytesIO # Create TDF configuration with attributes config = sdk.new_tdf_config(attributes=["https://example.net/attr/attr1/value/value1"]) # Encrypt data to TDF format input_data = b"Hello, World!" output_stream = BytesIO() manifest, size, _ = sdk.create_tdf(BytesIO(input_data), config, output_stream) encrypted_data = output_stream.getvalue() # Save encrypted data to file with open("encrypted.tdf", "wb") as f: f.write(encrypted_data)
# Read encrypted TDF file with open("encrypted.tdf", "rb") as f: encrypted_data = f.read() # Decrypt TDF tdf_reader = sdk.load_tdf(encrypted_data) decrypted_data = tdf_reader.payload # Save decrypted data with open("decrypted.txt", "wb") as f: f.write(decrypted_data)
src/otdf_python/
├── sdk.py # Main SDK interface
├── config.py # Configuration management
├── tdf.py # TDF format handling
├── nanotdf.py # NanoTDF format handling
├── crypto_utils.py # Cryptographic utilities
├── kas_client.py # Key Access Service client
└── ... # Additional modules
tests/
└── ... # Various tests
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Make your changes
- Run tests:
uv run pytest tests/ - Commit your changes:
git commit -am 'feat: add feature' - Push to the branch:
git push origin feature-name - Submit a pull request
For maintainers and contributors working on releases:
- See RELEASES.md for comprehensive release documentation
- Feature branch alpha releases available for testing changes before merge
- Automated releases via Release Please on the main branch
This project is licensed under the MIT License - see the LICENSE file for details.