{"revision":"0ed62d2c742f8e20","language":"it","entry":{"id":"message-verification","group":"guides","kind":"guide","title":"Verifica un messaggio firmato","summary":"Controlla il testo esatto, la chiave che lo ha firmato e lo stato di quella chiave.","sections":[{"kind":"paragraph","text":"Una persona firma il testo dalla scheda Sign a message della propria scheda. Può copiare il blocco firma in un post, un annuncio o un’email. La tua app manda l’intero blocco a POST /v1/verify."},{"kind":"code","language":"shell","code":"curl -fsS 'https://veil.rip/v1/verify' \\\n  --json @signed-message.json"},{"kind":"paragraph","text":"Il file JSON contiene il campo block con il testo incollato. Puoi aggiungere at in secondi Unix. La modalità block non si combina con key, message, signature, platform o subject."},{"kind":"heading","text":"Leggi il verdetto"},{"kind":"paragraph","text":"Usa valid per il risultato complessivo. signatureOk controlla i byte della firma. keyState dice se la chiave poteva firmare al momento scelto. Una firma può continuare a corrispondere dopo la revoca della chiave, mentre valid è false per il momento attuale."},{"kind":"paragraph","text":"Quando passi at, usa un orario di pubblicazione da una fonte di cui ti fidi. Una data scritta da chi firma non prova quando il messaggio è stato pubblicato."},{"kind":"heading","text":"Controlla anche l’account"},{"kind":"paragraph","text":"La modalità firma esplicita accetta key, message e signature. Aggiungi insieme platform e subject per chiedere se quell’identità aveva l’account mittente al momento scelto. Per un bot, usa l’ID stabile dell’account sulla piattaforma."},{"kind":"heading","text":"Tieni il messaggio nel browser"},{"kind":"paragraph","text":"La pagina /verify legge un blocco firma dal frammento dell’URL o dal testo incollato e lo controlla localmente. I dati dopo # restano nel browser. Un link /v/ manda il messaggio al server per avere l’anteprima social. Anche la chiamata all’API di verifica manda il messaggio al server."},{"kind":"heading","text":"Costruisci un link da condividere"},{"kind":"paragraph","text":"Usa il messaggio originale e signatureBytes dal firmatario. cardNumber è il numero permanente della scheda. Il link per il browser supporta entrambi gli algoritmi di firma. Usa quello con anteprima solo per Ed25519 e un messaggio di massimo 1500 byte UTF-8."},{"kind":"code","language":"javascript","code":"function base64url(bytes) {\n  return btoa(String.fromCharCode(...bytes))\n    .replaceAll(\"+\", \"-\").replaceAll(\"/\", \"_\").replace(/=+$/, \"\");\n}\nconst messageData = base64url(new TextEncoder().encode(message));\nconst signatureData = base64url(signatureBytes);\nconst browserLink = `https://veil.rip/verify#u=${cardNumber}&m=${messageData}&s=${signatureData}`;\nconst previewLink = `https://veil.rip/v/${cardNumber}/${signatureData}?m=${messageData}`;"}],"related":["verify-message","verify-page","verify-link","proofs"],"errors":[],"documentationUrl":"https://veil.rip/docs/message-verification?lang=it"}}