PD-106 - Ecran Settings iOS (Profil, MFA TOTP, securite et compte)¶
1. Objectif¶
Definir le contrat fonctionnel de l'ecran Settings iOS pour : - consulter le profil en lecture seule ; - gerer le MFA TOTP (etat, activation, desactivation, codes de recuperation) ; - changer le mot de passe ; - se deconnecter ; - supprimer son compte.
Le contrat privilegie securite, robustesse, conformite et observabilite des comportements.
2. Perimetre / Hors perimetre¶
Inclus¶
- Parcours Settings unique permettant d'acceder aux fonctions Profil, MFA, mot de passe, deconnexion, suppression de compte.
- Affichage du profil en lecture seule (nom, email, avatar ou initiales).
- Affichage de l'etat MFA depuis le serveur (active/desactive, methode).
- Activation MFA TOTP avec verification du code utilisateur.
- Desactivation MFA avec confirmation explicite.
- Consultation/affichage des codes de recuperation selon les regles de securite de cette spec.
- Regeneration des codes de recuperation avec invalidation des anciens.
- Changement de mot de passe (ancien, nouveau, confirmation).
- Deconnexion avec invalidation de session serveur.
- Suppression de compte avec confirmation renforcee et re-authentification.
Exclu¶
- Modification des endpoints backend existants.
- Ajout de nouvelles methodes MFA (SMS, email, WebAuthn).
- Flux de login MFA (saisie TOTP a la connexion).
- Edition du profil (nom, email, avatar).
- Parametres biometrie/auto-lock existants hors parcours PD-106.
- Android.
- Preuve exhaustive de purge RGPD backend (voir section 4, hors perimetre PD-106).
3. Definitions¶
- MFA : authentification multi-facteur.
- TOTP : mot de passe a usage unique base sur le temps.
- Etat MFA : etat courant du compte (
activeoudesactive) et methode configuree. - Operation critique : activation/desactivation MFA, regeneration des codes de recuperation, changement de mot de passe, suppression de compte.
- Re-authentification : preuve recente d'identite acceptee par la politique serveur pour autoriser une operation critique ; elle DOIT etre validee dans les 5 minutes precedant l'execution de l'operation critique, dans le meme flux de navigation, sans sortie vers un autre parcours ; la re-authentification est invalidee si l'utilisateur navigue vers un ecran hors du parcours Settings en cours (pile de navigation active interrompue ou quittee) ; cette borne temporelle est evaluee par le serveur.
- Codes de recuperation : codes de secours permettant l'acces en cas d'indisponibilite du facteur TOTP.
- Affichage unique : affichage en clair autorise uniquement pour la reponse serveur de generation/regeneration qui vient d'etre recue sur le device courant ; si l'utilisateur ferme puis rouvre l'ecran sans nouvelle generation/regeneration, aucun code en clair NE DOIT etre reaffiche.
- Confirmation renforcee : double validation explicite obligatoire dans le meme flux (validation initiale puis confirmation finale).
- Message/erreur exploitable : message affiche dans la langue active contenant au minimum soit un identifiant d'erreur stable, soit un motif textuel actionnable par l'utilisateur.
- Stockage local durable : toute surface de persistance locale surviveant a la fermeture ou au redemarrage de l'application, incluant Keychain, AsyncStorage, SQLite, UserDefaults et fichiers applicatifs/cache persistants.
- Logs applicatifs : toute emission de journal cote client ; en environnement de test, les surfaces auditables sont console, journaux systeme et logs de debug exportables ; les services tiers de crash reporting/telemetrie sont hors surface d'audit quand l'acces n'est pas garanti.
- Hors perimetre : exigence non verifiable dans le cadre de PD-106 mobile seul, devant etre prouvee par un autre artefact.
4. Invariants (non negociables)¶
| ID | Regle | Justification |
|---|---|---|
| INV-106-01 | Le parcours Settings DOIT etre accessible via un point d'entree unique lie au compte connecte. | Garantit une navigation coherente. |
| INV-106-02 | Le profil DOIT afficher au minimum nom, email, avatar ou initiales, en lecture seule. | Couvre l'objectif d'identification du compte sans edition. |
| INV-106-03 | Le compte connecte DOIT etre identifiable visuellement de maniere non ambigue. | Reduit le risque d'action sur le mauvais compte. |
| INV-106-04 | L'etat MFA affiche DOIT provenir d'une lecture serveur a l'ouverture du parcours et apres chaque mutation MFA ; en cas d'echec, l'etat DOIT etre inconnu. | Evite l'affichage stale/non fiable. |
| INV-106-05 | Chaque operation critique DOIT exiger une re-authentification reussie immediatement avant execution. | Reduit le risque d'usurpation de session. |
| INV-106-06 | Une re-authentification validee pour une operation critique NE DOIT PAS etre reutilisable implicitement pour une autre operation critique. | Limite l'escalade de privilege par reutilisation de preuve. |
| INV-106-07 | L'activation MFA TOTP DOIT etre consideree reussie uniquement apres confirmation serveur explicite. | Evite les activations partielles/silencieuses. |
| INV-106-08 | Le secret TOTP et les codes de recuperation en clair NE DOIVENT PAS etre persistes en stockage local durable ni journalises en logs applicatifs. | Protege les secrets critiques. |
| INV-106-09 | Les codes de recuperation DOIVENT etre affiches en clair uniquement apres generation/regeneration, avec avertissement de criticite. | Reduit l'exposition des codes de secours. |
| INV-106-10 | La regeneration des codes de recuperation DOIT invalider l'ensemble des codes precedents. La garantie d'invalidation atomique depend de H-106-04 ; le mobile verifie le comportement observable mais ne peut pas garantir l'atomicite serveur. | Evite la coexistence de jeux de codes valides. |
| INV-106-11 | La desactivation MFA DOIT exiger confirmation explicite et re-authentification reussie. | Evite la baisse accidentelle/non autorisee du niveau de securite. |
| INV-106-12 | Le changement de mot de passe DOIT exiger ancien mot de passe, nouveau mot de passe et confirmation identique ; tout refus serveur DOIT etre restitue avec motif exploitable. | Garantit controle d'identite et feedback actionnable. |
| INV-106-13 | La deconnexion DOIT invalider la session serveur et effacer les donnees sensibles locales de session ; en cas d'echec d'invalidation serveur, le fallback ERR-106-LOGOUT-FAILED s'applique. | Evite les sessions zombies et fuites locales. |
| INV-106-14 | La suppression de compte DOIT afficher le caractere irreversible, exiger confirmation renforcee et re-authentification reussie avant execution. | Reduit le risque d'effacement involontaire. |
| INV-106-15 | Apres suppression de compte confirmee, l'utilisateur DOIT etre deconnecte et toute tentative de reutilisation du compte DOIT echouer. | Verifie l'effectivite fonctionnelle de la suppression cote utilisateur. |
| INV-106-16 | Aucun echec critique NE DOIT etre silencieux ; un message explicite et exploitable DOIT etre presente. | Garantit diagnosabilite et UX robuste. |
| INV-106-17 | Les textes affiches a l'utilisateur DOIVENT etre localises selon la langue active de l'application. | Respecte la contrainte i18n. |
| INV-106-18 | HORS PERIMETRE PD-106 : l'effacement RGPD complet (article 17) et la politique de retention/purge serveur DOIVENT etre prouves par artefacts backend/conformite. | Non verifiable exhaustivement depuis le mobile seul. |
5. Flux nominaux¶
F-106-01 - Acces Settings et consultation profil¶
- L'utilisateur ouvre le parcours Settings.
- Le systeme charge les informations de profil et l'etat MFA depuis le serveur.
- Le systeme affiche le profil en lecture seule et identifie le compte connecte.
- Si l'etat MFA est indisponible, le systeme affiche
etat inconnu(pas de valeur stale).
F-106-02 - Activation MFA TOTP¶
- L'utilisateur demande l'activation MFA.
- Le systeme exige une re-authentification.
- Si re-authentification validee, le systeme initie l'enrolement TOTP et affiche les informations d'enrolement sensibles avec avertissement.
- L'utilisateur saisit un code TOTP de verification.
- Le systeme soumet la verification au serveur.
- En cas de succes, le systeme marque MFA
active, affiche les codes de recuperation en affichage unique, puis recharge l'etat MFA serveur.
F-106-03 - Consultation et regeneration des codes de recuperation¶
- L'utilisateur accede a la section codes de recuperation.
- Si aucun affichage unique n'est disponible dans le contexte courant, le systeme n'affiche aucun code en clair et propose la regeneration.
- La regeneration exige confirmation explicite et re-authentification.
- En cas de succes serveur, le systeme invalide les anciens codes, affiche le nouveau jeu en affichage unique avec avertissement.
F-106-04 - Desactivation MFA¶
- L'utilisateur demande la desactivation MFA.
- Le systeme affiche une confirmation explicite.
- Le systeme exige une re-authentification.
- En cas de succes serveur, le systeme passe l'etat MFA a
desactiveet recharge l'etat serveur.
F-106-05 - Changement de mot de passe¶
- L'utilisateur renseigne ancien mot de passe, nouveau mot de passe, confirmation.
- Le systeme refuse localement si confirmation differente.
- Le systeme exige une re-authentification.
- Le systeme soumet la demande au serveur.
- En cas de refus (complexite, ancien mot de passe invalide, etc.), le motif exploitable est affiche.
- En cas de succes, le systeme invalide la session courante cote serveur, efface les donnees sensibles locales de session et redirige l'utilisateur vers un etat non authentifie.
F-106-06 - Deconnexion¶
- L'utilisateur demande la deconnexion.
- Le systeme affiche une confirmation explicite.
- Le systeme appelle l'invalidation de session serveur.
- Le systeme efface les donnees sensibles locales de session.
- L'utilisateur est redirige vers un etat non authentifie.
F-106-07 - Suppression de compte¶
- L'utilisateur ouvre l'action de suppression de compte.
- Le systeme affiche un avertissement d'irreversibilite.
- Le systeme exige une confirmation renforcee.
- Le systeme exige une re-authentification.
- Le systeme soumet la suppression au serveur.
- En cas de succes, l'utilisateur est deconnecte ; le compte n'est plus reutilisable.
5bis. Diagrammes¶
Diagramme d'etats -- Etat MFA du compte¶
L'etat MFA observable cote application suit trois etats derives de la reponse serveur (INV-106-04). Toute mutation MFA declenche une relecture serveur.
stateDiagram-v2
[*] --> inconnu : Ouverture Settings\n(lecture serveur en cours)
inconnu --> active : Reponse serveur\nmfa_enabled=true
inconnu --> desactive : Reponse serveur\nmfa_enabled=false
inconnu --> inconnu : Echec lecture serveur\n[ERR-106-MFA-STATE-UNAVAILABLE]
desactive --> active : Activation TOTP confirmee\npar le serveur (INV-106-07)
active --> desactive : Desactivation confirmee\npar le serveur (INV-106-11)
active --> inconnu : Relecture serveur\napres mutation
desactive --> inconnu : Relecture serveur\napres mutation
note right of inconnu
INV-106-04 : etat inconnu si lecture echoue.
Operations MFA bloquees dans cet etat
[ERR-106-MFA-STATE-UNAVAILABLE].
end note Diagramme de sequence -- Activation MFA TOTP (F-106-02)¶
Flux multi-service impliquant re-authentification (INV-106-05), enrolement TOTP, verification du code et affichage unique des codes de recuperation (INV-106-08, INV-106-09).
sequenceDiagram
actor U as Utilisateur
participant App as App iOS
participant Srv as Backend API
U->>App: Demande activation MFA
App->>U: Exige re-authentification (INV-106-05)
U->>App: Saisie credentials
App->>Srv: POST /auth/reauth
Srv-->>App: 200 OK (token reauth)
App->>Srv: POST /mfa/totp/init (token reauth)
Srv-->>App: 200 {secret, otpauth_uri, recovery_codes_pending}
App->>U: Affiche QR code / secret TOTP\n+ avertissement (INV-106-08)
U->>App: Saisie code TOTP de verification
App->>Srv: POST /mfa/totp/verify {code}
alt Code valide
Srv-->>App: 200 {recovery_codes}
App->>U: MFA active + codes de recuperation\nen affichage unique (INV-106-09)
Note over App: Secret TOTP et codes NON persistes\nen stockage local durable (INV-106-08)
App->>Srv: GET /mfa/status (relecture INV-106-04)
Srv-->>App: 200 {enabled: true, method: TOTP}
else Code invalide
Srv-->>App: 401 ERR-106-MFA-CODE-INVALID
App->>U: Message erreur explicite (INV-106-16)
end Diagramme de sequence -- Suppression de compte (F-106-07)¶
Flux a confirmation renforcee (INV-106-14) avec re-authentification non reutilisable (INV-106-06).
sequenceDiagram
actor U as Utilisateur
participant App as App iOS
participant Srv as Backend API
U->>App: Ouvre action suppression
App->>U: Avertissement irreversibilite (INV-106-14)
U->>App: Confirmation renforcee etape 1
App->>U: Confirmation renforcee etape 2
U->>App: Validation finale
App->>U: Exige re-authentification (INV-106-05)
U->>App: Saisie credentials
App->>Srv: POST /auth/reauth
Srv-->>App: 200 OK (token reauth)
App->>Srv: DELETE /account (token reauth)
alt Succes
Srv-->>App: 200 OK
App->>App: Efface donnees sensibles locales (INV-106-13)
App->>U: Redirige etat non authentifie (INV-106-15)
else Echec serveur
Srv-->>App: 5xx ERR-106-DELETE-FAILED
App->>U: Message erreur explicite (INV-106-16)\nCompte reste actif
end 6. Cas d'erreur¶
| Code erreur | Condition | Comportement attendu |
|---|---|---|
| ERR-106-SESSION-EXPIRED | Session invalide/expiree pendant une action | Forcer etat non authentifie, afficher message explicite, aucune action critique executee. |
| ERR-106-NETWORK | Indisponibilite reseau/time-out | Message explicite, aucun changement d'etat local suppose comme reussi. |
| ERR-106-MFA-STATE-UNAVAILABLE | Lecture etat MFA impossible | Afficher etat inconnu, bloquer l'activation MFA, la desactivation MFA et la consultation/regeneration des codes de recuperation. |
| ERR-106-MFA-ENROLL-FAILED | Echec initialisation enrolement TOTP | Message explicite, aucun secret conserve localement, MFA reste desactive. |
| ERR-106-MFA-CODE-INVALID | Code TOTP de verification invalide | Message explicite, permettre nouvelle tentative selon politique serveur. |
| ERR-106-MFA-DISABLE-DENIED | Refus desactivation (reauth absente/invalide) | Message explicite, MFA reste active. |
| ERR-106-RECOVERY-NOT-AVAILABLE | Demande de consultation hors affichage unique | Aucun code en clair affiche, message expliquant la regeneration necessaire. |
| ERR-106-RECOVERY-REGEN-FAILED | Echec regeneration codes | Message explicite, anciens codes conservent leur validite tant que regeneration non confirmee serveur. |
| ERR-106-PWD-CONFIRM-MISMATCH | Nouveau mot de passe et confirmation differents | Refus immediat, aucun appel critique execute. |
| ERR-106-PWD-POLICY | Refus serveur (complexite insuffisante, ancien mot de passe invalide, etc.) | Message explicite exploitable, mot de passe inchange. |
| ERR-106-LOGOUT-FAILED | Echec invalidation session serveur | Message explicite ; le systeme efface les donnees sensibles locales de session et force l'etat non authentifie. Ce comportement constitue le fallback de degradation gracieuse du cas nominal INV-106-13. Risque residuel : la session serveur peut rester active ; ce risque est mitigue par H-106-06 (le backend invalide effectivement la session lors du logout). |
| ERR-106-DELETE-CONFIRMATION | Confirmation renforcee invalide | Suppression non executee, message explicite. |
| ERR-106-DELETE-REAUTH | Re-authentification suppression echouee | Suppression non executee, message explicite. |
| ERR-106-DELETE-FAILED | Echec serveur suppression de compte | Compte non supprime, message explicite, aucun etat de succes affiche. |
| ERR-106-RATE-LIMIT | Trop de tentatives (reauth/TOTP) | Message explicite incluant contrainte temporelle si fournie par le serveur ; le seuil et la fenetre de rate-limit sont definis par la politique serveur et ne sont pas contractualises cote mobile. |
7. Criteres d'acceptation (testables)¶
| ID | Critere | Observable |
|---|---|---|
| CA-106-01 | Le parcours Settings expose un point d'entree unique pour Profil, MFA, mot de passe, deconnexion, suppression. | Verification fonctionnelle de navigation. |
| CA-106-02 | Le profil affiche nom, email, avatar ou initiales en lecture seule. | Inspection UI + tentative d'edition impossible. |
| CA-106-03 | Le compte connecte est identifiable sans ambiguite. | Presence d'un identifiant lisible (ex. email). |
| CA-106-04 | L'etat MFA est relu au chargement et apres chaque mutation MFA ; en echec, etat inconnu est affiche. | Traces d'appels + observation UI sans valeur stale. |
| CA-106-05 | Chaque operation critique est bloquee sans re-authentification reussie immediate. | Tentative operation critique sans reauth -> refus explicite. |
| CA-106-06 | L'activation MFA n'est consideree reussie qu'apres confirmation serveur. | Simulation succes/echec verification TOTP. |
| CA-106-07 | Un echec d'activation MFA affiche une erreur exploitable (pas d'echec silencieux). | Observation du message d'erreur et etat MFA inchange. |
| CA-106-08 | Les codes de recuperation sont affiches uniquement apres generation/regeneration, avec avertissement. | Test parcours consultation hors contexte -> aucun code en clair. |
| CA-106-09 | La regeneration invalide les anciens codes. | Ancien code refuse, nouveau code accepte, apres regeneration. |
| CA-106-10 | La desactivation MFA exige confirmation explicite + re-authentification. | Tentatives partielles refusees tant que les deux conditions ne sont pas satisfaites. |
| CA-106-11 | Le changement de mot de passe refuse localement la confirmation incoherente. | Saisie mismatch -> refus sans execution serveur critique. |
| CA-106-12 | Les refus serveur sur mot de passe (complexite/ancien invalide) sont restitues clairement. | Message exploitable visible, mot de passe non modifie. |
| CA-106-13 | La deconnexion invalide la session serveur. | Reutilisation d'un jeton/session precedente refusee cote serveur. |
| CA-106-14 | La deconnexion supprime les donnees sensibles locales de session. | Verification stockage local apres logout. |
| CA-106-15 | La suppression de compte exige avertissement d'irreversibilite, confirmation renforcee et re-authentification. | Tentatives incompletes refusees ; parcours complet requis. |
| CA-106-16 | Apres suppression confirmee, le compte n'est plus utilisable et l'utilisateur est deconnecte. | Tentative de connexion ulterieure echoue pour ce compte. |
| CA-106-17 | Le secret TOTP et les codes de recuperation ne figurent ni en stockage durable local ni en logs applicatifs. | Audit instrumentation locale post-flux. |
| CA-106-18 | Les messages utilisateur du parcours PD-106 sont localises selon la langue active. | Changement de langue -> textes PD-106 traduits. |
| CA-106-19 | HORS PERIMETRE PD-106 : la purge RGPD complete est verifiee via artefacts backend/conformite. | Presence d'une preuve externe (audit, dossier de conformite). |
8. Scenarios de test (Given / When / Then)¶
Scenario 1 - Consultation initiale Settings¶
GIVEN - utilisateur authentifie ; - backend profil et etat MFA disponibles.
WHEN - l'utilisateur ouvre Settings.
THEN - le profil est visible en lecture seule ; - le compte est clairement identifie ; - l'etat MFA reflete la reponse serveur courante.
Scenario 2 - Activation MFA TOTP nominale¶
GIVEN - utilisateur authentifie ; - MFA desactive ; - re-authentification valide.
WHEN - l'utilisateur active MFA puis soumet un code TOTP valide.
THEN - MFA devient active ; - les codes de recuperation sont affiches une seule fois avec avertissement ; - l'etat MFA est recharge depuis le serveur.
Scenario 3 - Activation MFA avec code invalide¶
GIVEN - utilisateur dans le flux d'activation MFA ; - re-authentification valide.
WHEN - l'utilisateur soumet un code TOTP invalide.
THEN - MFA reste desactive ; - un message d'erreur explicite est affiche ; - aucun etat de succes n'est affiche.
Scenario 4 - Operation critique sans re-authentification¶
GIVEN - utilisateur authentifie ; - operation critique choisie (ex. desactivation MFA).
WHEN - l'utilisateur tente d'executer l'operation sans re-authentification valide.
THEN - l'operation est refusee ; - l'etat metier reste inchange ; - un message explicite est affiche.
Scenario 5 - Consultation codes hors affichage unique¶
GIVEN - utilisateur authentifie ; - aucun evenement recent de generation/regeneration de codes.
WHEN - l'utilisateur ouvre la section codes de recuperation.
THEN - aucun code en clair n'est affiche ; - le systeme indique que la regeneration est necessaire.
Scenario 6 - Regeneration codes de recuperation¶
GIVEN - utilisateur authentifie ; - re-authentification validee ; - confirmation explicite validee.
WHEN - l'utilisateur regenere les codes.
THEN - un nouveau jeu de codes est affiche en affichage unique ; - les anciens codes deviennent invalides.
Scenario 7 - Changement mot de passe refuse (politique serveur)¶
GIVEN - utilisateur authentifie ; - ancien mot de passe saisi ; - nouveau mot de passe ne respectant pas la politique serveur.
WHEN - l'utilisateur soumet la demande.
THEN - la modification est refusee ; - un message exploitable indique la raison ; - le mot de passe reste inchange.
Scenario 8 - Deconnexion nominale¶
GIVEN - utilisateur authentifie avec session active.
WHEN - l'utilisateur confirme la deconnexion.
THEN - la session serveur est invalidee ; - les donnees sensibles locales de session sont effacees ; - l'application revient en etat non authentifie.
Scenario 9 - Suppression de compte nominale¶
GIVEN - utilisateur authentifie ; - confirmation renforcee valide ; - re-authentification valide.
WHEN - l'utilisateur confirme la suppression de compte.
THEN - le compte est supprime cote serveur ; - l'utilisateur est deconnecte ; - une tentative ulterieure d'utilisation du compte echoue.
Scenario 10 - Suppression de compte annulee (confirmation invalide)¶
GIVEN - utilisateur sur le flux suppression.
WHEN - la confirmation renforcee est incorrecte ou incomplete.
THEN - la suppression n'est pas executee ; - un message explicite est affiche ; - le compte reste actif.
9. Hypotheses explicites¶
| ID | Hypothese | Impact si faux |
|---|---|---|
| H-106-01 | Le backend expose des endpoints operationnels pour: etat MFA, activation TOTP (init + verify), desactivation MFA, regeneration codes, changement mot de passe, logout, suppression compte. | Blocage partiel ou total du perimetre PD-106. |
| H-106-02 | Le backend fournit une reponse exploitable pour l'etat MFA (au moins active/desactive + methode). | Impossible d'afficher un etat fiable cote app. |
| H-106-03 | Le backend applique et expose une mecanique de re-authentification utilisable avant operations critiques. | Impossibilite de respecter INV-106-05/06/11/14. |
| H-106-04 | Le backend supporte la regeneration des codes de recuperation avec invalidation atomique des anciens. | Invariant de securite sur les codes non garanti. |
| H-106-05 | Le backend retourne des erreurs de changement mot de passe suffisamment qualifiees (ancien invalide, politique). | Messages non exploitables, UX degradee, criteria CA-106-12 non atteignable. |
| H-106-06 | Le backend invalide effectivement la session lors du logout. | CA-106-13 non atteignable, risque session zombie. |
| H-106-07 | Le backend applique une suppression de compte definitive du point de vue authentification. | CA-106-16 non atteignable. |
| H-106-08 | Les champs profil minimaux (nom, email, avatar ou initiales) sont disponibles via l'API. | Profil incomplet ; necessite arbitrage produit. |
| H-106-09 | Les obligations RGPD/eIDAS detaillees de retention/purge sont documentees dans un artefact externe de conformite. | Non conformite potentielle non auditable depuis PD-106. |
10. Points a clarifier¶
- Contrat exact des endpoints backend (requete/reponse, codes HTTP, erreurs) pour MFA, mot de passe, logout, suppression compte.
- Format exact de la donnee d'enrolement TOTP renvoyee (URI
otpauth://complete, secret brut, autres metadonnees). - Politique de re-authentification par operation critique (facteurs autorises).
- RESOLU - la consultation des codes hors phase de generation/regeneration est interdite (voir F-106-03 etape 2).
- Arbitrage UX global : ecran unique vs sous-ecrans, et articulation avec
ProfileScreenetSecuritySettingsScreen. - Regles serveur de complexite mot de passe a rendre visibles a l'utilisateur.
- Politique de retention/purge post-suppression (delais, anonymisation, journaux), requise pour preuve RGPD article 17.
References¶
- Epic : PD-195 - Application mobile iOS zero-knowledge
- JIRA : PD-106
- Repos concernes : ProbatioVault-app
- Documents associes : PD-106-besoin.md