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_processsdkClient.update_processsdkClient.create_usersdkClient.add_data_to_imagesdkClient.sign_transactionsdkClient.parse_new_txsdkClient.parse_ciphersdkClient.validate_statesdkClient.encode_jsonsdkClient.encode_binarysdkClient.decode_jsonsdkClient.get_main_addresssdkClient.get_outputssdkClient.get_processes2. 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_processsdkClient.update_processsdkClient.create_usersdkClient.add_data_to_imagesdkClient.sign_transactionsdkClient.parse_new_txsdkClient.parse_ciphersdkClient.validate_statesdkClient.encode_jsonsdkClient.encode_binarysdkClient.decode_jsonsdkClient.get_main_addresssdkClient.get_outputssdkClient.get_processessdk_storage
store_dataretrieve_datasdk_relay
send_messagereceive_messagesubscribe2. 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)