Metadata-Version: 2.1
Name: crypto-gltf
Version: 0.1.9
Summary: 
Author: will
Author-email: will@loci.ai
Requires-Python: >=3.10
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Dist: cellular-automaton (>=1.0.8,<2.0.0)
Requires-Dist: cryptography (>=43.0.0,<44.0.0)
Requires-Dist: loguru (>=0.7.2,<0.8.0)
Requires-Dist: mypy (>=1.11.1,<2.0.0)
Requires-Dist: numpy (>=2.0.0,<3.0.0)
Requires-Dist: pillow (>=10.4.0,<11.0.0)
Requires-Dist: pydantic (>=2.7.4,<3.0.0)
Requires-Dist: pygame (>=2.6.0,<3.0.0)
Requires-Dist: pytest (>=8.3.2,<9.0.0)
Description-Content-Type: text/markdown

# GlTF-Crypto

This package implements adaptive, hierarchical encryption and decryption of 3D `.glTF` or `.glb` files
It is suppprted for Python3.10 and above.

## Quickstart

### Install:

```
pip install crypto-gltf
```

### Loading a `.gltf` or `.glb` file:

```
from crypto_gltf import Asset

filepath = 'example/path/to/an/asset.glb'
asset = Asset.load(filepath)
```

### Encrypting an asset:

```
encryption_response = asset.encrypt()
```

### Exporting an encrypted asset:

```
save_directory = 'example/save/directory'
export_path = asset.save(save_directory)
```

### Accessing encryption keys:

```
encryption_key = encryption_response.key
k1 = key.k1
k2 = key.k2
k3 = key.k3
```

### Decrypting an asset:

Here k3 can be replaced by k1 or k2.
```
encrypted_asset = Asset,load(export_path)
encrypted_asset.decrypt(
    k3=encryption_response.key.k3,
)
encrypted_asset.save(save_directory)
```

## Advanced  Usage:

### Encrypting images:
```
mesh_and_image_encryption_response = asset.encrypt(encrypt_images=True)
```

### Configuring parameters:
```
configured_encryption_response = asset.encrypt(
    meshes_cipher_params=(1, 3, 10), #(p,q,r)
    images_cipher_params=(1, 1, 6), #(p,q,r)
    encrypt_images=True,
)
```


