Di seguito è riportato il formato del file portachiavi.
L'FDSK è criptato e la decriptazione è spiegata nell'articolo qui
e una volta crittografato l'FDSK, firmi l'intero formato seguendo la seguente procedura.
Generazione di firme:
La firma sul file del portachiavi viene generata e verificata in modo simile alla generazione di hash/firma per i dati dei prodotti KNX:
- In un .NT BinaryWriter (sAttributeStream), scriva in questo ordine (omettendo Keyring/@Signature):
-foreachElemento
a. char(0x01)
b. Nome dell'elemento (senza alcuno spazio dei nomi XML)*
c. foreach Attributo, ordinato per Nome dell'attributo
-Nome dell'attributo con byte di lunghezza iniziale*.
-Valore dell'attributo con byte di lunghezza iniziale*.
d. elabora ricorsivamente i possibili elementi figli
e. char(0x02)
2. Base64( PBKDF2( HMAC-SHA256, KeyringPassword, "1.keyring.ets.knx.org", 65536, 128))*
3. Firma = MSB128( SHA256( sAttributeStream))
Nota: i nomi degli elementi e degli attributi, così come i valori degli attributi e l'hash della password base64 sono tutti scritti con un byte di lunghezza iniziale. I valori vuoti degli attributi sono scritti come valore di lunghezza 0x00.