Kotlin Multiplatform implementations of uncommon or legacy cryptographic functions. All platforms are supported (although not all are tested - see Platform Support).
Security is explicitly a non-goal (see Security); implementations prioritise correctness and intelligibility.
Scytale's intended use is for integration with existing applications and formats that utilise legacy cryptographic functions and have few security needs (e.g. for interacting with a proprietary file store that uses Whirlpool as a checksum).
Scytale does not contain modern state-of-the-art cryptographic functions and should not be used in place of audited libraries maintained by experts. Consequently, security is not a primary goal; algorithms and implementations may be vulnerable to side-channel attacks, significantly less secure than modern alternatives, or cryptographically broken outright.
Ensure your use case does not require greater security guarantees than this library provides.
Artefacts coming soon™
All platforms should be supported for downstream usage - simply consume the common artefact regardless of your own targets.
Scytale is tested on:
- Kotlin/JVM
- Kotlin/JS (browser and Node.js)
- Kotlin/Wasm (browser and Node.js)
Scytale is not a general-purpose Kotlin Multiplatform cryptography library. Before contributing a new implementation, please open an issue to verify that the algorithm will be accepted - in particular, it must not be a modern one that users could reasonably assume would use a cryptographically-secure implementation (e.g. ECDHE, AES-GCM).
See the contribution guidelines for further information.
Scytale is dual-licensed under Apache 2.0 and MIT. Users may use Scytale under the terms of either license, at their preference.