PR Sécurité 4 (Interfaces TS/Wasm) #4
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
PR : Interfaces TypeScript/WebAssembly (TS/Wasm)
Objectif
Renforcer la sécurité, la robustesse et la conformité des interfaces entre le code TypeScript et WebAssembly (Rust) en :
1. Guidelines pour la sécurité et la conformité des interfaces TS/Wasm
A. Validation stricte des entrées/sorties
undefined
, pas de champ manquant, pas de type inattendu).B. Gestion des erreurs et des exceptions
{ code, message, stack }
).C. Sérialisation/désérialisation sécurisée
D. Tests unitaires et d’intégration systématiques
E. Documentation et traçabilité
2. Modifications à apporter dans le code
A. Ajout de schémas de validation TypeScript
B. Encapsulation des appels Wasm
C. Ajout de tests unitaires et d’intégration
__tests__/
outests/
:D. CI/CD
4NK
.3. Documentation à ajouter
4. Bénéfices attendus
5. Plan d’action
Lister toutes les interfaces TS/Wasm critiques dans chaque repo du dossier 4NK.
1. ihm_client
a. Appels principaux (src/services/service.ts, src/pages/...)
createProcess / updateProcess / createPairingProcess
sdkClient.encode_json / encode_binary / decode_json
sdkClient.create_new_process / update_process / validate_state
sdkClient.sign_transaction / parse_new_tx / parse_cipher
2. sdk_client
a. Appels Wasm exposés (crates/sp_client/src/lib.rs, api.rs, user.rs, process.rs, etc.)
create_user / create_process / update_process / add_data_to_image
get_main_address / get_outputs / get_processes
3. sdk_storage
a. Appels via FFI/wasm (si exposés)
4. sdk_relay
a. Appels Wasm/TS (si relay expose une API JS/TS)
5. skeleton (si usage direct du SDK Wasm)
Sécurisation attendue pour toutes les interfaces
Créer les schémas de validation pour chaque structure échangée.
1. ihm_client
Processus (ProcessInput)
Rôle de conformité (ComplianceRoleData)
Pour chaque rôle, un schéma dédié :
Idem pour chaque rôle (
DigitalLegalRequestsRoleDataSchema
,SupportN1RoleDataSchema
, etc.).2. sdk_client
User (UserInput)
Process (ProcessInput)
Réutiliser le schéma de ihm_client ou l’adapter selon les besoins Rust/wasm.
3. sdk_storage
StoreRequest
4. sdk_relay
Message (RelayMessage)
5. skeleton
ProfileData
Sécurisation attendue pour chaque schéma
Encapsuler tous les appels Wasm dans des wrappers avec validation et gestion d’erreur.
Objectif
4NK
.1. Liste des appels Wasm à encapsuler
ihm_client / sdk_client (exemples principaux)
sdkClient.create_new_process
sdkClient.update_process
sdkClient.create_user
sdkClient.add_data_to_image
sdkClient.sign_transaction
sdkClient.parse_new_tx
sdkClient.parse_cipher
sdkClient.validate_state
sdkClient.encode_json
sdkClient.encode_binary
sdkClient.decode_json
sdkClient.get_main_address
sdkClient.get_outputs
sdkClient.get_processes
2. Encapsulation type générique
Création d’un wrapper générique
Dans un fichier utilitaire commun (ex :
src/wasm-wrapper.ts
) :3. Encapsulation de chaque appel critique
Exemple pour la création de process
Exemple pour la mise à jour de process
Exemple pour la signature de transaction
Exemple pour l’encodage/décodage
4. Utilisation dans la logique métier
sdkClient.*
par les wrappers sécurisés.5. Bénéfices
6. Plan d’action
safeWasmCall
.Écrire des tests unitaires et d’intégration pour chaque interface.
Objectif
1. Liste des interfaces TS/Wasm à tester
ihm_client / sdk_client
sdkClient.create_new_process
sdkClient.update_process
sdkClient.create_user
sdkClient.add_data_to_image
sdkClient.sign_transaction
sdkClient.parse_new_tx
sdkClient.parse_cipher
sdkClient.validate_state
sdkClient.encode_json
sdkClient.encode_binary
sdkClient.decode_json
sdkClient.get_main_address
sdkClient.get_outputs
sdkClient.get_processes
sdk_storage
store_data
retrieve_data
sdk_relay
send_message
receive_message
subscribe
2. Méthodologie de tests
A. Tests unitaires
B. Tests d’intégration
3. Intégration et implémentation des tests
A. Structure des fichiers de tests
__tests__
outests/
à la racine de chaque repo ou danssrc/
.createProcess.wasm.test.ts
,signTransaction.wasm.test.ts
).B. Exemple de test unitaire (Jest + Zod)
C. Exemple de test d’intégration
4. Systématisation des tests
5. Bénéfices
6. Plan d’action
Automatiser l’exécution des tests dans la CI/CD.
Objectif
1. Liste des tests à automatiser
sdkClient.create_new_process
,update_process
,create_user
, etc.2. Méthodologie d’intégration CI/CD
A. Ajout d’un job de test dans le pipeline CI/CD
.github/workflows/ci.yml
) ou GitLab CI (.gitlab-ci.yml
) ou autre selon le repo.B. Exemple de configuration GitHub Actions
C. Exemple de configuration GitLab CI
3. Implémentation concrète
package.json
:__tests__
outests/
).4. Systématisation et blocage du merge
5. Bénéfices
6. Plan d’action
Documenter chaque interface et chaque schéma de validation.
PR Sécurité 4to PR Sécurité 4 (Interfaces TS/Wasm)