Verifică descărcările
Ce este semnat și ce are checksum pe fiecare platformă — semnături minisign pe installerul Windows și AppImage-ul Linux, SHA256SUMS pe fiecare versiune — și ce nu este (Authenticode, notarizare, Android).
Fiecare versiune desktop de pe github.com/codai-ro/codai-desktop/releases poartă două tipuri de dovezi. Pagina asta spune exact ce fișiere primesc ce, ca să știi ce înseamnă de fapt o bifă verde.
| Platformă | Fișier | Checksum în SHA256SUMS | Semnătură detașată | Semnare de cod / notarizare |
|---|---|---|---|---|
| Windows | codai_<v>_x64-setup.exe | da | da — codai_<v>_x64-setup.exe.sig (minisign) | fără Authenticode încă — SmartScreen va avertiza |
| Windows | codai_<v>_x64_en-US.msi | da | nu | nu |
| Windows | codai_<v>_x64-portable.zip | da | nu | nu |
| Linux | codai_<v>_amd64.AppImage | da (când e construit) | da — .AppImage.sig (minisign, când e construit) | n/a |
| Linux | .deb, .rpm | da (când sunt construite) | nu | nesemnate GPG |
| macOS | .dmg | — | — | nepublicat; fără notarizare |
| Android | .apk | — | semnat cu keystore-ul de release (semnătură APK v2) | fără fișier de checksum separat încă |
latest.json din aceeași versiune este ce citește actualizatorul automat; platforms.windows-x86_64.signature de acolo este conținutul fișierului .exe.sig, așa că actualizatorul și o verificare manuală verifică același lucru.
Checksum-uri (fiecare fișier)
SHA256SUMS listează un SHA-256 în litere mici per artefact, în formatul <hash> <nume-fișier>.
# în folderul unde ai descărcat artefactele
$sums = Get-Content .\SHA256SUMS
Get-ChildItem codai_* | ForEach-Object {
$h = (Get-FileHash $_.FullName -Algorithm SHA256).Hash.ToLower()
$ok = $sums -match "^$h $([regex]::Escape($_.Name))$"
"{0} {1}" -f ($(if ($ok) { 'OK ' } else { 'BAD' })), $_.Name
}Un checksum dovedește că fișierul nu a fost corupt sau înlocuit după publicare. Nu dovedește cine l-a publicat — pentru asta ai nevoie de semnătura de mai jos.
Semnături (installer Windows, AppImage Linux)
Fișierele .sig sunt semnături minisign produse de tauri signer. Cheia publică corespunzătoare este compilată în aplicație și tipărită în src-tauri/tauri.conf.json → plugins.updater.pubkey. Doar un fișier semnat cu jumătatea privată a acelei chei va fi instalat de actualizator — și doar un astfel de fișier ar trebui instalat de tine.
Obții cheia publică
Este codificată base64 în tauri.conf.json. O decodezi într-o cheie publică minisign pe două linii:
$pub = 'dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IDFCRERBM0QxMDY4NzYyNjcKUldSbllvY0cwYVBkRzcrYXdNcmFyMnZmTEhTRGJPOWlmZVkzdGZsVjRJWXN1Q0dHTXp6UWJSaGcK'
[Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($pub)) | Set-Content codai-desktop.pubFișierul decodat începe cu untrusted comment: minisign public key: 1BDDA3D106876267. Compari acel id de cheie cu cel din tauri.conf.json al repo-ului — dacă diferă, te oprești.
Decodezi semnătura
.sig-ul este și el base64:
$v = '0.6.1'
[Text.Encoding]::UTF8.GetString([Convert]::FromBase64String((Get-Content "codai_${v}_x64-setup.exe.sig" -Raw))) | Set-Content "codai_${v}_x64-setup.exe.minisig"Verifici
Instalezi minisign (winget install minisign, brew install minisign, sau pachetul distribuției), apoi:
minisign -Vm "codai_${v}_x64-setup.exe" -p codai-desktop.pub -x "codai_${v}_x64-setup.exe.minisig"Signature and comment signature verified înseamnă că fișierul este cel semnat de noi. Orice altceva înseamnă că nu este — nu îl rulezi și ne scrii la [email protected].
Aceiași trei pași se aplică pentru codai_<v>_amd64.AppImage / .AppImage.sig pe versiunile care includ un build Linux.
Ce nu este semnat azi
Fii precis în privința a ce acoperă un rezultat verde.
- Authenticode Windows — installerul nu este semnat cu un certificat de semnare de cod, așa că Windows SmartScreen afișează „Windows protected your PC” prima dată. Este planificat (Azure Artifact Signing); până atunci verificarea minisign de mai sus este modul de a ști că fișierul este al nostru.
.msiși.zip-ul portabil — au checksum, nu semnătură..deb/.rpmLinux — au checksum, nu semnătură GPG; nu există repo apt/dnf.- macOS — niciun build publicat, deci nicio notarizare.
- APK Android — semnat cu keystore-ul de release, cum trebuie orice aplicație Android (certificat SHA-256
11:F1:6A:8B…; amprenta completă este în repo-ul codai-phone). Android o verifică la instalare și refuză o actualizare semnată cu altă cheie. Nu există încă unSHA256SUMSseparat pentru APK.
Versiuni și rollback
- Versiunile sunt etichetate
desktop-v<versiune>; cele trei fișiere de versiune din sursă (package.json,tauri.conf.json,Cargo.toml) sunt mereu în acord cu eticheta. - Endpoint-ul de actualizare
https://codai.ro/api/desktop/latest.jsonservește cea mai nouă versiune non-pre-release. O versiune defectă este retrasă marcând-o pre-release (sau ștergând-o): cea anterioară redevine „latest” în cinci minute. Actualizatorul nu face niciodată downgrade unei versiuni mai noi deja instalate. - Cheia privată de semnare nu părăsește niciodată mașina maintainerului și are backup offline; pierderea ei ar orfaniza fiecare client instalat.
Android
Instalezi codai pe Android, acorzi permisiunile necesare, îl asociezi cu contul tău, îl lași să folosească telefonul în locul tău, conduci desktopul de pe telefon și înțelegi facturarea și confidențialitatea.
Întrebări frecvente
Întrebări comune despre aplicațiile desktop, web și Android — siguranță, costuri, lease-uri și insigne REMOTE, permisiuni, mod offline, actualizări.