Skip to di tin dɛn we de insay
Bak na Nymchat

Di tin dɛn we pɔsin fɔ no bɔt Ɔnda di hud

Fɔ chɛk di bildin

Open source de ɛp nɔmɔ if di kɔd we yu de rɔn na di kɔd we bin de we dɛn dɔn pablish. Nymchat na bil deterministically so yu kin chɛk dat yusɛf, frɔm insay di ap ɔ frɔm wan tɛminal.

Bil dɛn we dɛn kin riprodyuz

Fɔ bil di ap de mek a build-manifest.json we gɛt di sɔs kɔmit, a SHA-256 hash fɔ ɛvri HTML, JavaSkript ɛn CSS ɛtɛt we dɛn de sav, ɛn wan singl bundleHash ova da ol ɛtɛt sɛt de.

Di autput dipen ɔl pan di sɔs kɔntinyu — ivin di rikodɔ bild tɛm na di commit in taimstamp pas di moment we di bild ron — so enibodi we de bil bak di sem commit get byte-identical fayl dem en di sem bundleHash.

Dɔn wan GitHub Akshɔn de bil bak ɛni kɔmit indipɛndɛnt wan ɛn sayn bil-provenans attesteshɔn fɔ di hash ɛn di manifest, so sayn rɛkɔd de we tay a bundleHash to wan kɔmit na di ripɔsitɔri, we sɔntin ɔda pas di diploymɛnt fɔ di wok.

Wetin di About dayalɔg de chɛk

Bɔt insay di hεda de rכn di chεk layv, insay yu bכwכz.

Di Nymchat About dayalɔg, we de sho di vɛshɔn, bil intɛgriti ɛn warrant kanari stetɔs.
Di About dayalɔg: vɛshɔn, bil intɛgriti, warrant kanari ɛn wan dairekt layn to di divɛlɔpa.

I de ri-fetch ɛni asɛt we di pej rili de rɔn, hash am wit di Wɛb Kripto API, ɛn kɔmpia agens di tin we de sho klia wan. Dɔn — ɛn dis na di pat we impɔtant — am rikompyuyt di bundleHash frɔm di hash dɛn i jɔs kɔlkul, nɔto frɔm ɛnitin we di manifest klem, ɛn luk dat ɔp na di ripɔsitɔri in sayn atɛsteshɔn dɛn tru di GitHub API.

Na dat de stɔp wan diploymɛnt fɔ vouch fɔ insɛf: fɔ sav modifyed fayl dɛn togɛda wit wan maching manifest stil de fel, bikɔs di rikɔmpyut hash nɔ gɛt ɛni atɛsteshɔn.

PozishɔnMin
&chɛk; Verified ofishal ap (n/n) we dɛn dɔn chɛk.Ɛvri ɛset mach, di rikɔmpyut bɔndɛl hash na di ripɔsitɔri atɛst am, . ɛn di pej de sav frɔm di ɔfishal domɛyn.
⚠ Verified build · nɔto di ɔfishal apDi kɔd na tru ɛn atɛst, bɔt dis na miro na ɔda domɛyn. Miro nɔ go ebul fɔ pul dis wɔnin if i nɔ ebul fɔ chɛk.
✗ Mismatch we nɔ gɛt wanwɔdWan asset nɔ de hash to wetin di manifest se.
✗ Nɔ ɔfishal bilDi rikɔmpyut bɔndɛl hash nɔ gɛt ɛni atɛsteshɔn frɔm di ripɔsitɔri — wan sɛlf-mɛd manifɔst.
⚠ Una nɔ go ebul fɔ rich usay i kɔmɔtDi GitHub API nɔ bin ebul fɔ rich, so dɛn nɔ bin ebul fɔ chɛk di atɛsteshɔn ɛni we.

Fɔ chɛk am yusɛf

Ribild di kɔmit di Bɔt dayalɔg nem dɛn ɛn kɔmpia:

git clone https://github.com/Spl0itable/NYM
cd NYM
git checkout <commit shown in the About dialog>
npm ci
npm run build   # prints "Build hash: <bundleHash>"

Di hash we dɛn print fɔ mach ɔl tu di wan we de na di Bɔt dayalɔg ɛn di wan we de na da kɔmit de bild-provenans rɔn sɔmari. Yu kin chɛk di sayn bak dairekt wit di GitHub CLI:

gh attestation verify dist/build-manifest.json --repo Spl0itable/NYM

Di Andrɔyd ɛn iOS ap dɛn

Di chɛk we de ɔp na wɛb-ap chɛk, ɛn di rizin fayn fɔ tɔk klia wan: na nativ ap nɔ kin ebul fɔ du di sem tin to insɛf. Wetin de rɔn na yu fon na kɔmpilayt mashin kɔd, nɔto di sɔs na di ripɔsitɔri, ɛn natin nɔ de we di ap kin kɔmpyutayt na di divays we gɛt fɔ du wit wan to di ɔda wan dɛn.

