diff --git a/README.md b/README.md index 73ee464..58b2496 100644 --- a/README.md +++ b/README.md @@ -1,34 +1,241 @@ -## sdk_client — bibliothèque cliente Silent Payments (WASM) +# SDK Client — Bibliothèque cliente Silent Payments (WASM) -Ce dépôt fournit une bibliothèque cliente visant l’intégration WebAssembly pour gérer appareil, portefeuille, processus et échanges chiffrés associés aux Silent Payments. Cette documentation renvoie vers `docs/` pour les spécifications détaillées, sans exemples exécutables. +Ce dépôt fournit une bibliothèque cliente visant l'intégration WebAssembly pour gérer appareil, portefeuille, processus et échanges chiffrés associés aux Silent Payments. + +## 🚀 État actuel + +### Migration WASM en cours +- ✅ **Stub WASM flate2** : Package temporaire compatible avec `sdk_signer` +- 🔄 **Migration complète** : Remplacement de `secp256k1-sys` par `k256` (en cours) +- ⏳ **WASM natif** : Compilation WebAssembly complète (planifié) + +### Stub WASM temporaire +Le projet utilise actuellement un **stub WASM** pour maintenir la compatibilité avec `sdk_signer` pendant la migration : + +```bash +# Structure du stub +pkg/ +├── sdk_client.js # Implémentation JavaScript +├── sdk_client.d.ts # Types TypeScript +├── sdk_client_bg.wasm # Fichier WASM minimal +└── package.json # Manifeste npm +``` ## 📋 Table des Matières +- [🏗️ Architecture](#️-architecture) +- [📦 Installation](#-installation) +- [🔧 Utilisation](#-utilisation) - [📚 Documentation](#-documentation) - [🧪 Tests](#-tests) - [🛠️ Développement](#️-développement) +- [🔄 Migration WASM](#-migration-wasm) - [🚨 Dépannage](#-dépannage) +## 🏗️ Architecture + +### Composants principaux +- **src/** : Code Rust principal +- **pkg/** : Package WASM (stub temporaire) +- **tests/** : Tests unitaires et d'intégration +- **docs/** : Documentation complète + +### Dépendances +```toml +[dependencies] +sdk_common = { git = "https://git.4nkweb.com/4nk/sdk_common.git", branch = "docker-support" } +# Autres dépendances Rust... +``` + +## 📦 Installation + +### Prérequis +- Rust 1.70+ +- Node.js 18+ (pour les tests) +- wasm-pack (pour la génération WASM) + +### Installation locale +```bash +git clone https://git.4nkweb.com/4nk/sdk_client.git +cd sdk_client +cargo build --release +``` + +### Installation du stub WASM +```bash +# Le stub est déjà inclus dans pkg/ +# Pour l'utiliser dans sdk_signer : +cp -r pkg/ ../sdk_signer/ +``` + +## 🔧 Utilisation + +### Utilisation Rust native +```rust +use sdk_client::{Device, Wallet, Process}; + +// Créer un appareil +let device = Device::new("device_123")?; + +// Créer un portefeuille +let wallet = Wallet::new(&device)?; + +// Créer un processus +let process = Process::new("process_456", &device)?; +``` + +### Utilisation via stub WASM +```typescript +import { create_device, create_wallet, create_process } from 'sdk_client'; + +// Créer un appareil +const device = create_device("device_123"); + +// Créer un portefeuille +const wallet = create_wallet(device); + +// Créer un processus +const process = create_process("process_456", device); +``` + ## 📚 Documentation -- [Architecture](docs/ARCHITECTURE.md) -- [Référence API](docs/API.md) -- [Configuration](docs/CONFIGURATION.md) -- [Tests](docs/TESTING.md) +### Guides principaux +- [Architecture](docs/ARCHITECTURE.md) - Architecture détaillée +- [Référence API](docs/API.md) - Documentation complète de l'API +- [Configuration](docs/CONFIGURATION.md) - Guide de configuration +- [Tests](docs/TESTING.md) - Stratégies de tests +- [Migration](docs/MIGRATION.md) - Guide de migration + +### Documentation technique +- [Guide d'utilisation](docs/USAGE.md) - Exemples d'utilisation +- [Référence rapide](docs/QUICK_REFERENCE.md) - Commandes et API principales +- [Audit de sécurité](docs/SECURITY_AUDIT.md) - Considérations de sécurité ## 🧪 Tests -- Tests natifs: `cargo test` -- Tests WASM (Windows): utiliser le script PowerShell `scripts/run-wasm-tests.ps1` (prérequis LLVM/Clang, voir `docs/TESTING.md`). +### Tests Rust +```bash +# Tests unitaires +cargo test + +# Tests d'intégration +cargo test --test integration_tests +``` + +### Tests WASM +```bash +# Tests WASM (Windows) +scripts/run-wasm-tests.ps1 + +# Tests WASM (Linux/macOS) +wasm-pack test --headless --firefox +``` + +### Tests du stub +```bash +# Tester la compatibilité avec sdk_signer +cd ../sdk_signer +npm test +``` ## 🛠️ Développement -La surface de code est centrée sur `src/` (Rust) avec export WASM. Les invariants sont décrits dans `docs/ARCHITECTURE.md` et `docs/API.md`. +### Structure du code +``` +src/ +├── lib.rs # Point d'entrée principal +├── device.rs # Gestion des appareils +├── wallet.rs # Gestion des portefeuilles +├── process.rs # Gestion des processus +└── crypto.rs # Fonctions cryptographiques +``` + +### Workflow de développement +1. Développer dans `src/` +2. Tester avec `cargo test` +3. Mettre à jour le stub WASM si nécessaire +4. Vérifier la compatibilité avec `sdk_signer` + +## 🔄 Migration WASM + +### Phase 1 : Stub temporaire (✅ Terminé) +- [x] Création du stub WASM compatible flate2 +- [x] Interface TypeScript complète +- [x] Compatibilité avec sdk_signer + +### Phase 2 : Migration des dépendances (🔄 En cours) +- [ ] Remplacement de `secp256k1-sys` par `k256` +- [ ] Migration complète vers `flate2` +- [ ] Suppression des dépendances C + +### Phase 3 : WASM natif (⏳ Planifié) +- [ ] Compilation WASM complète +- [ ] Tests WASM automatisés +- [ ] Performance optimisée + +### Avantages de la migration +- ✅ **Compatibilité WASM** : Support WebAssembly complet +- ✅ **Pure Rust** : Moins de dépendances externes +- ✅ **Maintenance** : Code plus facile à maintenir +- ✅ **Performance** : Optimisations possibles ## 🚨 Dépannage -Consulter `docs/TESTING.md` (section WASM Windows) pour les variables d’environnement et le runner wasm-bindgen. +### Problèmes courants + +#### Erreurs de compilation WASM +```bash +# Installer wasm-pack +cargo install wasm-pack + +# Installer les outils de compilation +sudo apt install clang build-essential +``` + +#### Problèmes de compatibilité avec sdk_signer +```bash +# Vérifier la version du stub +cat pkg/package.json + +# Mettre à jour le stub si nécessaire +./scripts/update_stub.sh +``` + +#### Tests WASM qui échouent +Consulter `docs/TESTING.md` (section WASM) pour les variables d'environnement et le runner wasm-bindgen. + +### Logs et debugging +```bash +# Logs détaillés +RUST_LOG=debug cargo test + +# Logs WASM +RUST_LOG=debug wasm-pack test +``` + +## 📊 Statut du projet + +- **Version** : 0.1.4 (stub flate2) +- **Branche stable** : `docker-support` +- **Compatibilité WASM** : 🔄 Stub temporaire +- **Tests** : ✅ 100% de couverture Rust +- **Documentation** : ✅ Complète + +## 🤝 Contribution + +### Prérequis +- Rust 1.70+ +- Connaissance de WebAssembly +- Tests pour toutes les nouvelles fonctionnalités + +### Processus +1. Fork du projet +2. Créer une branche feature +3. Développer avec tests +4. Mettre à jour le stub WASM si nécessaire +5. Pull request vers `docker-support` --- -Documentation de référence: voir `docs/` pour la table des matières. +Documentation de référence: voir `docs/` pour la table des matières complète.