From fe3dce0ef01cab3b79cb7e16eb0f2cc1a1af68af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Pr=C3=A9vost?= Date: Wed, 7 Feb 2024 11:55:51 +0100 Subject: [PATCH] Add support for key activation on remote KME zone (TODO test and doc) --- Cargo.toml | 4 +- certs/zone2/CA-zone2.crt | 30 +++++ certs/zone2/CA-zone2.csr | 26 +++++ certs/zone2/CA-zone2.key | 52 +++++++++ certs/zone2/CA-zone2.srl | 1 + certs/zone2/client.cnf | 8 ++ certs/zone2/generate-client-cert.sh | 9 ++ certs/zone2/generate-root-ca.sh | 7 ++ certs/zone2/generate_kme2_server_cert.sh | 4 + certs/zone2/kme2.crt | 32 ++++++ certs/zone2/kme2.csr | 27 +++++ certs/zone2/kme2.key | 52 +++++++++ certs/zone2/kme2.v3.ext | 8 ++ certs/zone2/root-ca.cnf | 4 + certs/zone2/sae3.crt | 32 ++++++ certs/zone2/sae3.csr | 26 +++++ certs/zone2/sae3.key | 52 +++++++++ certs/zone2/sae3.pem | 114 +++++++++++++++++++ certs/zone2/sae3.pfx | Bin 0 -> 7027 bytes config_kme1.json | 9 +- config_kme2.json | 64 +++++++++++ raw_keys/kme-2-2/211202_1159_CD6ADBF2.cor | Bin 0 -> 204800 bytes src/config/mod.rs | 4 +- src/main.rs | 12 +- src/qkd_manager/config_extractor.rs | 14 +++ src/qkd_manager/http_request_obj.rs | 13 ++- src/qkd_manager/key_handler.rs | 131 +++++++++++++++++++--- src/qkd_manager/mod.rs | 45 ++++++++ src/qkd_manager/router.rs | 38 +++++-- src/routes/inter_kmes_routes/mod.rs | 51 +++++++++ src/routes/mod.rs | 1 + 31 files changed, 834 insertions(+), 36 deletions(-) create mode 100644 certs/zone2/CA-zone2.crt create mode 100644 certs/zone2/CA-zone2.csr create mode 100644 certs/zone2/CA-zone2.key create mode 100644 certs/zone2/CA-zone2.srl create mode 100644 certs/zone2/client.cnf create mode 100755 certs/zone2/generate-client-cert.sh create mode 100755 certs/zone2/generate-root-ca.sh create mode 100755 certs/zone2/generate_kme2_server_cert.sh create mode 100644 certs/zone2/kme2.crt create mode 100644 certs/zone2/kme2.csr create mode 100644 certs/zone2/kme2.key create mode 100644 certs/zone2/kme2.v3.ext create mode 100644 certs/zone2/root-ca.cnf create mode 100644 certs/zone2/sae3.crt create mode 100644 certs/zone2/sae3.csr create mode 100644 certs/zone2/sae3.key create mode 100644 certs/zone2/sae3.pem create mode 100644 certs/zone2/sae3.pfx create mode 100644 config_kme2.json create mode 100755 raw_keys/kme-2-2/211202_1159_CD6ADBF2.cor create mode 100644 src/routes/inter_kmes_routes/mod.rs diff --git a/Cargo.toml b/Cargo.toml index a5b9460..ccaf00b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,10 +29,10 @@ rustls-pemfile = "2.0.0" log = "0.4.20" simple_logger = "4.3.3" notify = "6.1.1" -clap = { version = "4.4.18", features = ["derive"] } +reqwest = { version = "0.11.24" , features = ["native-tls", "blocking", "json"] } [dev-dependencies] assert_cmd = "2.0.12" -reqwest = {version = "0.11.23", features = ["native-tls"]} +reqwest = {version = "0.11.24", features = ["native-tls"]} serial_test = "2.0.0" const_format = "0.2.32" \ No newline at end of file diff --git a/certs/zone2/CA-zone2.crt b/certs/zone2/CA-zone2.crt new file mode 100644 index 0000000..de9e44b --- /dev/null +++ b/certs/zone2/CA-zone2.crt @@ -0,0 +1,30 @@ +-----BEGIN CERTIFICATE----- +MIIFGTCCAwGgAwIBAgIUKhp/O8QyH/mEdqwvDk4CGu6RrnowDQYJKoZIhvcNAQEL +BQAwIzEhMB8GA1UEAwwYUm9vdCBDQSBmb3IgS01FIGluIHpvbmUyMB4XDTI0MDIw +NzA5NTcwNVoXDTM0MDIwNDA5NTcwNVowIzEhMB8GA1UEAwwYUm9vdCBDQSBmb3Ig +S01FIGluIHpvbmUyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0kE/ +jcYF4GC6kE9cG+1y2J8q4oiPfuNxTCdLceXPJqzFkNB9HJgdumfAhfUEseC8q+iB +HohVT/y6RMoX2ZnsrdqMv8mC9r14OQiL2P2tdeQhitePlwcQINLnlEPnf2rPlKAQ +jXZYV6YpIVsBWwsRmmQAPv5tpGHuxeV/NzrkMX0X2d5JNGS2WzkuHApD5CS79m1d +rHHEMx1qzObdz8QoIyv0UgeYDyWtONCY/d1Rs0YgWg75reDxQ41e6oa+FwthOQ2x +2chE5f2NvKRGy5KZLlS42oh0RhaB0jmN+5sycRYge11T61wgGedhjM5dbDgGZVkh +EkHTnNEYph3AiYz27pA7KY4lZwpKYktoFZ5nTpD2hpqDVMk1BJ6rncExZQSkdkT7 ++U84oxja0X+joSp8zR7+lyST5xXq22kPp1g4e36itBE92w32PcXz3NujHSZ6oRPO +Bb/4bvvbFvP8ctgb70NW0Sv9LY8KCpw/fFfh8cSRCOSVn9yckjKMIMAGf5Ljax4u +CHhpJQevGUejtzhc/B5Nrw5YA4w16TbX1Ca2+LOnshYsvizOnYLbssAFPP1s8NZI +yeubRtMFgDYwNm5pPDWEINkRYpwTpc3cXo83Sx/vSHpxzOYFWqdpqPzdXZcgJiP0 +rS0o+TM/lkLKpLWaTNdmBKS+W9hU5W+MQ6gyCSsCAwEAAaNFMEMwEgYDVR0TAQH/ +BAgwBgEB/wIBATAOBgNVHQ8BAf8EBAMCAUYwHQYDVR0OBBYEFKXWS0lEiUtH9cGS +c8F7BswxSfujMA0GCSqGSIb3DQEBCwUAA4ICAQDJ88RClc+gC7Jip73Wg8HAq/fq +yOBDFPW/5gVMgGrUdR7p+0TXH/L2T6zToDCWZ/PgLk3dLd+0WVu88nC3tc+DzWXE +g+8rnE9QjIlCabDN7TaZGD8U+wxmI+MY+0iwy4BPhHl6B3QY1kYbAqm4kp4ALr41 +FdIjwl0K4zZ+ldQZerxrzGcDOPFtiRSnRSx0ADK8/ghBysly4vVZvHxIS8xhqgRR +Emj5jk1hZrgVPWvoCbU9v7dj2syNT7vWkbvRobSzewkbL4Ott3oIn8Vs4FTR+D8B +FT86x1+6rMBVDdDtLTYBC8mqxLmwiOWDe7M72a8Tq+grXjCcIkjPNsJLHEJoY2kw +1urvCRarH2dbJnvsiKK3Hof6/Mt8una5xZn2FyegM0EyHowyKCRrGhJrjSMWfdaj +DYitv2fTEorWhiNt8s6vRQ7RTq0p2P0nTFjwvz+GXq1uQWx/EMZe8knQgKMNaNqD +HyLbUP0lsVGuZ56sx0SH2KWjTg4b7s6eu23r5SYtapHqkdw3Uliae4dBInZptenf +YAbEDdItcZ/PBdwOoVv6HO7jgPlGsoEOafrF7j56oUiKvuIkbpCspOwyUU8MVUqy +gZgOYWjXTW4WZZmyw0Ieh9JvWCyKpYIKUUeEnILGn7YV0fbaopz9OqQ5waZibo7l +1EYvq7zJyBDsV9Z/jw== +-----END CERTIFICATE----- diff --git a/certs/zone2/CA-zone2.csr b/certs/zone2/CA-zone2.csr new file mode 100644 index 0000000..549decb --- /dev/null +++ b/certs/zone2/CA-zone2.csr @@ -0,0 +1,26 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIEaDCCAlACAQAwIzEhMB8GA1UEAwwYUm9vdCBDQSBmb3IgS01FIGluIHpvbmUy +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0kE/jcYF4GC6kE9cG+1y +2J8q4oiPfuNxTCdLceXPJqzFkNB9HJgdumfAhfUEseC8q+iBHohVT/y6RMoX2Zns +rdqMv8mC9r14OQiL2P2tdeQhitePlwcQINLnlEPnf2rPlKAQjXZYV6YpIVsBWwsR +mmQAPv5tpGHuxeV/NzrkMX0X2d5JNGS2WzkuHApD5CS79m1drHHEMx1qzObdz8Qo +Iyv0UgeYDyWtONCY/d1Rs0YgWg75reDxQ41e6oa+FwthOQ2x2chE5f2NvKRGy5KZ +LlS42oh0RhaB0jmN+5sycRYge11T61wgGedhjM5dbDgGZVkhEkHTnNEYph3AiYz2 +7pA7KY4lZwpKYktoFZ5nTpD2hpqDVMk1BJ6rncExZQSkdkT7+U84oxja0X+joSp8 +zR7+lyST5xXq22kPp1g4e36itBE92w32PcXz3NujHSZ6oRPOBb/4bvvbFvP8ctgb +70NW0Sv9LY8KCpw/fFfh8cSRCOSVn9yckjKMIMAGf5Ljax4uCHhpJQevGUejtzhc +/B5Nrw5YA4w16TbX1Ca2+LOnshYsvizOnYLbssAFPP1s8NZIyeubRtMFgDYwNm5p +PDWEINkRYpwTpc3cXo83Sx/vSHpxzOYFWqdpqPzdXZcgJiP0rS0o+TM/lkLKpLWa +TNdmBKS+W9hU5W+MQ6gyCSsCAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4ICAQCm+uwQ +iWLF4llWEEKycNwCzaDodEE1SSht8bTGosSKMFgRjLIQEw2amHMfUwYiQ7c7vzPn +oUE8ZA2Dt0zsW9Y8pNQNiHz6uMuGnmAGy9F/aOM+MZ5K6p6UM/9nly2uiwHD3CG0 +v4823m64h7J/cDtDcovcsFjqRNQSTGuUFNAUx+e1d9IuF5/FKUC3I0XOCAiu/7z9 +bJX85oL9gSEEu0qnKa5T0CGvbvym+jXY/tmOJXvRjqon+pPFZwpsdWnKHl4QwJWK +Q0/y/1EzCYRLM5rNffRDodNfmjtFZdjCIc1f22lSBtw92YiH2OPJ05Tyw0Axd86b +mmmavhvyWFxGyhBMQTezAxbOlT9CO9oShrAM8D+Dva6FzB4PxQzYTtA9x5/Nm5iy +W+N/o3Iy/qju2ahfuyE+MpANvX0rv8yAfEwcZchxSzH2qTEXaaqXpCImJtSm1Ch3 +WrKNYxw05UxYfeDme6eKgYxzsklEGFqE45hLa95LTs6+QAULd7SCAn4xlFV5YQEB +eYYsy2dLEMvv4/MEiAgsn+6yW1bq09sj7mPMaZuYzaTZjaRjA1tI4CmjS8gxj9gv +OjtF2JvcdD9UQc4PKQibmnHJf89XtPBtS3d91WrUYteZZ91jaexe/mqQv9BGQVZU +PKnqm6a3A1pBJFFEBVOc+Ji9JvFIhsFB67PUqg== +-----END CERTIFICATE REQUEST----- diff --git a/certs/zone2/CA-zone2.key b/certs/zone2/CA-zone2.key new file mode 100644 index 0000000..8c5e0fd --- /dev/null +++ b/certs/zone2/CA-zone2.key @@ -0,0 +1,52 @@ +-----BEGIN PRIVATE KEY----- +MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQDSQT+NxgXgYLqQ +T1wb7XLYnyriiI9+43FMJ0tx5c8mrMWQ0H0cmB26Z8CF9QSx4Lyr6IEeiFVP/LpE +yhfZmeyt2oy/yYL2vXg5CIvY/a115CGK14+XBxAg0ueUQ+d/as+UoBCNdlhXpikh +WwFbCxGaZAA+/m2kYe7F5X83OuQxfRfZ3kk0ZLZbOS4cCkPkJLv2bV2sccQzHWrM +5t3PxCgjK/RSB5gPJa040Jj93VGzRiBaDvmt4PFDjV7qhr4XC2E5DbHZyETl/Y28 +pEbLkpkuVLjaiHRGFoHSOY37mzJxFiB7XVPrXCAZ52GMzl1sOAZlWSESQdOc0Rim +HcCJjPbukDspjiVnCkpiS2gVnmdOkPaGmoNUyTUEnqudwTFlBKR2RPv5TzijGNrR +f6OhKnzNHv6XJJPnFerbaQ+nWDh7fqK0ET3bDfY9xfPc26MdJnqhE84Fv/hu+9sW +8/xy2BvvQ1bRK/0tjwoKnD98V+HxxJEI5JWf3JySMowgwAZ/kuNrHi4IeGklB68Z +R6O3OFz8Hk2vDlgDjDXpNtfUJrb4s6eyFiy+LM6dgtuywAU8/Wzw1kjJ65tG0wWA +NjA2bmk8NYQg2RFinBOlzdxejzdLH+9IenHM5gVap2mo/N1dlyAmI/StLSj5Mz+W +QsqktZpM12YEpL5b2FTlb4xDqDIJKwIDAQABAoICAGc3iuihlw7wzYW8v94h8mhv +sxDks3U6WMtm2v2+MLSuyopuH41jC+0PtA7PGw/r4ROPn5uKmD8dNaBBifXUP8GV +cdVRKs7Qcu2kyWqsFnSymtjbO+2LlRpYD0HVGBeQKvmunpGj0Hiu5LAwSfkU9P5T +K1/BbbfuL9bM9Gf7rDyzSXs2Sb/D1VXxOzaev3eHpRKz2/GlJAln3p9akvfFN2MU +1+tROQ/ukhw7I3A1Lz+QJJ+xjFcU/7wG8dq2bSlI9+CXXYEpdNFnaSZ7ixmzDSoW +g20c4d/qeq7mfFJRfTDRCP8m8OSxJD0zPstuH6TZ2CH24GpjEGyCpdQe9P9RyYKu +UzL5MwHl/pNLfEpzAml2iP5v3jgsIpkHdmpmnSkV7IRvoqeO84OrB9mXmswQSrGH +CKwOE35ZP3w7BVwegYthtlAK8fMndKQMBUmjGlcKg2zr7ib1pPrgdTJVS8VFgGNB +AarZA17Iwi1nhw1ktNShN70xDM88dX2mPw/BQTs2qA58Lp0rL3Tuwn7gYKsTlBrY +AbuMEWuyQR+RxE2H91osTuoHcFHn+jsrSjLe48DY97kpkbIa7jXWOfHQG340N+bA +Ndv4L7AGmKUWMaXFDaiJ+i72tux/8y8bb6DKUuoHfPzGYHHuYx/FUVfbaXir0rt5 +acRZ3sl4YUzT3TXMa2VhAoIBAQDq0QuG0BBWQNUoX9TEHu2FPWl6s3bY9Z3u+/LI +vXYKCcoRNEPGeoxfHSLMC62IgSpxDPbU5j10cLqurpFUqLkKuP/TWVYyoTjT4ScL +mDod8qqY8SeZqOPxyGzrH4RosXYFRm7uYgwAVJ6BcdhlmbyWfdizINveOj5s8Do1 +ftNXbH1bfdQple1rYJ7ualzIbMS+wP0ujN1JqGhGquPutUCbqRPAvxqJ9dOHo1/A +BoRX9GoKjk1HfEV80CCNMwUyOACduao9sMMJLb1tB2ned/qo1bglDNVXWVpsK3fc +dVJgZJwjYuqY5rUvQKujVT/Tde83zYB+bzNEJ/9Nn8gusJ0xAoIBAQDlOPby4Ehh +dLrFCCBkzIpyRupWAHOztG5dQZujHiLBHDWgR+L4vpPB2lq8X/4sz3On5yVq6zDK +Rhntwr+2qv9KMmaovTPmMezOiuEYdY6YUWoLWFZPRhP/2PxWdWwlOkvH84BF2QGV +1Jq6HUZHWzjlP+1XHdNI7WHyBOqzOuRittaOWLLXaN8IHsli4SWBZP9hCnlx4k5f +qzVfIPPonu6cFniJBMFmnIOAj2mAam3YUcBKZ54UTdmOaxlR6dCJRVEDIjgtFJnD +UaXV1VymmUh+x9J7FF55U2hLvWgFrmeTQ6IZ3OU5pPBgUdnJsQ4L5aeEzXzbIWtH +5s3i42Pil4UbAoIBAQCVisYleBI/bBCUItu0fuHTTfYD35EbwOhwz2Gh+A7Ze7yF +UlyrZVZKKJsFiZZdba0izBfSJEMVCcnJ/4Csgrs9me3KooVjvwsa3LPqDWtNsUJ2 +HnaSxF1OmM7Muoivx/yahW2WQTjVaQ5874zZv5u716+O/KkpkLw60o6vjPJ5Ja17 ++9mHFmVaUfFFctVeCu8NcIiNAcbX5vlpr+FzH1ljCL18rffvzm+FXUVYXI4iGZUC +3fdXRExYnY9tfQWdIs85o4lIum6rRMbzTZpdxNkMdvdMGS0w8MXGR7SQ4OKyYsCR +RKiU8bCHxE7KuTrpp5zOVAC2BImIqVRNEioBmhaxAoIBABjEO+JoG0n0W824IA/k +Db1lLiKWr+mlwBrxYMiSE/07eAvWWI65wKs8VXtu/76Ft6BXmDJiMQZZ5qlK1n39 +IdI5eeAXeUkQ8d4rIUEMSpjoiwWoyMKN9tE496K70zB+iPuUsrJZTROMQh+D1DkX +gSE78//qqA6EH4YPw/ATl+OWj74XlVMy8I4nDWlSnEPLztAEWrTUV9V8YSrjG5dx +vKQ+xU1Ap0jX9llopWSLm0y5IIaphWn6M1xw8+5mzfJW+/bTtrAgPrDc3IcrI3SY +sT2Jh5Nm0wJW4bj1QQ0EGArQTu5ucJH24UX28goZyEO+z4fI0Am5JadCJ9Kw8PTl +nCsCggEAMCuMT3NrfeHWdU/DblRzyzDrvCwaj9mswrHpvcAAPUj9Nj0DnyZGYatA +3xBT+oBk8NoZ+gpyj9juG4PLRth2lWDMCPs24KgqW16nsbjE5zIrR36xc8yoQY+B +IiTkdMZl7ExsAXZnkAnxqnwfTgysYTjyrmq6HxWxyvd34aEcnxM/675YwsSLi2E1 +MOC46SOTleRoh1/v4+B6gkX6KoyO7fBzD0Ic6bbDhRegGvR22rCIHM8BUFpeL1SY +SRmNflqeyyMj4Mx9W7p+9yPUZIZR1+PzXNqFxUWycKNyjdafeWh0Blo6EesWt3Z4 +VfEy61yXWfUf3pC9b+OrbHDGq9jc4A== +-----END PRIVATE KEY----- diff --git a/certs/zone2/CA-zone2.srl b/certs/zone2/CA-zone2.srl new file mode 100644 index 0000000..2175166 --- /dev/null +++ b/certs/zone2/CA-zone2.srl @@ -0,0 +1 @@ +2D286EC177465AB8DF0090DB0469A0AB0A973851 diff --git a/certs/zone2/client.cnf b/certs/zone2/client.cnf new file mode 100644 index 0000000..882150d --- /dev/null +++ b/certs/zone2/client.cnf @@ -0,0 +1,8 @@ +[client] +basicConstraints = CA:FALSE +nsCertType = client, email +nsComment = "SAE Client Certificate" +subjectKeyIdentifier = hash +authorityKeyIdentifier = keyid,issuer +keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment +extendedKeyUsage = clientAuth, emailProtection diff --git a/certs/zone2/generate-client-cert.sh b/certs/zone2/generate-client-cert.sh new file mode 100755 index 0000000..a552132 --- /dev/null +++ b/certs/zone2/generate-client-cert.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +SAE="sae3" + +openssl genrsa -out "$SAE.key" 4096 +openssl req -new -key "$SAE.key" -out "$SAE.csr" -sha256 -subj "/CN=$SAE Client certificate" +openssl x509 -req -days 3650 -in "$SAE.csr" -sha256 -CA "CA-zone2.crt" -CAkey "CA-zone2.key" -CAcreateserial -out "$SAE.crt" -extfile "client.cnf" -extensions client +cat "$SAE.key" "$SAE.crt" "CA-zone2.crt" > "$SAE.pem" +openssl pkcs12 -export -out "$SAE.pfx" -inkey "$SAE.key" -in "$SAE.pem" -certfile "CA-zone2.crt" diff --git a/certs/zone2/generate-root-ca.sh b/certs/zone2/generate-root-ca.sh new file mode 100755 index 0000000..0360500 --- /dev/null +++ b/certs/zone2/generate-root-ca.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +openssl genrsa -out "CA-zone2.key" 4096 +openssl req -new -key "CA-zone2.key" -out "CA-zone2.csr" -sha256 -subj '/CN=Root CA for KME in zone2' +openssl x509 -req -days 3650 -in "CA-zone2.csr" -signkey "CA-zone2.key" -sha256 -out "CA-zone2.crt" -extfile "root-ca.cnf" -extensions root_ca +sudo cp CA-zone2.crt /usr/local/share/ca-certificates/ +sudo update-ca-certificates diff --git a/certs/zone2/generate_kme2_server_cert.sh b/certs/zone2/generate_kme2_server_cert.sh new file mode 100755 index 0000000..adaaaa3 --- /dev/null +++ b/certs/zone2/generate_kme2_server_cert.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +openssl req -new -nodes -out kme2.csr -newkey rsa:4096 -keyout kme2.key -subj '/CN=localhost/C=FR/ST=Biot/L=Biot/O=Unice' +openssl x509 -req -in kme2.csr -CA CA-zone2.crt -CAkey CA-zone2.key -CAcreateserial -out kme2.crt -days 3650 -sha256 -extfile kme2.v3.ext diff --git a/certs/zone2/kme2.crt b/certs/zone2/kme2.crt new file mode 100644 index 0000000..426ca65 --- /dev/null +++ b/certs/zone2/kme2.crt @@ -0,0 +1,32 @@ +-----BEGIN CERTIFICATE----- +MIIFdjCCA16gAwIBAgIULShuwXdGWrjfAJDbBGmgqwqXOFAwDQYJKoZIhvcNAQEL +BQAwIzEhMB8GA1UEAwwYUm9vdCBDQSBmb3IgS01FIGluIHpvbmUyMB4XDTI0MDIw +NzEwMDQzM1oXDTM0MDIwNDEwMDQzM1owTzESMBAGA1UEAwwJbG9jYWxob3N0MQsw +CQYDVQQGEwJGUjENMAsGA1UECAwEQmlvdDENMAsGA1UEBwwEQmlvdDEOMAwGA1UE +CgwFVW5pY2UwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDBjdqdE5Kd +r+7ot5PcX4hjWcr/j3BNtti5It0u9DB2fCU0s64teaCh5hO7G69aViZr1xlN7kSX +Z3N3pYgxj5f5PLZWdMepNJQ2uABNX84TzNMaIdfZtn5emcyleGTeN+/K3Yb9XZ8k +azuZ2GSG6YihH6cHQ7DFnSXRr8oP7JliN3Mp1QqLH1qvnWhEQ37MBPYwvLqWMLTt +8cW28FsX1z7ShnclUwsRCz5CiRNR/sdvzPXw66zKfwXrlPqqOZC7RtxvEjF+wMyx +hk1b9b2WUo6jbJnfaoUKW21G5rdsDW+hpluNFG/ppjwO3l/3pxb9aB6uCW5/u002 +yW4BwhGnrknDZmT9iTDLJ0ePfxIfqRFGJBC18d4lRhDxMfnExb7EcdRV082dRcko +lDDHigAtqKIHQLiFMO4dQtJ9NxE7TmM/RgZFOajVB/7uoTqPNEOdIwPmBKRmOs4X +KcOTmHuPZ4GPHTNVzwBjNkKn5KwtTL/U4iO4sBqgrViTltUjhzTR//CVrhbymYtb +6ixo3zeE0odt4s15vjJXWLYo0+T1sORvv/MUV+I2KD24i0ZckVdaXzgL1DTXwQKI +jkBzlvqh6QrUwv2733l2mRhQjm8eBKex1yMR+qICbiW4vuOSif2RMlD0acD9OqLR ++JbJ2UAK2Of30iMgppo8/7LKcv+OVHvC8QIDAQABo3YwdDAfBgNVHSMEGDAWgBSl +1ktJRIlLR/XBknPBewbMMUn7ozAJBgNVHRMEAjAAMAsGA1UdDwQEAwIE8DAaBgNV +HREEEzARgglsb2NhbGhvc3SHBH8AAAEwHQYDVR0OBBYEFJn/3fLgfciNtZv373Pz +zkJ3ypb8MA0GCSqGSIb3DQEBCwUAA4ICAQA68mjO8pz37vAqAdiewt5oAro0tiO7 +VS8uFpqQadTh/Pkt+rGK/mdBBRnB/QBfrkJvoNXW1w+l4OOvSyNu1guMqidwnpt2 +Q+q20yzd0N5gNqOVp4n2puHR9Ih7CRqiBxL8TnrPaciRw2CEAXHNSIvwQPAEi1CN +LaE/YAXmuhh2WPD4hM7n2PQPcfPuyEWu9Adfq5c3zT8iE6ePY8A54H8v3LvNBCk2 ++NGUNVqono+HlENf2fMBL9SsEHEEifhVxD3KZgQspvsUfB9bIkJp73/GGUD4UQ3E +C5E4g4u05y+zJ/dQzM5kiE0OJii5oRlHuS/dgDhuNc4Uly3R3JSOHX3mh7mPAhYM +HJCoOmXm2K56+O9EQfhuKk+AaM6UF+7GeHwDsouu00p4dY8vEVYVxwF0fqlFMTPR +gumdinF6Vr0xswFlORkKFWBC1Qu86zhTW8NcTcM3eLBFsHsX36biYA5GIN4hPyfM +w8p5qXNMR+FLRL4NvBjMmfON0VQbA9+vh5tgWBI5odR+50CutvYN+qiM4zqx7Y1K +PjTtKU7bduY0amqFEAijZ7uvFBr6X4DrjG7EcJBAc8d6Nz1sLCJxUa7jeMRSesgE +gwxDSFgj1FOcH134TFq2lLsUjOp5dzz/MsLbRS+fFid1gdOIeTLRYiq5HG65jXpR +i1bNC0+kXSpzPQ== +-----END CERTIFICATE----- diff --git a/certs/zone2/kme2.csr b/certs/zone2/kme2.csr new file mode 100644 index 0000000..2d25033 --- /dev/null +++ b/certs/zone2/kme2.csr @@ -0,0 +1,27 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIElDCCAnwCAQAwTzESMBAGA1UEAwwJbG9jYWxob3N0MQswCQYDVQQGEwJGUjEN +MAsGA1UECAwEQmlvdDENMAsGA1UEBwwEQmlvdDEOMAwGA1UECgwFVW5pY2UwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDBjdqdE5Kdr+7ot5PcX4hjWcr/ +j3BNtti5It0u9DB2fCU0s64teaCh5hO7G69aViZr1xlN7kSXZ3N3pYgxj5f5PLZW +dMepNJQ2uABNX84TzNMaIdfZtn5emcyleGTeN+/K3Yb9XZ8kazuZ2GSG6YihH6cH +Q7DFnSXRr8oP7JliN3Mp1QqLH1qvnWhEQ37MBPYwvLqWMLTt8cW28FsX1z7Shncl +UwsRCz5CiRNR/sdvzPXw66zKfwXrlPqqOZC7RtxvEjF+wMyxhk1b9b2WUo6jbJnf +aoUKW21G5rdsDW+hpluNFG/ppjwO3l/3pxb9aB6uCW5/u002yW4BwhGnrknDZmT9 +iTDLJ0ePfxIfqRFGJBC18d4lRhDxMfnExb7EcdRV082dRckolDDHigAtqKIHQLiF +MO4dQtJ9NxE7TmM/RgZFOajVB/7uoTqPNEOdIwPmBKRmOs4XKcOTmHuPZ4GPHTNV +zwBjNkKn5KwtTL/U4iO4sBqgrViTltUjhzTR//CVrhbymYtb6ixo3zeE0odt4s15 +vjJXWLYo0+T1sORvv/MUV+I2KD24i0ZckVdaXzgL1DTXwQKIjkBzlvqh6QrUwv27 +33l2mRhQjm8eBKex1yMR+qICbiW4vuOSif2RMlD0acD9OqLR+JbJ2UAK2Of30iMg +ppo8/7LKcv+OVHvC8QIDAQABoAAwDQYJKoZIhvcNAQELBQADggIBAHMC3J/D6ZNq +RXUDjdXjV96WKxk3q+zD5ETWUUlTzrtCQLWbXBsL7D+aELXEZGCdckrx3WSHxyH5 +/mnGNtw/eRVNQGLISMuLp9oLBgKuNId6Jx4WwE7sEggLV9rzdL2F/umaCqxQWR1g +BDa2zo8Sw54K31OwNR/Grti97zJ7M7FV4Xvr68nTx0lRz3fTclZ8P4nkZ3qhJCDm ++LukbMK7eELcHDceveYQOgwfrsbwVWjmMBPqJRe2lBr++HZG6TtXhYpfo/k5g68O +HEdrQCtC1GdGaQGzpyxLIFYm0m8P4cChotnYAp65VW3BB58daCv5CTTBacWJGdXI +EhruYfLgmpniJWA3E/Y25wzTYT1SdUefwyADE71IcsfIwRsxpXpu7IgeQHgrj/y1 +WU3De6Y/M+zyvYWHb7XQnzvT4F0eY3myyTjGKalV9CwX9vermYlCpxW3x7TFOfc/ +0nTJx8Uo0k7Cac/SQUJmbLUAXR5Ht2jeWYD8dteflZyIh7MXFgRXeU0ytPvl3u9q +ibs9fp04x5bVstrICtW5TIZHK+ggKtZ+q6S4KhuztO2VZBfjX0uqVkP+3ECLttOw +hGbuaMncpMRy47aMAJgZ58586vafsyToYR3iyAxJ/JloYd11P3kAu6h7zNNsnFRP +VY8ZJrUWKvtHJTvbmZAB1Zx14fyYfI6G +-----END CERTIFICATE REQUEST----- diff --git a/certs/zone2/kme2.key b/certs/zone2/kme2.key new file mode 100644 index 0000000..7b5d7fb --- /dev/null +++ b/certs/zone2/kme2.key @@ -0,0 +1,52 @@ +-----BEGIN PRIVATE KEY----- +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 +9f5Ji+xpe6Lp/fDYsyit7iriFhdrHQ== +-----END PRIVATE KEY----- diff --git a/certs/zone2/kme2.v3.ext b/certs/zone2/kme2.v3.ext new file mode 100644 index 0000000..68e35be --- /dev/null +++ b/certs/zone2/kme2.v3.ext @@ -0,0 +1,8 @@ +authorityKeyIdentifier=keyid,issuer +basicConstraints=CA:FALSE +keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment +subjectAltName = @alt_names + +[alt_names] +DNS.1 = localhost +IP.1 = 127.0.0.1 diff --git a/certs/zone2/root-ca.cnf b/certs/zone2/root-ca.cnf new file mode 100644 index 0000000..b87de32 --- /dev/null +++ b/certs/zone2/root-ca.cnf @@ -0,0 +1,4 @@ +[root_ca] +basicConstraints = critical,CA:TRUE,pathlen:1 +keyUsage = critical, nonRepudiation, cRLSign, keyCertSign +subjectKeyIdentifier=hash diff --git a/certs/zone2/sae3.crt b/certs/zone2/sae3.crt new file mode 100644 index 0000000..80f786b --- /dev/null +++ b/certs/zone2/sae3.crt @@ -0,0 +1,32 @@ +-----BEGIN CERTIFICATE----- +MIIFizCCA3OgAwIBAgIULShuwXdGWrjfAJDbBGmgqwqXOFEwDQYJKoZIhvcNAQEL +BQAwIzEhMB8GA1UEAwwYUm9vdCBDQSBmb3IgS01FIGluIHpvbmUyMB4XDTI0MDIw +NzEwMTEzNloXDTM0MDIwNDEwMTEzNlowIjEgMB4GA1UEAwwXc2FlMyBDbGllbnQg +Y2VydGlmaWNhdGUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDC2jub +RZjDpHHr1U5p4186+LyfCOS04n8RwQDmAn3106TYHB0W682V6HuYbeAjHwW8wIII +wTV2JPWTpPiLM/BI3KjAnY9DPXV5PzPqIM8dhODt92hp6Ab+LMHN5fr1wXWbCOIa +yWFbG4eE4EhHJb5nhRY0xtje5qVmtpPqXsynbsxgSiojo1uc8iHmQDUNDjKT7Y2Z +OiTjgbYZ1j7BIRoG1QdgQsKZCKMzYht7+cTKElpkMiGu6KRSFDf5FPAgyxCAeYT5 +fG9x2MZf5ipfdL9KN3TGX+5asaM2keEKq1Nh8+BIoPZjEvIKFuXjUKnUnYzJfsyc +VcOoamWgYNevqhOiyZmi5dS3dTS5LiHzYB91nSAX9hXtR78EPxz8PKSaxNXyl8gq +l3v2qivH+FFmkv5WKpcjGQ9mIVhFPK9LsS+S1CyY5bjuSZazs6YojhlrADFtOCz3 +8LiyEHJCPyPmYoNf6bocPFJ7fPMFRJQMnK8hUOhacZlgoa4TnfcssuD3sUNGfUfB +QQ+De4TuWPl7Xxm2XxAuOuVN+vFokbiVTUzw6egohfE9MFnyZX/bRYWTAycId8U/ +UwRg4cY5TiDgX7PptQkj9bTyYb9FNA6lbLCotvrA2vOwAjvK3v6AY9Z2v7GBwEXj +8XrTwQ/pBGETNepyrhnrn558/0pKzIeqNPfOdQIDAQABo4G3MIG0MAkGA1UdEwQC +MAAwEQYJYIZIAYb4QgEBBAQDAgWgMCUGCWCGSAGG+EIBDQQYFhZTQUUgQ2xpZW50 +IENlcnRpZmljYXRlMB0GA1UdDgQWBBSudix0zbKugHVMEmF2obJ5kTJvyTAfBgNV +HSMEGDAWgBSl1ktJRIlLR/XBknPBewbMMUn7ozAOBgNVHQ8BAf8EBAMCBeAwHQYD +VR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMA0GCSqGSIb3DQEBCwUAA4ICAQBk +wau2aOK1Y9DQlV85IUaWFgUPkej7AXpgAOugrnWOLfBATdE8WG4bpvCOfVgw15zn +fF088lgc1kDYhb+c0iMKiuVjhokT3R+WfDY2P33QTI1a9eQmc/pG1tb/69tOEa3/ +qPCYMNO0Xfhi+/ZRe/a5QltnXJmlQY5vf3rSxGaKBhph/FVlxQbUYoMpcwX4KmDN +YrBg3epRYAEso4beAw1GrmHwtBWAGvH0rLOi1qVuPPToc3yn2Q07bsuerPUMUCY4 +SxFqXnCzJcwepJPqdL7qfLEhPEXEKEoVmvu2vA2blTI/6RdIq/ClrS/6er48qQgt +n7iBOR5ilYPfbuDuLPd7FbSfpGa7v1kd8sSFH5jkXuA3hFP4ErSTjJqxg37VezUe +FPph+pTUAK9oH3tqD5KL3oAErfAmioAMxyGMpO7lgJyaJmDvYMGye6o1cEuwXZ19 +91QZ8pvnr+JgdyaQRDYoazGUyBKgZl+wwrC68dssm8r2ddbWHbBEtOXwywa90Gaa +iqr9imROrIr0sYrFBlupDOGUdl9k/oZEmiyINbq6aXdn72w8uxBYIltygtTI6XaJ +t6cMkahp5WWnJ7thtRHJZVktCMTkGzQAbEVEuWp6spQw1gSJMoy5UnE4B0a2KuIO ++lnGDDu6yLpf8AMuGxzRFoQxXoehX0VFfr+O3MQj0w== +-----END CERTIFICATE----- diff --git a/certs/zone2/sae3.csr b/certs/zone2/sae3.csr new file mode 100644 index 0000000..9aa0b92 --- /dev/null +++ b/certs/zone2/sae3.csr @@ -0,0 +1,26 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIEZzCCAk8CAQAwIjEgMB4GA1UEAwwXc2FlMyBDbGllbnQgY2VydGlmaWNhdGUw +ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDC2jubRZjDpHHr1U5p4186 ++LyfCOS04n8RwQDmAn3106TYHB0W682V6HuYbeAjHwW8wIIIwTV2JPWTpPiLM/BI +3KjAnY9DPXV5PzPqIM8dhODt92hp6Ab+LMHN5fr1wXWbCOIayWFbG4eE4EhHJb5n +hRY0xtje5qVmtpPqXsynbsxgSiojo1uc8iHmQDUNDjKT7Y2ZOiTjgbYZ1j7BIRoG +1QdgQsKZCKMzYht7+cTKElpkMiGu6KRSFDf5FPAgyxCAeYT5fG9x2MZf5ipfdL9K +N3TGX+5asaM2keEKq1Nh8+BIoPZjEvIKFuXjUKnUnYzJfsycVcOoamWgYNevqhOi +yZmi5dS3dTS5LiHzYB91nSAX9hXtR78EPxz8PKSaxNXyl8gql3v2qivH+FFmkv5W +KpcjGQ9mIVhFPK9LsS+S1CyY5bjuSZazs6YojhlrADFtOCz38LiyEHJCPyPmYoNf +6bocPFJ7fPMFRJQMnK8hUOhacZlgoa4TnfcssuD3sUNGfUfBQQ+De4TuWPl7Xxm2 +XxAuOuVN+vFokbiVTUzw6egohfE9MFnyZX/bRYWTAycId8U/UwRg4cY5TiDgX7Pp +tQkj9bTyYb9FNA6lbLCotvrA2vOwAjvK3v6AY9Z2v7GBwEXj8XrTwQ/pBGETNepy +rhnrn558/0pKzIeqNPfOdQIDAQABoAAwDQYJKoZIhvcNAQELBQADggIBAF/S7zP/ +XCSbgq4LXdchpRlMHEQg5OObcmr/8AZZQMC1yPB67q0F9QvTEwqBKbq7qAF1XVMn +Zm/Get2ZxWeCwZcP7sEAQOJG+/gjRsHxnjpAQI4t2M52tGN0akRM/EReo52TDFu2 +ymuBA8vdB3HvCUYfRq1wzzfJr8kKA7lC+46/UKA4RzHYoAvjTENtjdxS8oyUjwhT +Six6GZt7fp7ip/HwFJmHFj8Xzl9R/iomKKnwEzJEH2Q78A3FklkbU41jKH1L7na0 +bC5Jrs3WnOlBqACcqoise771XW19l4VLk7bmoX/DKbxBK1Ex0Jgz68dFztpyelyu +jO7EQqzmUjzlBKHhp1iZ0AlvkkhTAvJIuOxHpandvIszCCNUuclGRtRescaYlUjO +3HBKv36diZKylcNoRxEHU6Q+8zDQZkCZcPI+npdyf/SdBZNL/S70hEJfIDuzKcxH +KR3bzsv/17UOgkT1ZNvhuRrRmlkOEhDy230d8UNjy9GCRNlgQS1SU4XpQzF/vO2X +ygePPTYJlx97eooq6115VcX0hVdowfIetjK9SbbwjY/0mOWWB/CAvVmWvLWGxhKr +nwGV7kM28227agkOG0R+MnXZ13tHVOWZJ5XXZ0yb58ssfNvrdo5xKuGOpb4uThcZ +Lc1iMQUwAoYCMp+6/Vqp2dZCCQI0AKSIcCMt +-----END CERTIFICATE REQUEST----- diff --git a/certs/zone2/sae3.key b/certs/zone2/sae3.key new file mode 100644 index 0000000..e3fac1a --- /dev/null +++ b/certs/zone2/sae3.key @@ -0,0 +1,52 @@ +-----BEGIN PRIVATE KEY----- +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 +36O+/C7Fm7vMYiD/ZCNbNFlKDNM+dA== +-----END PRIVATE KEY----- diff --git a/certs/zone2/sae3.pem b/certs/zone2/sae3.pem new file mode 100644 index 0000000..73a4715 --- /dev/null +++ b/certs/zone2/sae3.pem @@ -0,0 +1,114 @@ +-----BEGIN PRIVATE KEY----- +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 +36O+/C7Fm7vMYiD/ZCNbNFlKDNM+dA== +-----END PRIVATE KEY----- +-----BEGIN CERTIFICATE----- +MIIFizCCA3OgAwIBAgIULShuwXdGWrjfAJDbBGmgqwqXOFEwDQYJKoZIhvcNAQEL +BQAwIzEhMB8GA1UEAwwYUm9vdCBDQSBmb3IgS01FIGluIHpvbmUyMB4XDTI0MDIw +NzEwMTEzNloXDTM0MDIwNDEwMTEzNlowIjEgMB4GA1UEAwwXc2FlMyBDbGllbnQg +Y2VydGlmaWNhdGUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDC2jub +RZjDpHHr1U5p4186+LyfCOS04n8RwQDmAn3106TYHB0W682V6HuYbeAjHwW8wIII +wTV2JPWTpPiLM/BI3KjAnY9DPXV5PzPqIM8dhODt92hp6Ab+LMHN5fr1wXWbCOIa +yWFbG4eE4EhHJb5nhRY0xtje5qVmtpPqXsynbsxgSiojo1uc8iHmQDUNDjKT7Y2Z +OiTjgbYZ1j7BIRoG1QdgQsKZCKMzYht7+cTKElpkMiGu6KRSFDf5FPAgyxCAeYT5 +fG9x2MZf5ipfdL9KN3TGX+5asaM2keEKq1Nh8+BIoPZjEvIKFuXjUKnUnYzJfsyc +VcOoamWgYNevqhOiyZmi5dS3dTS5LiHzYB91nSAX9hXtR78EPxz8PKSaxNXyl8gq +l3v2qivH+FFmkv5WKpcjGQ9mIVhFPK9LsS+S1CyY5bjuSZazs6YojhlrADFtOCz3 +8LiyEHJCPyPmYoNf6bocPFJ7fPMFRJQMnK8hUOhacZlgoa4TnfcssuD3sUNGfUfB +QQ+De4TuWPl7Xxm2XxAuOuVN+vFokbiVTUzw6egohfE9MFnyZX/bRYWTAycId8U/ +UwRg4cY5TiDgX7PptQkj9bTyYb9FNA6lbLCotvrA2vOwAjvK3v6AY9Z2v7GBwEXj +8XrTwQ/pBGETNepyrhnrn558/0pKzIeqNPfOdQIDAQABo4G3MIG0MAkGA1UdEwQC +MAAwEQYJYIZIAYb4QgEBBAQDAgWgMCUGCWCGSAGG+EIBDQQYFhZTQUUgQ2xpZW50 +IENlcnRpZmljYXRlMB0GA1UdDgQWBBSudix0zbKugHVMEmF2obJ5kTJvyTAfBgNV +HSMEGDAWgBSl1ktJRIlLR/XBknPBewbMMUn7ozAOBgNVHQ8BAf8EBAMCBeAwHQYD +VR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMA0GCSqGSIb3DQEBCwUAA4ICAQBk +wau2aOK1Y9DQlV85IUaWFgUPkej7AXpgAOugrnWOLfBATdE8WG4bpvCOfVgw15zn +fF088lgc1kDYhb+c0iMKiuVjhokT3R+WfDY2P33QTI1a9eQmc/pG1tb/69tOEa3/ +qPCYMNO0Xfhi+/ZRe/a5QltnXJmlQY5vf3rSxGaKBhph/FVlxQbUYoMpcwX4KmDN +YrBg3epRYAEso4beAw1GrmHwtBWAGvH0rLOi1qVuPPToc3yn2Q07bsuerPUMUCY4 +SxFqXnCzJcwepJPqdL7qfLEhPEXEKEoVmvu2vA2blTI/6RdIq/ClrS/6er48qQgt +n7iBOR5ilYPfbuDuLPd7FbSfpGa7v1kd8sSFH5jkXuA3hFP4ErSTjJqxg37VezUe +FPph+pTUAK9oH3tqD5KL3oAErfAmioAMxyGMpO7lgJyaJmDvYMGye6o1cEuwXZ19 +91QZ8pvnr+JgdyaQRDYoazGUyBKgZl+wwrC68dssm8r2ddbWHbBEtOXwywa90Gaa +iqr9imROrIr0sYrFBlupDOGUdl9k/oZEmiyINbq6aXdn72w8uxBYIltygtTI6XaJ +t6cMkahp5WWnJ7thtRHJZVktCMTkGzQAbEVEuWp6spQw1gSJMoy5UnE4B0a2KuIO ++lnGDDu6yLpf8AMuGxzRFoQxXoehX0VFfr+O3MQj0w== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFGTCCAwGgAwIBAgIUKhp/O8QyH/mEdqwvDk4CGu6RrnowDQYJKoZIhvcNAQEL +BQAwIzEhMB8GA1UEAwwYUm9vdCBDQSBmb3IgS01FIGluIHpvbmUyMB4XDTI0MDIw +NzA5NTcwNVoXDTM0MDIwNDA5NTcwNVowIzEhMB8GA1UEAwwYUm9vdCBDQSBmb3Ig +S01FIGluIHpvbmUyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0kE/ +jcYF4GC6kE9cG+1y2J8q4oiPfuNxTCdLceXPJqzFkNB9HJgdumfAhfUEseC8q+iB +HohVT/y6RMoX2ZnsrdqMv8mC9r14OQiL2P2tdeQhitePlwcQINLnlEPnf2rPlKAQ +jXZYV6YpIVsBWwsRmmQAPv5tpGHuxeV/NzrkMX0X2d5JNGS2WzkuHApD5CS79m1d +rHHEMx1qzObdz8QoIyv0UgeYDyWtONCY/d1Rs0YgWg75reDxQ41e6oa+FwthOQ2x +2chE5f2NvKRGy5KZLlS42oh0RhaB0jmN+5sycRYge11T61wgGedhjM5dbDgGZVkh +EkHTnNEYph3AiYz27pA7KY4lZwpKYktoFZ5nTpD2hpqDVMk1BJ6rncExZQSkdkT7 ++U84oxja0X+joSp8zR7+lyST5xXq22kPp1g4e36itBE92w32PcXz3NujHSZ6oRPO +Bb/4bvvbFvP8ctgb70NW0Sv9LY8KCpw/fFfh8cSRCOSVn9yckjKMIMAGf5Ljax4u +CHhpJQevGUejtzhc/B5Nrw5YA4w16TbX1Ca2+LOnshYsvizOnYLbssAFPP1s8NZI +yeubRtMFgDYwNm5pPDWEINkRYpwTpc3cXo83Sx/vSHpxzOYFWqdpqPzdXZcgJiP0 +rS0o+TM/lkLKpLWaTNdmBKS+W9hU5W+MQ6gyCSsCAwEAAaNFMEMwEgYDVR0TAQH/ +BAgwBgEB/wIBATAOBgNVHQ8BAf8EBAMCAUYwHQYDVR0OBBYEFKXWS0lEiUtH9cGS +c8F7BswxSfujMA0GCSqGSIb3DQEBCwUAA4ICAQDJ88RClc+gC7Jip73Wg8HAq/fq +yOBDFPW/5gVMgGrUdR7p+0TXH/L2T6zToDCWZ/PgLk3dLd+0WVu88nC3tc+DzWXE +g+8rnE9QjIlCabDN7TaZGD8U+wxmI+MY+0iwy4BPhHl6B3QY1kYbAqm4kp4ALr41 +FdIjwl0K4zZ+ldQZerxrzGcDOPFtiRSnRSx0ADK8/ghBysly4vVZvHxIS8xhqgRR +Emj5jk1hZrgVPWvoCbU9v7dj2syNT7vWkbvRobSzewkbL4Ott3oIn8Vs4FTR+D8B +FT86x1+6rMBVDdDtLTYBC8mqxLmwiOWDe7M72a8Tq+grXjCcIkjPNsJLHEJoY2kw +1urvCRarH2dbJnvsiKK3Hof6/Mt8una5xZn2FyegM0EyHowyKCRrGhJrjSMWfdaj +DYitv2fTEorWhiNt8s6vRQ7RTq0p2P0nTFjwvz+GXq1uQWx/EMZe8knQgKMNaNqD +HyLbUP0lsVGuZ56sx0SH2KWjTg4b7s6eu23r5SYtapHqkdw3Uliae4dBInZptenf +YAbEDdItcZ/PBdwOoVv6HO7jgPlGsoEOafrF7j56oUiKvuIkbpCspOwyUU8MVUqy +gZgOYWjXTW4WZZmyw0Ieh9JvWCyKpYIKUUeEnILGn7YV0fbaopz9OqQ5waZibo7l +1EYvq7zJyBDsV9Z/jw== +-----END CERTIFICATE----- diff --git a/certs/zone2/sae3.pfx b/certs/zone2/sae3.pfx new file mode 100644 index 0000000000000000000000000000000000000000..0c1691f1eeb79ceb7d059aba71ae03af173188cc GIT binary patch literal 7027 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 z zl2SNM!T5?Iq}+r>NJiw582=aN8pZRE;>C4?1HZ|IA4Gb=Codq zGBUJUioUM3@fTvgA_S);jc9!2pAjM6StV@RmCG;>jKpYt^$bB2I4q ztzAh@l!VJXCql!p5$yn=33G$PJV8)KB@xC2$``($ZM-Cp*MF{K3Um(IQjZu!$2#We z|GaOV5{JQXB&;>A>vy70xunle8mQqJCPrggWgy0ryGV7~7=_Y%$O?W-$=!Ei39JRN zZj)k1f*?QuKaG(P!FF z)+~UL?)VJbhF}x&Do$5HWDLXUHmQ?=Lzr~Y7F5xHztC+J=9u(ltcB~}Iz8**13A>A zG$xAJrRElWB~r@meE3klEcHwm<%!QCSrv$ci^?ULsS<4Opa9~0-u8PtsR$&(Q)ghj zG|5(d6E3V247pF2*BOIreHDwwgxRDLJly+MG=B3zOz_(Jn`v{gD6ztOfS`I#80EG~ za!}F@5*$L^g-O@~&ar*?ZGWVEeU|D;aON<&4)mt5ZdMQv#G9TC6cCCxk>T! zz46<6F2%<%YPT>27D2L_)hLQ^t)Xz*gyRTEzSm%e-*vKsr*I!T8JDeFZOF0!5x6#) zUZWc(S0P=OxmQulr~6<%s+#6!fr&|t=hs_ep898!N~xF3KgnA|yFH+8?W zppw$An^C@(;-xhYG?(BiEghfEjVuuwQ&+pkW!s>o73E$VOrD0Lhu=2*>m|Hk!E3Ap zE933q&gQsTfFzQQ$KMermU^R=h$bYBUoJL_m01gdDbNt&t`F=1RPYW9oAhPR`r8KG2~V7^Hr%9kR=db z62>eA6g$Z#2n<9m64(+>gkqb(VE8`VMQ_VNZxfoQZGI4rAQ8RpMYue~n0V9Tq-q$y zHcGOX=xgy%@{o;Gm6ep_qZ&OSNDPruxBphxwxP39g_-B_LLJOJBi(>rkJFrUO<24lMUlSG_8m<$ zzoOS$s{Z(H)71A}pM{?#ydFdlx_i7E{2-fp_s?Fm>tZoH*;S)ul?ZvN*_4-Z-4ALe zP{58;Sqa%$nRdb>gAB!s`624$5cSqDhXYIcc95hHZORjztgR#JvgSUQgtwl|Q2+fz z921vU)t8~8@Z=S|M`%ojVDmxE7qhy4rGZeliz`pa-20+B#@H*1M>A6j%fZ?qB_95v z=bLW_|LkV>smXJh@dj0W=5fsLR%ZPw$~b-Ohh_?nft=7h%a0&dD>G1y@6VU5u{5=l zCOtCwa$jzD5+)|!7vQS$zWyyJQa`IceFS z0=riJ&*Q3(qgmpX+elSgF;`E%5qkucdmrB_?I0V4VrdovJqztzsbw z%bX&B-$EIrl%2$-1Ex7$%;Kgu&}d8wdXhIAj>PqU4j&eZ>#-%N-m%X>+(-||u@TVF z6W?tmvV`M%y10F`$q(ttuYK2&6Y}5nkCwe=+96x_p1}utq|VpH(GML#0M1zCUTnFb z$N8rA*=X8P5*O%}JrPt`QlRk`ql{ZC zepYe&NM;@EGytl93mzgaJ01+qBHYsP@^J~3nXNY3?ddOs$%!B{fH;61fco#d3JMYy z0)`^wc662=UpU+ex#`yL*kl`WCq&sUmt7>?UN@0s+B*RTp%gQ4uvh_U<3CmJe*icg BXCVLp literal 0 HcmV?d00001 diff --git a/config_kme1.json b/config_kme1.json index cebd987..2f550df 100644 --- a/config_kme1.json +++ b/config_kme1.json @@ -20,8 +20,9 @@ { "id": 2, "key_directory_to_watch": "raw_keys/kme-1-2", - "inter_kme_bind_address": "127.0.0.1:3001", - "https_client_authentication_certificate": "certs/inter_kmes/client-kme1-to-kme2.pfx" + "inter_kme_bind_address": "127.0.0.1:4001", + "https_client_authentication_certificate": "certs/inter_kmes/client-kme1-to-kme2.pfx", + "https_client_authentication_certificate_password": "" } ], "saes": [ @@ -76,6 +77,10 @@ 59, 146 ] + }, + { + "id": 3, + "kme_id": 2 } ] } \ No newline at end of file diff --git a/config_kme2.json b/config_kme2.json new file mode 100644 index 0000000..57f5c8f --- /dev/null +++ b/config_kme2.json @@ -0,0 +1,64 @@ +{ + "this_kme": { + "id": 2, + "sqlite_db_path": ":memory:", + "key_directory_to_watch": "raw_keys/kme-2-2", + "saes_https_interface": { + "listen_address": "127.0.0.1:4000", + "ca_client_cert_path": "certs/zone2/CA-zone2.crt", + "server_cert_path": "certs/zone2/kme2.crt", + "server_key_path": "certs/zone2/kme2.key" + }, + "kmes_https_interface": { + "listen_address": "0.0.0.0:4001", + "ca_client_cert_path": "certs/inter_kmes/root-ca-kme2.crt", + "server_cert_path": "certs/zone2/kme2.crt", + "server_key_path": "certs/zone2/kme2.key" + } + }, + "other_kmes": [ + { + "id": 1, + "key_directory_to_watch": "raw_keys/kme-1-2", + "inter_kme_bind_address": "127.0.0.1:3001", + "https_client_authentication_certificate": "certs/inter_kmes/client-kme2-to-kme1.pfx", + "https_client_authentication_certificate_password": "" + } + ], + "saes": [ + { + "id": 1, + "kme_id": 1 + }, + { + "id": 2, + "kme_id": 1 + }, + { + "id": 3, + "kme_id": 2, + "https_client_certificate_serial": [ + 45, + 40, + 110, + 193, + 119, + 70, + 90, + 184, + 223, + 0, + 144, + 219, + 4, + 105, + 160, + 171, + 10, + 151, + 56, + 81 + ] + } + ] +} \ No newline at end of file diff --git a/raw_keys/kme-2-2/211202_1159_CD6ADBF2.cor b/raw_keys/kme-2-2/211202_1159_CD6ADBF2.cor new file mode 100755 index 0000000000000000000000000000000000000000..bbb462384722c0ed1fee4c8085b8344c30ab43d1 GIT binary patch literal 204800 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 WFByhG@XB=fo*>-KSH0PxrT+)-s()Sp literal 0 HcmV?d00001 diff --git a/src/config/mod.rs b/src/config/mod.rs index 2733844..6191ce3 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -86,7 +86,9 @@ pub struct OtherKmeConfig { /// IP address of the other KME, used to send keys to it using "classical channel" pub(crate) inter_kme_bind_address: String, /// Client certificate for inter KME HTTPS authentication - pub(crate) https_client_authentication_certificate: String + pub(crate) https_client_authentication_certificate: String, + /// Password for the client certificate + pub(crate) https_client_authentication_certificate_password: String } /// Config for specific SAE: its ID, KME ID and optional client certificate serial diff --git a/src/main.rs b/src/main.rs index 603038c..11933cb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,8 @@ use log::error; +use tokio::select; use qkd_kme_server::qkd_manager::QkdManager; use qkd_kme_server::routes::EtsiSaeQkdRoutesV1; +use qkd_kme_server::routes::inter_kmes_routes::InterKMEsRoutes; #[tokio::main] async fn main() { @@ -37,8 +39,12 @@ async fn main() { println!("{:?}", qkd_manager.is_err()); let qkd_manager = qkd_manager.unwrap(); - if sae_https_server.run::(&qkd_manager).await.is_err() { - error!("Error running SAEs HTTPS server"); - return; + select! { + x = inter_kme_https_server.run::(&qkd_manager) => { + error!("Error running inter-KMEs HTTPS server: {:?}", x); + }, + x = sae_https_server.run::(&qkd_manager) => { + error!("Error running SAEs HTTPS server: {:?}", x); + } } } \ No newline at end of file diff --git a/src/qkd_manager/config_extractor.rs b/src/qkd_manager/config_extractor.rs index 398913b..ed2faeb 100644 --- a/src/qkd_manager/config_extractor.rs +++ b/src/qkd_manager/config_extractor.rs @@ -15,6 +15,7 @@ impl ConfigExtractor { let qkd_manager = Arc::new(QkdManager::new(&config.this_kme_config.sqlite_db_path, config.this_kme_config.id)); Self::extract_all_saes(Arc::clone(&qkd_manager), config)?; Self::extract_other_kmes_and_keys(Arc::clone(&qkd_manager), config)?; + Self::add_classical_net_routing_info_kmes(Arc::clone(&qkd_manager), config)?; Ok(qkd_manager) } @@ -99,4 +100,17 @@ impl ConfigExtractor { let file_ext = Path::new(file_path).extension(); file_ext.is_some() && file_ext.unwrap() == crate::QKD_KEY_FILE_EXTENSION } + + fn add_classical_net_routing_info_kmes(qkd_manager: Arc, config: &Config) -> Result<(), io::Error> { + for other_kme_config in &config.other_kme_configs { + qkd_manager.add_kme_classical_net_info(other_kme_config.id, + other_kme_config.inter_kme_bind_address.clone(), + other_kme_config.https_client_authentication_certificate.clone(), + other_kme_config.https_client_authentication_certificate_password.clone()) + .map_err(|e| + io_err(&format!("Cannot add KME classical network info: {:?}", e)) + )?; + } + Ok(()) + } } \ No newline at end of file diff --git a/src/qkd_manager/http_request_obj.rs b/src/qkd_manager/http_request_obj.rs index b131492..912031d 100644 --- a/src/qkd_manager/http_request_obj.rs +++ b/src/qkd_manager/http_request_obj.rs @@ -1,6 +1,7 @@ //! Objects deserialized from HTTP request body -use serde::Deserialize; +use serde::{Deserialize, Serialize}; +use crate::SaeId; /// Request from the slave SAE to get key(s) from UUIDs provided by the master SAE #[derive(Deserialize, Debug)] @@ -14,4 +15,14 @@ pub(crate) struct RequestKeyId { #[allow(non_snake_case)] pub(crate) struct RequestListKeysIds { pub(crate) key_IDs: Vec, +} + +/// From inter-KME network: a key has been requested on a remote KME for a specific target SAE +#[derive(Serialize, Deserialize, Debug)] +#[allow(non_snake_case)] +pub(crate) struct ActivateKeyRemoteKME { + pub(crate) key_ID: String, + /// Master SAE that requested the key + pub(crate) origin_SAE_ID: SaeId, + pub(crate) remote_SAE_ID: SaeId, } \ No newline at end of file diff --git a/src/qkd_manager/key_handler.rs b/src/qkd_manager/key_handler.rs index 9ddef37..6c50b21 100644 --- a/src/qkd_manager/key_handler.rs +++ b/src/qkd_manager/key_handler.rs @@ -5,7 +5,7 @@ use std::io; use uuid::Bytes; use x509_parser::nom::AsBytes; use crate::{io_err, KmeId, qkd_manager, SaeClientCertSerial, SaeId}; -use crate::qkd_manager::{KMEInfo, PreInitQkdKeyWrapper, QkdManagerCommand, QkdManagerResponse, SAEInfo}; +use crate::qkd_manager::{http_request_obj, KMEInfo, PreInitQkdKeyWrapper, QkdManagerCommand, QkdManagerResponse, router, SAEInfo}; use base64::{engine::general_purpose, Engine as _}; use log::{error, info, warn}; use crate::qkd_manager::http_response_obj::{ResponseQkdKey, ResponseQkdKeysList}; @@ -21,6 +21,8 @@ pub(super) struct KeyHandler { sqlite_db: sqlite::Connection, /// The ID of this KME this_kme_id: KmeId, + /// Router on classical network, used to connect to other KMEs over unsecure classical network + qkd_router: router::QkdRouter, } impl KeyHandler { @@ -45,6 +47,7 @@ impl KeyHandler { io::Error::new(io::ErrorKind::NotConnected, format!("Error opening sqlite database: {:?}", e)) })?, this_kme_id, + qkd_router: router::QkdRouter::new(), }; // Create the tables if they do not exist key_handler.sqlite_db.execute(DATABASE_INIT_REQ).map_err(|e| { @@ -120,6 +123,24 @@ impl KeyHandler { error!("Error QKD manager sending response"); } }, + QkdManagerCommand::ActivateKeyFromRemote(origin_sae_id, target_sae_id, target_key_uuid) => { + let key_activate_response = self.activate_key_uuid_sae(origin_sae_id, target_sae_id, target_key_uuid).unwrap_or_else(identity); + if self.response_tx.send(key_activate_response).is_err() { + error!("Error QKD manager sending response"); + } + } + QkdManagerCommand::AddKmeClassicalNetInfo(kme_id, kme_addr_or_domain, conn_client_cert, conn_cert_password) => { + let add_kme_response = match self.qkd_router.add_kme_to_ip_or_domain_association(kme_id, &kme_addr_or_domain, &conn_client_cert, &conn_cert_password) { + Ok(_) => QkdManagerResponse::Ok, + Err(e) => { + error!("Error adding KME classical network info: {:?}", e); + QkdManagerResponse::Ko + }, + }; + if self.response_tx.send(add_kme_response).is_err() { + error!("Error QKD manager sending response"); + } + } } } Err(e) => { @@ -269,10 +290,14 @@ impl KeyHandler { QkdManagerResponse::Ko })?; if origin_kme_id != target_kme_id { - // send key to other KME TODO + // send key to other KME // We must ensure: - // - other KME is authenticated - // - other SAE belongs to other KME + // - other KME is authenticated (client certificate and operating system trust store) + // - other SAE belongs to other KME (statically managed for now) + self.activate_key_on_other_kme(origin_sae_id, target_kme_id, target_sae_id, &key_uuid).map_err(|_| { + error!("Error activating key on other KME"); + QkdManagerResponse::Ko + })?; } self.delete_pre_init_key_with_id(id).map_err(|_| { @@ -281,14 +306,96 @@ impl KeyHandler { })?; info!("Saving key {} in init keys", key_uuid); + + self.insert_activated_key(&key_uuid, &key, origin_sae_id, target_sae_id).map_err(|_| { + error!("Error inserting activated key"); + QkdManagerResponse::Ko + })?; + + // Encode the key in base64 + let response_qkd_key = ResponseQkdKey { + key_ID: key_uuid, + key: general_purpose::STANDARD.encode(&key) + }; + + // Return a list of key objects + Ok(QkdManagerResponse::Keys(ResponseQkdKeysList { + keys: vec![response_qkd_key], + })) + } + + fn activate_key_uuid_sae(&self, origin_sae_id: SaeId, target_sae_id: SaeId, key_uuid: String) -> Result { + const GET_PRE_INIT_KEY_PREPARED_STATEMENT: &'static str = "SELECT id, key, other_kme_id FROM uninit_keys WHERE key_uuid = ? LIMIT 1;"; + + let mut stmt = ensure_prepared_statement_ok!(self.sqlite_db, GET_PRE_INIT_KEY_PREPARED_STATEMENT); + stmt.bind((1, key_uuid.as_str())).map_err(|_| { + error!("Error binding key UUID"); + QkdManagerResponse::Ko + })?; + let sql_execution_state = stmt.next().map_err(|_| { + error!("Error executing SQL statement"); + QkdManagerResponse::Ko + })?; + + if sql_execution_state != sqlite::State::Row { + return Err(QkdManagerResponse::NotFound); + } + + let key_id = stmt.read::(0).map_err(|_| { + error!("Error reading SQL statement result"); + QkdManagerResponse::Ko + })?; + let key: Vec = stmt.read::, usize>(1).map_err(|_| { + error!("Error reading SQL statement result"); + QkdManagerResponse::Ko + })?; + let _other_kme_id = stmt.read::(2).map_err(|_| { + error!("Error reading SQL statement result"); + QkdManagerResponse::Ko + })?; + + self.insert_activated_key(&key_uuid, &key, origin_sae_id, target_sae_id).map_err(|_| { + error!("Error inserting activated key"); + QkdManagerResponse::Ko + })?; + self.delete_pre_init_key_with_id(key_id).map_err(|_| { + error!("Error deleting pre-init key {}", key_id); + QkdManagerResponse::Ko + })?; + + info!("Key {} activated between saes {} and {}", key_uuid, origin_sae_id, target_sae_id); + Ok(QkdManagerResponse::Ok) + } + + fn activate_key_on_other_kme(&self, caller_master_sae_id: SaeId, other_kme_id: KmeId, other_sae_id: SaeId, key_uuid: &str) -> Result<(), io::Error> { + let req_body = http_request_obj::ActivateKeyRemoteKME { + key_ID: key_uuid.to_string(), + origin_SAE_ID: caller_master_sae_id, + remote_SAE_ID: other_sae_id, + }; + let kme_classical_info = self.qkd_router.get_classical_connection_info_from_kme_id(other_kme_id).ok_or(io_err("KME ID not found"))?; + let kme_client = reqwest::blocking::Client::builder() + .identity(kme_classical_info.tls_client_cert_identity.clone()) + .build().map_err(|_| io_err("Error building reqwest client"))?; + let response = kme_client.post(&format!("https://{}/keys/activate", kme_classical_info.ip_or_domain)) + .json(&req_body) + .send().map_err(|_| io_err("Error sending HTTP request"))?; + + if response.status() != reqwest::StatusCode::OK { + return Err(io_err("Error activating key on other KME")); + } + Ok(()) + } + + fn insert_activated_key(&self, key_uuid: &str, key: &[u8], origin_sae_id: SaeId, target_sae_id: SaeId)-> Result { const INSERT_INIT_KEY_PREPARED_STATEMENT: &'static str = "INSERT INTO keys (key_uuid, key, origin_sae_id, target_sae_id) VALUES (?, ?, ?, ?);"; let mut stmt = ensure_prepared_statement_ok!(self.sqlite_db, INSERT_INIT_KEY_PREPARED_STATEMENT); - stmt.bind((1, key_uuid.as_str())).map_err(|_| { + stmt.bind((1, key_uuid)).map_err(|_| { error!("Error binding key UUID"); QkdManagerResponse::Ko })?; - stmt.bind((2, key.as_slice())).map_err(|_| { + stmt.bind((2, key)).map_err(|_| { error!("Error binding key"); QkdManagerResponse::Ko })?; @@ -304,17 +411,7 @@ impl KeyHandler { error!("Error executing SQL statement"); QkdManagerResponse::Ko })?; - - // Encode the key in base64 - let response_qkd_key = ResponseQkdKey { - key_ID: key_uuid, - key: general_purpose::STANDARD.encode(&key) - }; - - // Return a list of key objects - Ok(QkdManagerResponse::Keys(ResponseQkdKeysList { - keys: vec![response_qkd_key], - })) + Ok(QkdManagerResponse::Ok) } /// Delete a pre-init key from the pre-init keys database diff --git a/src/qkd_manager/mod.rs b/src/qkd_manager/mod.rs index e73af0d..e51d968 100644 --- a/src/qkd_manager/mod.rs +++ b/src/qkd_manager/mod.rs @@ -199,6 +199,47 @@ impl QkdManager { _ => None, } } + + /// From a remote KME, activate a key after master SAE requested it, to be requested by the slave SAE + /// # Arguments + /// * `origin_sae_id` - The ID of the origin (master) SAE, belonging to another KME + /// * `target_sae_id` - The ID of the target (slave) SAE, to which master SAE wants to communicate, belonging to this KME + /// * `key_uuid` - The UUID of the key to activate + /// # Returns + /// Ok if the key was activated successfully, an error otherwise + pub fn activate_key_from_remote(&self, origin_sae_id: SaeId, target_sae_id: SaeId, key_uuid: String) -> Result { + self.command_tx.send(QkdManagerCommand::ActivateKeyFromRemote(origin_sae_id, target_sae_id, key_uuid)).map_err(|_| { + TransmissionError + })?; + match self.response_rx.recv().map_err(|_| { + TransmissionError + })? { + QkdManagerResponse::Ok => Ok(QkdManagerResponse::Ok), // Ok is the QkdManagerResponse expected here + qkd_response_error => Err(qkd_response_error), + } + } + + /// Add classical network information to a KME, used to activate keys on it for slave KMEs using "classical channel" + /// # Arguments + /// * `kme_id` - The ID of the KME + /// * `kme_addr` - The IP address or domain of the KME on the classical network + /// * `client_auth_certificate_path` - The path to the client authentication certificate of the KME + /// * `client_auth_certificate_password` - The password of the client authentication certificate of the KME + /// # Returns + /// Ok if the KME classical network information was added successfully, an error otherwise + /// # Notes + /// You should also add target KME's CA certificate to the trust store of the source KME operating system + pub fn add_kme_classical_net_info(&self, kme_id: KmeId, kme_addr: String, client_auth_certificate_path: String, client_auth_certificate_password: String) -> Result { + self.command_tx.send(QkdManagerCommand::AddKmeClassicalNetInfo(kme_id, kme_addr, client_auth_certificate_path, client_auth_certificate_password)).map_err(|_| { + TransmissionError + })?; + match self.response_rx.recv().map_err(|_| { + TransmissionError + })? { + QkdManagerResponse::Ok => Ok(QkdManagerResponse::Ok), // Ok is the QkdManagerResponse expected here + qkd_response_error => Err(qkd_response_error), + } + } } /// A Pre-init QKD key, with its origin and target KME IDs @@ -276,6 +317,8 @@ enum QkdManagerCommand { AddPreInitKey(PreInitQkdKeyWrapper), /// Get a QKD key from the database (shall be called by the master SAE) GetKeys(SaeClientCertSerial, SaeId), // origin certificate + target id + /// Activate a key from a remote KME, after master SAE requested it + ActivateKeyFromRemote(SaeId, SaeId, String), // Origin SAE ID + Target SAE ID + Key UUID /// Get a list of QKD keys from the database (shall be called by the slave SAE) GetKeysWithIds(SaeClientCertSerial, SaeId, Vec), // origin certificate + target id /// Get the status of a key exchange between two SAEs (shall be called by the master SAE) @@ -286,6 +329,8 @@ enum QkdManagerCommand { GetSaeInfoFromCertificate(SaeClientCertSerial), // caller's certificate /// Returns the KME ID from belonging SAE ID GetKmeIdFromSaeId(SaeId), // SAE id + /// Add classical network information to a KME, used to activate keys on it for slave KMEs using "classical channel" + AddKmeClassicalNetInfo(KmeId, String, String, String), // KME id + KME address + client auth certificate path + client auth certificate password } /// All possible responses from the QKD manager diff --git a/src/qkd_manager/router.rs b/src/qkd_manager/router.rs index 4d91719..d04a135 100644 --- a/src/qkd_manager/router.rs +++ b/src/qkd_manager/router.rs @@ -1,27 +1,45 @@ -//! QKD network routing manager, get route to SAE +//! QKD network routing manager, get route to SAE and KME info on classical network use std::collections::HashMap; -use crate::{KmeId, SaeId}; +use std::fs::File; +use std::io; +use std::io::Read; +use crate::{io_err, KmeId}; -#[allow(dead_code)] #[derive(Clone)] pub(super) struct QkdRouter { - sae_to_kme_associations: HashMap, + kme_to_classical_network_info_associations: HashMap, } -#[allow(dead_code)] impl QkdRouter { pub(super) fn new() -> Self { Self { - sae_to_kme_associations: HashMap::new(), + kme_to_classical_network_info_associations: HashMap::new(), } } - pub(super) fn add_sae_to_kme_association(&mut self, sae_id: SaeId, kme_id: KmeId) { - self.sae_to_kme_associations.insert(sae_id, kme_id); + pub(super) fn add_kme_to_ip_or_domain_association(&mut self, kme_id: KmeId, ip_or_domain: &str, client_cert_path: &str, client_cert_password: &str) -> Result<(), io::Error> { + let mut buf = Vec::new(); + File::open(client_cert_path) + .map_err(|e| io_err(&format!("Cannot open client certificate file: {:?}", e)))? + .read_to_end(&mut buf) + .map_err(|e| io_err(&format!("Cannot read client certificate file: {:?}", e)))?; + let tls_client_cert_identity = reqwest::tls::Identity::from_pkcs12_der(&buf, client_cert_password) + .map_err(|e| io_err(&format!("Cannot create client certificate identity: {:?}", e)))?; + self.kme_to_classical_network_info_associations.insert(kme_id, KmeInfoClassicalNetwork { + ip_or_domain: ip_or_domain.to_string(), + tls_client_cert_identity, + }); + Ok(()) } - pub(super) fn get_kme_id_from_sae_id(&self, sae_id: SaeId) -> Option<&KmeId> { - self.sae_to_kme_associations.get(&sae_id) + pub(super) fn get_classical_connection_info_from_kme_id(&self, kme_id: KmeId) -> Option<&KmeInfoClassicalNetwork> { + self.kme_to_classical_network_info_associations.get(&kme_id) } +} + +#[derive(Clone)] +pub(super) struct KmeInfoClassicalNetwork { + pub(super) ip_or_domain: String, + pub(super) tls_client_cert_identity: reqwest::tls::Identity, } \ No newline at end of file diff --git a/src/routes/inter_kmes_routes/mod.rs b/src/routes/inter_kmes_routes/mod.rs new file mode 100644 index 0000000..3b0bf13 --- /dev/null +++ b/src/routes/inter_kmes_routes/mod.rs @@ -0,0 +1,51 @@ +//! Describes routes for specific inter KME channels over public network, generally to activate keys on remote KMEs + +use std::convert::Infallible; +use async_trait::async_trait; +use http_body_util::Full; +use hyper::body::{Bytes, Incoming}; +use hyper::{Request, Response, StatusCode}; +use http_body_util::BodyExt; +use rustls_pki_types::CertificateDer; +use crate::qkd_manager::http_request_obj::ActivateKeyRemoteKME; +use crate::qkd_manager::QkdManager; +use crate::routes::Routes; + +/// Routes for inter KMEs communication over public network +pub struct InterKMEsRoutes {} + +#[async_trait] +impl Routes for InterKMEsRoutes { + async fn handle_request(req: Request, _client_cert: Option<&CertificateDer>, qkd_manager: QkdManager) -> Result>, Infallible> { + let path = req.uri().path().to_owned(); + if path != "/keys/activate" { + return Ok(Response::builder().status(StatusCode::NOT_FOUND).body(Full::new(Bytes::from(String::from("Not found")))).unwrap()); + } + + let post_body_bytes = match req.into_body().collect().await { + Ok(bytes) => bytes.to_bytes(), + Err(_) => { + return Self::bad_request(); + } + }; + + let key_to_activate_obj: ActivateKeyRemoteKME = match serde_json::from_slice(&post_body_bytes) { + Ok(request_list_keys_ids) => request_list_keys_ids, + Err(_) => { + return Self::bad_request(); + } + }; + let response = qkd_manager.activate_key_from_remote(key_to_activate_obj.origin_SAE_ID, key_to_activate_obj.remote_SAE_ID, key_to_activate_obj.key_ID); + let http_response = match response { + Ok(_) => Ok(Response::builder().status(StatusCode::OK).body(Full::new(Bytes::from(String::from("OK")))).unwrap()), + Err(_) => Ok(Response::builder().status(StatusCode::BAD_REQUEST).body(Full::new(Bytes::from(String::from("Cannot activate key")))).unwrap()) + }; + http_response + } +} + +impl InterKMEsRoutes { + fn bad_request() -> Result>, Infallible> { + Ok(Response::builder().status(StatusCode::BAD_REQUEST).body(Full::new(Bytes::from(String::from("Bad request")))).unwrap()) + } +} \ No newline at end of file diff --git a/src/routes/mod.rs b/src/routes/mod.rs index babba5d..87abbd9 100644 --- a/src/routes/mod.rs +++ b/src/routes/mod.rs @@ -3,6 +3,7 @@ mod keys; mod request_context; mod sae; +pub mod inter_kmes_routes; use std::convert::Infallible; use request_context::RequestContext;