Andrɔyd kin du di nɛks bɛst tin. Di wan dɛn we dɛn dɔn instɔl .apk na fayl we di ap kin rid ɛn hash, ɛn di hash fɔ ɛvri rilis we dɛn dɔn pablish dɔn ɔlrɛdi de na pɔblik: pɔblish to di Zapstore sayn wan Nostr ivent we de kɛr di APK in SHA-256 ɛn in sayn sɛtifiket in SHA-256. So di... Andrɔyd Bɔt dayalɔg de hash di APK we i de rɔn frɔm, de briŋ di wan dɛn we dɛn dɔn sayn ivin, kip di wan dɛn nɔmɔ we di divɛlɔpa in ki sayn, ɛn kɔmpia. I de sho di tu tin dɛn hashes bak, so yu kin ripit di chɛk ɔf di divays: dawnlod di APK we dɛn dɔn pablish, rɔn sha256sum pan am, ɛn luk di sem tin we apin yusɛf.

Wan ap we dɛn dɔn instɔl frɔm Google Play nɔ go ebul fɔ chɛk dis we, an dat nɔ de mean say enitin nɔ rait. Google de sign ɛri upload agɛn wit in ɔn kɛ an de mek separat APK fɔ ɛri dɛs, so wet de kam na yu fɔn nɔ de de fɛl we di dɛvelopɛ mek, an in hash nɔ match enitin we de fɔ pɔblɪʃ. Di ap de rɛkɔɡnaɪz se na Play de instɔl am, an in de se dat rader na e de tɛl yu se ɛni fɔl (failure) de. Fɔ tɛst di bɪld ɛrif, instɔl di APK we de pɔblɪʃ dɪrɛktli.

iOS nɔ kin ebul fɔ chɛk atɔl. Apple de ɛnkript ɛn ri-sayn ɛni dawlod wan wan, so wan hash we dɛn kɔmpyutayt na yu Ayfon na in yon fɔ yu Ayfon ɛn i nɔ de mach natin we dɛn kin pablish ɛnisay. Di About dayalɔg tɔk dis klia wan pas fɔ sho sɔntin we de mek pɔsin fil fayn stetus we nɔ min natin. If yu want wan Nymchat we yu kin verify pan Apple hadwae, yuz di wɛb ap, we de chɛk ɛvri fayl we i de rɔn.

Wetin nɔbɔdi pan dɛn tin ya nɔ pruv

Wan chɛk we wan ap de rɔn pan insɛf nɔ go ebul fɔ pruv se di ap ɔnɛs — ɛnibɔdi we chenj am kin pul di chɛk bak. Wetin i pruv na di ɔdinari kes: dat di kɔpi yu instɔl na di kɔpi we dɛn bin dɔn pablish. Dat fayn fɔ gɛt bikɔs di valyu dɛn kɔmpia na pɔblik, so ɔda pɔsin pas yu kin chɛk dɛn, ɛn nɔ gri.

Di warrant kanari

Warrant kanari na stetmɛnt, we dɛn pablish pan wan fiks schedule, we di divɛlɔpa gɛt nɔto gɛt sikrit gɔvmɛnt ɔda we dɛn nɔ alaw dɛn fɔ tɔk bɔt — a Nashɔnal Sikyuriti Lɛta, we na FISA ɔda. Dɛn kin fos di pɔsin we de mek di tin fɔ lɛ i nɔ tɔk natin bɔt dis kayn ɔda, bɔt dɛn nɔ go ebul fɔ fos am fɔ lay, so di kanari we de go stayl ɔ we de lɔs na so insɛf na di signal.

I de liv insay canary.json na di rut fɔ di ripɔsitɔri ɛn dɛn kin tek am dairekt wan frɔm GitHub, so in istri na ɔditabl indipɛndɛnt frɔm ɛnitin we di sayt we dɛn dɔn diploy se. Di About dayalɔg de kɔlɔ-kɔd am:

KɔlɔMin
Grin — ɔl kliaSayn, kɔrɛnt, ɛn di sayn de mach di divɛlɔpa in ki. Dɛn nɔ dɔn gɛt ɛni sikrit ɔda.
Yala — ovadu, ɔ nɔto ɔl kliaI nɔ bin rifresh bay in deti we dɛn tɔk bɔt, ɔ in allClear flag na lay lay tin. Dɛn nɔ go ebul fɔ pul ɔda lɔ we dɛn mek we dɛn nɔ tɔk natin.
Rɛd — invalid signature, ɔ i dɔn goDi sayn nɔ mach di divɛlɔpa in ki, ɔ dɛn dɔn pul di fayl ɔl. Trit dis lɛk siriɔs wɔnin.

Di freshnɛs ankɔ

Di kanari we dɛn sayn de ɛmbas di laytst Bitcoin blɔk ayt ɛn hash di tɛm we dɛn sayn am. Dat hash nɔ bin fɔ dɔn no bifo di blɔk bin de, we pruv se di kanari bin de sayn we dɛn dɔn sayn afta wan patikyula pɔynt insay tɛm pas fɔ prɛ-sayn insay bɔku mɔnt bifo. Di About dayalɔg de link di ankɔ to wan blɔk ɛksplɔrɔ so yu kin chɛk am.