A full example
Initiate client
from etsi_qkd_014_client import QKD014Client
client = QKD014Client(
"192.168.10.101", # KME hosy
"certificatesMatteo/encAlice/clientCert.pem", # Certificate of the client signed by client's CA
"certificatesMatteo/encAlice/clientKey.pem", # Private key associated to to the certificate
"certificatesMatteo/CA/rootCA.pem", # Server's root CA to verify the certificate of the server
force_insecure=True # This will force non verification of the certificate of server
)
print(client)
# QKD014Client
# KME : 192.168.10.101
# Client certificate : certificatesMatteo/encAlice/clientCert.pem
# Client key : certificatesMatteo/encAlice/clientKey.pem
# Root CA for server : certificatesMatteo/CA/rootCA.pem
# Force insecure : True
Get status
from etsi_qkd_014_client import QKD014Client
client = QKD014Client(
"192.168.10.101",
"certificatesMatteo/encAlice/clientCert.pem",
"certificatesMatteo/encAlice/clientKey.pem",
"certificatesMatteo/CA/rootCA.pem",
force_insecure=True
)
code, data = client.get_status("SAEBOB")
print(code) # 200
print(data)
# source_kme_id : KMSALICE
# target_kme_id : KMSBOB
# master_sae_id : SAEALICE
# slave_sae_id : SAEBOB
# key_size : 256
# stored_key_count : 86
# max_key_count : 100
# max_key_per_request : 1
# max_key_size : 256
# min_key_size : 128
# max_sae_id_count : 0
Key exchange
import base64
from etsi_qkd_014_client import QKD014Client
client_alice = QKD014Client(
"192.168.10.101",
"clientCert.pem",
"clientKey.pem",
"rootCA.pem",
force_insecure=True
)
client_bob = QKD014Client(
"192.168.10.106",
"clientBobCert.pem",
"clientBobKey.pem",
"rootCA.pem",
force_insecure=True
)
code, data = client_alice.get_key("SAEBOB") # By default, this request one key of 256 bits
print(code) # 200
print(data)
# Key id : 8c3c8d07-4827-47b7-a61b-db9b95f01cb9
# Key : H7prwEw/MNN8AcpMnSUyt2fIXguhofof3qLt2O9uc5U=
if code == 200:
key_id = data.keys[0].key_id
key_alice = data.keys[0].key
code, data = client_bob.get_key_with_key_IDs("SAEALICE", [key_id])
print(code) # 200
print(data)
# Key id : 8c3c8d07-4827-47b7-a61b-db9b95f01cb9
# Key : H7prwEw/MNN8AcpMnSUyt2fIXguhofof3qLt2O9uc5U=
key_bob = data.keys[0].key
print(key_alice == key_bob) # True
print(key_alice) # H7prwEw/MNN8AcpMnSUyt2fIXguhofof3qLt2O9uc5U=
print(f"".join(["{:08b}".format(x) for x in base64.b64decode(key_alice)]))
# 0001111110111010011010111100000001001100001111110011000011010011011111000000000111001010010011001001110100100101001100101011011101100111110010000101111000001011101000011010000111111010000111111101111010100010111011011101100011101111011011100111001110010101