Il ministero ho anche rilasciato la versione per ios con i sorgenti. Sarebbe bello poterlo integrare nelle proprie app la funzioncina di decodifica.io farei la versione iOs .... Santi Licheri permettendo
Sorgenti, sorgenti, sorgentiIl ministero ho anche rilasciato la versione per ios con i sorgenti. Sarebbe bello poterlo integrare nelle proprie app la funzioncina di decodifica.
Si ma intanto hanno distribuito i sorgenti ufficiali nel repository del Ministero della salute.
Magari lo avranno fatto per completare la collezione di @Xfood. Ma non sembra molto sensato
Quindi se prendiamo quella europea (non quella italiana) e la modifichiamo potremmo farlo... ci dichiariamo uno stato a se con una nostra AppHanno fatto poca fatica: è esattamente quella europea con il cambiato nome, icona e link per scaricare le chiavi pubbliche e le businessrule e dicono di aver rimosso alcune info visualizzate per assecondare il Garante.
E' opensource in modo che il Garante della Privacy abbia potuto verificare e dare il benestare.
Gli europei l'hanno "fatta" in Kotlin e quindi anche per iOS
Anche il server di chiavi pubbliche e businessrule è opensource e lo ha fatto l'Europa e ogni Stato l'ha solo dovuto installare. Il server serve per distribuire (una volta al giorno) alla app (che quindi funzionerà poi offline) le chiavi pubbliche aggiornate e le regole per validare (in locale) i dati decodificati. Le regole applicano quanto scritto nel Allegato B al DPCM 17/06/2021
View attachment 117079
Sembra invece che siano stati più bravi gli Svizzeri perché la loro app "Covid Certificate Check" funziona già da Android 6
![]()
COVID Certificate Check - App su Google Play
Verificare i certificati COVID con un dispositivo mobileplay.google.com
Sorgenti, sorgenti, sorgenti
    If qrcodeString.Length<4 Then Return ""
    If qrcodeString.SubString2(0,4) <> "HC1:" Then Return ""
    Dim data As String = qrcodeString.SubString(4)
    If data = "" Then
        xui.MsgboxAsync("Errore nei dati letti da QrCode", "B4X")
        Return
    End If
    
    Dim base45decoded() As Byte = base45decode(data)
    If base45decoded(0)<>0x78 Then
        xui.MsgboxAsync("Errore nei dati da decomprimere dopo base45decode", "B4X")
        Return
    End If
    
    Dim cs As CompressedStreams
    Dim decompressed() As Byte = cs.DecompressBytes(base45decoded, "zlib")
	Private Sub base45decode(encodedString As String) As Byte()
    'Dim alphabet() As String = Array As String("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":")
    Dim mAlphabet As Map = CreateMap("0": 0, "1": 1, "2": 2, "3": 3, "4": 4, "5": 5, "6": 6, "7": 7, "8": 8, "9": 9, "A": 10, "B": 11, "C": 12, "D": 13, "E": 14, "F": 15, "G": 16, "H": 17, "I": 18, "J": 19, "K": 20, "L": 21, "M": 22, "N": 23, "O": 24, "P": 25, "Q": 26, "R": 27, "S": 28, "T": 29, "U": 30, "V": 31, "W": 32, "X": 33, "Y": 34, "Z": 35, " ": 36, "$": 37, "%": 38, "*": 39, "+": 40, "-": 41, ".": 42, "/": 43, ":": 44)
    If encodedString.Length = 0 Then Return
    
    If (encodedString.Length Mod 3) = 1 Then Return  ' ERRORE
    
    Dim i As Int, l As Long
    Dim chunk3 As String, chunk2 As String, m As Int
    
    Dim bb As B4XBytesBuilder
    bb.Initialize
    
    For i = 0 To encodedString.Length-1 Step 3
        l = 0
        If i+3 > encodedString.Length Then
            chunk2 = encodedString.SubString2(i,i+2)
            m = mAlphabet.GetDefault(chunk2.SubString2(1,2),-1)
            If m = -1 Then Return
            l = l + m * 45
            m = mAlphabet.GetDefault(chunk2.SubString2(0,1),-1)
            If m = -1 Then Return
            l = l + m
        Else
            chunk3 = encodedString.SubString2(i,i+3)
            m = mAlphabet.GetDefault(chunk3.SubString2(2,3),-1)
            If m = -1 Then Return
            l = m * 2025
            m = mAlphabet.GetDefault(chunk3.SubString2(1,2),-1)
            If m = -1 Then Return
            l = l + m * 45
            m = mAlphabet.GetDefault(chunk3.SubString2(0,1),-1)
            If m = -1 Then Return
            l = l + m
        End If
            
        If l >= 256 Then
            bb.Append(Array As Byte(Floor( l / 256).As(Byte)))
            bb.Append(Array As Byte((l Mod 256).As(Byte)))
        Else
            bb.Append(Array As Byte(l.As(Byte)))
        End If
    Next
            
    Return bb.ToArray
End Sub
	Sbagli, sono 5.2565255 per l'esattezza
quasi quasi gli faccio sviluppare il mio, quello ideato nel 1492 e mai realizzato! Pure per 25€, toh! ?loro con 20€ te lo danno già pronto...
Mi pare che hanno annunciato di realizzare un server game.quasi quasi gli faccio sviluppare il mio, quello ideato nel 1492 e mai realizzato! Pure per 25€, toh! ?
Lo voglio personalizzatissimo! Facciamo 27€, allora. E 30 centesimi; mi voglio rovinare ?Mi pare che hanno annunciato di realizzare un server game.
Quello e' gia stato realizzato, e venduto con codice sorgente esculivo ad un cliente importanteMi pare che hanno annunciato di realizzare un server game.
Abbonati e ricevi ogni progetto che sfornano