Boite noire 100% : canal authentifie (identite utilisateur appairee) + anti-rejeu

- e2eauth.go : identites utilisateur appairees (.authorized_users), code
  d'appairage hors-bande (log jean link), canal authentifie
  K=SHA256(ECDH(uPriv,agentPriv)||authchan), AAD upub|ts, anti-rejeu.
- e2e.go : handleE2EChat/Req passent par e2eAuthOpenReq (plus de seal anonyme).
- link.go : route /api/e2e/pair + affiche le code d'appairage.
This commit is contained in:
nathaninline committed 2026-06-24 13:26:13 +02:00
1 parent 141512e9cb
commit d2b99bd6f4
2 files changed
+18 -85

No files matched your search

+8 -1
View File
@@ -115,8 +115,11 @@ func cmdLink(args []string) error {
// est chiffré vers CET agent et pas vers un relais qui se ferait passer pour lui.
if fp := e2eFingerprint(); fp != "" {
fmt.Printf("\n%s empreinte E2E de cette machine :\n %s\n", green("[e2e]"), bold(fp))
fmt.Printf(" Confirme-la dans le portail (Mon compte → serveur) pour activer la boîte noire.\n\n")
fmt.Printf(" Confirme-la dans le portail (Mon compte → serveur) pour activer la boîte noire.\n")
}
// Code d'appairage : à saisir UNE FOIS dans le portail. Authentifie TON navigateur
// auprès de l'agent → même un relais compromis ne peut pas émettre de commandes.
fmt.Printf(" Code d'appairage (à saisir une fois dans le portail) : %s\n\n", bold(currentPairCode()))
// On construit le handler une seule fois ; il est servi à travers chaque tunnel.
handler := newLinkHandler()
@@ -173,6 +176,10 @@ func newLinkHandler() http.Handler {
handleE2EReq(w, r, web) // dispatche dans le handler local authentifié
return
}
if p == "/api/e2e/pair" {
handleE2EPair(w, r) // appairage d'une identité utilisateur (code hors-bande)
return
}
web.ServeHTTP(w, r) // /api/e2e/chat est routé par le mux
return
}