Publicerad: 8 september 2022

Teknisk beskrivning av resultatfiler

Den här informationen vänder sig till den som vill använda Valmyndighetens resultatfiler för att göra egna sammanställningar. Det krävs tekniskt kunnande för att ta till sig informationen.

Valmyndigheten kan inte ge någon djupare teknisk vägledning, men har du frågor om innehållet i filerna är du såklart välkommen att vända dig till oss.

Det riktiga valresultatet kommer att byggas upp efter att vallokalerna har stängt den 11 september klockan 20.00. Innan dess kommer Valmyndigheten att göra publika simuleringar med start måndag 22 augusti.

Resultatfilerna för både simuleringarna och det riktiga valresultatet kommer att finnas under https://resultat.val.se/resultatfiler/ . I avsnittet ”Nedladdning” nedan finns en instruktion och ett exempel på hur filerna kan och bör laddas ner.

Både simuleringarna och det riktiga valresultatet kommer även att presenteras i vår valpresentation: https://resultat.val.se

Följ händelser i resultatrapporteringen

Vi publicerar löpande händelser som rör resultatrapporteringen, både den preliminära och den slutliga. Du kan följa dessa här på webbplatsen. Du kan också prenumerera på uppdateringarna via RSS.

Händelser i resultatrapporteringen

Om resultatfilerna

Valresultatet kommer att distribueras i sammanlagt 622 olika zip-filer (2 räkningstillfällen x 311 valområden) och uppdateras löpande. Varje zip-fil innehåller två json-filer med två olika typer av innehåll.

Räkningstillfällen

  • Preliminär – innehåller valresultat som räknas på valnatten och under uppsamlingsräkningen (med start på onsdagen). Endast rapportpartier ingår i de preliminära resultaten och personröster ingår inte. De preliminära filerna börjar fyllas med data under valkvällen och kan fyllas på in på måndagen. Därefter är det en paus tills de börja fyllas på igen med start på onsdagen efter valet, när kommunen räknar de sena förtidsrösterna under uppsamlingsräkningen.
  • Slutlig – innehåller valresultat slutligt räknat. Samtliga partier kan potentiellt ingå i dessa filer, dessutom redovisas personröster. Så länge den slutliga sammanräkningen pågår är även denna mängd att se som preliminär. De slutliga filerna kommer att börja fyllas på med start på måndagen efter valet, tills allt är klart. Det betyder att de slutliga och de preliminära filerna kommer att uppdateras parallellt.

Innehållstyper

  • Röstfördelning – innehåller röster per valdistrikt och alla metadata om rapporteringen på valdistriktsnivå. Slutliga filer kommer även att innehålla personröster.
  • Mandatfördelning – innehåller röster aggregerade på de nivåer som behövs för att genomföra mandatfördelning, samt mandatfördelning mellan partier om en klar majoritet av valdistrikten har rapporterat sina röster. Slutlig fil kommer även att innehålla namn på valda och ersättare, samt de data som behövs för att utse dessa.

Namnsättning

Filerna kommer att vara namngivna på följande sätt:

Val_[yyyymmdd]_[preliminar|slutlig]_[0-9]+_[RD|KF|RF].zip

Den numeriska delen är valområdets kod. En komplett lista över valområdenas koder finns till exempel i den här filen:

Kandidaturer inför val 2022, rådatafil i csv-format Länk till annan webbplats.

Storlek

Varje valområde kommer att levereras komprimerat i en zip-fil och innehåller de två olika innehållstyperna i json-format.

Storleken på filerna kommer variera beroende på storlek på valområdet och beroende på räkningsomgång. En fil med ett litet valområde som räknats preliminärt kan vara 2 KB, medan riksdagsvalet slutligt räknat kan bli så stor som 3 MB komprimerat och kanske upp emot 15 gånger så stor okomprimerat.

Nedladdning

För att underlätta nedladdningen och för att uppnå ett effektivt utnyttjande av resurser kommer Valmyndigheten att tillhandahålla en indexfil. Filen ger dig information om vilka resultatfiler som finns att ladda ner samt vilken relativ sökväg som respektive fil har.

