Project

General

Profile

New key XML metadata and switch to Qt5 (develop branch)

Added by Oliver Maurhart 11 months ago

In the current develop branch (v9.9999.8) we switched from using Qt4 to Qt5 (https://www.qt.io/developers).

An even greater impact has the new key XML metadata layout. Due to the demand of developers to add arbitrary values to the key's metadata we changed the way a key handles it metadata.

From the static fixed set of known values we switched to a flexible new model: inside the keystream each key has now it's own metadata stored as a XML stream. This looks like this:

<?xml version="1.0" encoding="utf-8"?>
<key id="5">
    <general>
        <state id="8">authenticated</state>
        <crypto>
            <incoming>null</incoming>
            <outgoing>null</outgoing>
        </crypto>
        <bits>18160</bits>
        <qber>0.028429282160625444</qber>
        <disclosed>2708</disclosed>
    </general>
    <modules>
        ...
        <module id="cascade" type="error correction">
            <key>
                <incoming>
                    <state id="2">sifted</state>
                    <bits>18160</bits>
                    <qber>0</qber>
                    <disclosed>0</disclosed>
                </incoming>
                <outgoing>
                    <state id="3">corrected</state>
                    <bits>18160</bits>
                    <qber>0.022577092511013217</qber>
                    <disclosed>458</disclosed>
                </outgoing>
            </key>
            <passes>14</passes>
            <shannon-efficiency>1.0917457823300647</shannon-efficiency>
        </module>
        ...
    </modules>
</key>

The <modules> tag holds the key's history. One can examine which module the key passed alongside with each module's new specific parameters and values. Every module has now the ability to add arbitrary values at will and read what other modules added to the key metadata in the past.

Alongside this change the tools qkd-key-dump and qkd-key-compare have been empowered to examine and compare keys and key metadata.

However, this changes are currently only available at the develop branch and are not reflected in the master.


Comments