dup-crypto-rs est une bibliothèque Rust permettant de gérer toutes les opérations de cryptographie utiles dans l’écosystème Duniter/Ğ1.
C’est une externalisation de la crate crypto
du dépôt Dunitrust, le but est d’externaliser tous ce qui pourrait servir a d’autres projets, je commence par la crypto, d’autres « briques » suivrons (comme la gestion du format des documents par exemple).
Fonctionnalités
- Génération de trousseaux de clés Ed25519 via scrypt
- Calcul de hash sha256
- Encodage/décodage base58
- Encodage/décodage base64
- Génération sécurisée de hasard
- Encryption/Decryption aes256
- Lecture/écritrure du format DEWIF
Documentation
La documentation de cette bibliothèque est auto-générée a partir du code source et auto-publiée ici :
Tous les morceaux de codes présent dans la documentation sont automatiquement compilés et testés dans l’intégration continue, vous avez donc la garantie qu’ils sont à jours et fonctionnels
Projets qui utilisent cette bibliothèque
- Dunitrust
- Dup-tools-wasm
Projets qui pourraient peut-être l’utilisée ?
Cette bibliothèque pourrait par exemple être utilisée par :
- Un éventuel futur client Rust
- Un éventuel client PWA (via un binding webassembly)
- Cesium ? (via un binding webassembly)*
Je peut coder des binding en Python/Java/NodeJs, mais je ne le ferai que si des développeurs sont réellement intéressés (pas envie de prendre du temps a coder un binding s’il n’est pas utilisé). Cela pourrait par exemple servir à :
- DuniterPy ? (via un binding PyO3)*
- Duniter ? (via un binding Neon)*
Ce n’est bien entendu qu’une mise a disposition, pour ceux qui seraient intéressés, les autres peuvent passer leur chemin
Avantages :
- Plus facile a compiler que des lib C/C++ (facilite le build et la livraison pour tous types d’environnement cible)
- Pas besoin de librairie dynamique -> plus de problèmes chez les utilisateurs pour qui il manquerai une lib sur leur système
- Meilleurs performances que libsodium : Tests de performances ed25519 : sodium et ring
- Plus safe (garanties du Rust empêche les failles dues a une mauvaise gestion de la mémoire, ce qui était le cas de la faille heartbleed).