Varje relativ sökväg har också en checksumma knuten till sig. Spara undan en kopia av indexfilen vid varje nedladdning för att vid efterföljande nedladdning först hämta indexfilen och med hjälp av den avgöra vilka filer som har uppdaterats sedan förra nedladdningen.

Detta möjliggör effektiv nedladdning och minskat utnyttjande av bandbredd och resurser vilket i sin tur ger en högre leveranssäkerhet och en bättre resultatrapportering för alla inblandade.

Exempel på hur du kan ladda ner filerna

Här nedan följer ett exempel på hur du kan ladda ner filerna. Det finns andra sätt, men det här sättet följer Valmyndighetens rekommendationer.

Indexfilen ”index.md5” innehåller i normalfallet 622 rader, en rad per valområde (311st) och räkningstillfälle (preliminär/slutlig). Tanka hem den först.

# GET https://resultat.val.se/resultatfiler/index.md5

$ cat ./resultatfiler/index.md5

ea00fd822b3a4109753e0a5334fdd5d9 *./p/kf/Val_20220911_preliminar_2584_KF.zip

721fbd8bea159b87dc4857d737e34f14 *./p/rd/Val_20220911_preliminar_00_RD.zip

4a4480fdf74ad86c1283be721b62e49f *./p/rf/Val_20220911_preliminar_01_RF.zip

7e569741347101a7d8f860ac074a39b5 *./s/kf/Val_20220911_slutlig_2584_KF.zip

7167df1b70dc7a015e8d9621f8150e76 *./s/rd/Val_20220911_slutlig_00_RD.zip

91360737c479099dc5560862f9b4c860 *./s/rf/Val_20220911_slutlig_01_RF.zip

 

Genom att jämföra index-filer går det sedan att identifiera och genomföra nedladdning av de filer som har ändrats, till exempel så här:

$ diff index.md5 tmp/index.md5 | grep "^>" | cut -d* -f2

./p/rd/Val_20220911_preliminar_00_RD.zip

./p/rf/Val_20220911_preliminar_01_RF.zip

./s/kf/Val_20220911_slutlig_2584_KF.zip

Simuleringar tre veckor innan valet

Valmyndigheten kommer att göra publika simuleringar med start tre veckor före valdagen. De är öppna för alla.

Simuleringarna kommer att köras måndag, onsdag och torsdag under tre veckor innan valet enligt följande schema:

  • Måndagar, kl. 13.00–16.30: preliminärt valnattsresultat (uppsamlingsdistrikt uppdateras inte)
  • Onsdagar, kl. 13.00–16.30: uppdaterat preliminärt valresultat (uppsamlingsräkning, endast uppsamlingsdistrikt uppdateras)
  • Torsdagar, kl. 09.00–17.00: slutligt valresultat (alla partier, inklusive personröster)

Filer som skickas ut under simuleringarna kommer att ha ett attribut ”test” satt till true om det är simulering. När filerna sedan uppdateras under valet kommer detta attribut inte att finnas i filerna.

Även Valmyndighetens valresultatpresentation kommer att ingå i simuleringarna och visa upp testdata.

Förklaring till innehållet i filerna

De flesta attributen bör vara ganska självförklarande, här nedan är dock några som kan behöva extra förklaring (den här listan kan komma att kompletteras):

  • antalUppdateringar – antal gånger som filen skrivits över.
  • deltaMandatfordelning :
    • ja – partiet har klarat spärren och deltar i beräkning av mandat (det betyder inte att partiet får mandat, men de deltar i beräkningarna)
    • nej – partiet har inte klarat spärren och deltar inte i beräkning av mandat
  • kvalificeradeForPersonvalLista – de kandidater som klarat spärren för personval, det betyder dock inte att de har blivit valda.
  • lankTillProtokoll – om protokoll finns publicerat visas en länk till det här.
  • meddelandetext – om det finns särskild information kopplad till valdistriktet/valområdet kan det visas här, i de flesta fall är detta attribut dock tomt.
  • rakningstillfalle : [preliminär/slutlig]
  • rapporteringstid : [ÅÅÅÅ-MM-DDTtt:mm:ss] – datum och klockslag som valresultat tagits emot och registrerats in hos Valmyndigheten.
  • rosterEjPaverkaMandat – innehåller de röster som inte påverkar mandatfördelningen (röster på partier som ej anmält deltagande, blanka röster och övriga ogiltiga röster).
  • rosterPaverkaMandat – innehåller de röster som påverkar mandatfördelningen
  • test
    • true – filen innehåller testdata (om filen inte innehåller testdata visas inte attributet)
  • valdeltagande – antal röster i förhållande till antalet röstberättigade.
  • valdeltagandeVallokal – antal röster som räknats i vallokalen i förhållande till antalet röstberättigade i valdistriktet (notera dock att sena förtidsröster räknas vid uppsamlingsräkningen och redovisas i uppsamlingsdistrikt, dessa röster påverkar inte detta värde).
  • valdistriktstyp
    • ”valdistrikt” – ett fysiskt valdistrikt som har en vallokal kopplad till sig.
    • ”uppsamlingsdistrikt” – ett valdistrikt som motsvarar en kommunvalkrets eller en kommun om kommunen inte är indelad i valkretsar. Uppsamlingsdistrikten rapporteras med start på onsdagen efter valet och innehåller sent inkomna förtidsröster och brevröster.
  • valtyp
    • ”RD” – val till riksdagen
    • ”RF ”– val till regionfullmäktige
    • ”KF” – val till kommunfullmäktige

Instruktioner: validering av valresultatsfiler

Genom att följa dessa instruktioner kan du säkerställa valresultatfilernas autenticitet – och att filerna inte har modifierats av någon utomstående person eller grupp.

Valresultatfilerna ska ha en motsvarande signaturfil

Varje valresultatsfil i en zip-mapp ska ha en motsvarande signaturfil med identiska namn förutom att ändelsen slutar på "_sign.sha256" istället för ".json". Till exempel en fil med namnet "Val_20220912_slutlig_mandatfordelning_00_RD.json" ska ha en motsvarande signaturfil som heter "Val_20220912_slutlig_mandatfordelning_00_RD_sign.sha256".

Dessa signaturfiler kan, i kombination med en publik nyckel, användas för att validera äktheten med hjälp av till exempel OpenSSL. Det är ett verktyg med öppen källkod som bland annat används för allmän kryptografi och säker kommunikation.

Skapa publik nyckel och skriv kommando

Den publika nyckeln tas fram genom att först ladda ner ett certifikat från Valmyndigheten.

Ladda ner certifikat Länk till annan webbplats.

Certifikatet behövs för att generera nyckeln och sedan skriva följande kommando i din terminal. (notera att OpenSSL måste vara installerat på din dator):

“openssl x509 -pubkey -noout -in val-sign-crt.pem > publik_nyckel.pem”

Därefter kan valresultatsfilernas autenticitet valideras genom att skriva följande kommando:

"openssl dgst -sha256 -verify <publiknyckel> -signature <signaturfil> <resultatsfil>"

På följande sätt kan det se ut med infogade exempelfiler:

"openssl dgst -sha256 -verify publik_nyckel.pem -signature Val_20220912_slutlig_mandatfordelning_00_RD_sign.sha256 Val_20220912_slutlig_mandatfordelning_00_RD.json"

OpenSSL verifierar om filen är autentisk eller inte

Filen är autentisk om OpenSSL svarar med "Verified OK". Om OpenSSL svarar med "Verified Failure", har antingen något verifikationssteg utförts ofullständigt eller har filerna modifierats från någon utomstående part.

Bekräfta certifikatets autencitet

Certifikatet är utfärdat av ExpiTrust till Valmyndigheten och detta går att bekräfta genom att ladda ner ExpiTrust EID CA v4 certifikatet från https://eid.expisoft.se/nya-ca/expitrust-eid-ca-v4/ och skriva följande kommandon i din terminal:

“openssl x509 -inform der -in ExpiTrust-EID-CA-v4.cer -out ExpiTrust-EID-CA-v4.pem”

“openssl verify -CAfile ExpiTrust-EID-CA-v4.pem val-sign-crt.pem”

Om OpenSSL svarar med ”val-sign-crt.pem: OK” är allt som det ska och certifikatets härkomst och autenticitet har verifierats.