From faeac930828c1651e13e34262ea775abfe093206 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Pr=C3=A9vost?= Date: Tue, 6 Feb 2024 16:29:45 +0100 Subject: [PATCH] Add config for inter KME key exchange --- certs/inter_kmes/client-kme1-to-kme2.crt | 33 +++++ certs/inter_kmes/client-kme1-to-kme2.csr | 26 ++++ certs/inter_kmes/client-kme1-to-kme2.key | 52 ++++++++ certs/inter_kmes/client-kme1-to-kme2.pem | 115 ++++++++++++++++++ certs/inter_kmes/client-kme1-to-kme2.pfx | Bin 0 -> 7043 bytes certs/inter_kmes/client-kme2-to-kme1.crt | 33 +++++ certs/inter_kmes/client-kme2-to-kme1.csr | 26 ++++ certs/inter_kmes/client-kme2-to-kme1.key | 52 ++++++++ certs/inter_kmes/client-kme2-to-kme1.pem | 115 ++++++++++++++++++ certs/inter_kmes/client-kme2-to-kme1.pfx | Bin 0 -> 7043 bytes certs/inter_kmes/generate_kme_ca.sh | 13 ++ certs/inter_kmes/generate_kme_clients.sh | 16 +++ certs/inter_kmes/inter-kme-client.cnf | 8 ++ certs/inter_kmes/root-ca-kme1.crt | 30 +++++ certs/inter_kmes/root-ca-kme1.csr | 26 ++++ certs/inter_kmes/root-ca-kme1.key | 52 ++++++++ certs/inter_kmes/root-ca-kme1.srl | 1 + certs/inter_kmes/root-ca-kme2.crt | 30 +++++ certs/inter_kmes/root-ca-kme2.csr | 26 ++++ certs/inter_kmes/root-ca-kme2.key | 52 ++++++++ certs/inter_kmes/root-ca-kme2.srl | 1 + certs/inter_kmes/root-ca.cnf | 4 + certs/{ => zone1}/CA-zone1.crt | 0 certs/{ => zone1}/CA-zone1.key | 0 certs/{ => zone1}/CA-zone1.srl | 0 certs/{ => zone1}/README.md | 0 certs/{ => zone1}/kme1.crt | 0 certs/{ => zone1}/kme1.csr | 0 certs/{ => zone1}/kme1.key | 0 certs/{ => zone1}/kme1.v3.ext | 0 certs/{ => zone1}/pass.txt | 0 certs/{ => zone1}/sae1.cnf | 0 certs/{ => zone1}/sae1.crt | 0 certs/{ => zone1}/sae1.csr | 0 certs/{ => zone1}/sae1.key | 0 certs/{ => zone1}/sae1.pem | 0 certs/{ => zone1}/sae1.pfx | Bin certs/{ => zone1}/sae2.cnf | 0 certs/{ => zone1}/sae2.crt | 0 certs/{ => zone1}/sae2.csr | 0 certs/{ => zone1}/sae2.key | 0 certs/{ => zone1}/sae2.pem | 0 certs/{ => zone1}/sae2.pfx | Bin config_kme1.json | 27 ++-- .../{ => kme-1-1}/211202_1159_CD6ADBF2.cor | Bin raw_keys/kme-1-2/211202_1159_CD6ADBF2.cor | Bin 0 -> 204800 bytes .../{ => kme-1-2}/211202_1201_9961A847.cor | Bin .../{ => kme-1-2}/211202_1203_4CC5B386.cor | Bin .../{ => kme-1-2}/211202_1205_94889199.cor | Bin .../{ => kme-1-2}/211202_1208_6DB301BA.cor | Bin .../{ => kme-1-2}/211202_1210_2655B746.cor | Bin .../{ => kme-1-2}/211202_1212_6844D5F5.cor | Bin .../{ => kme-1-2}/211202_1214_7FADACCC.cor | Bin .../{ => kme-1-2}/211202_1216_BFD17354.cor | Bin .../{ => kme-1-2}/211202_1219_9FE60FC0.cor | Bin .../{ => kme-1-2}/211202_1221_47BE3A07.cor | Bin .../{ => kme-1-2}/211202_1223_C350632B.cor | Bin .../{ => kme-1-2}/211202_1225_A7A6EF2D.cor | Bin .../{ => kme-1-2}/211202_1228_F7F2EC9C.cor | Bin .../{ => kme-1-2}/211202_1230_DBFE95B7.cor | Bin src/config/mod.rs | 40 +++++- src/main.rs | 23 ++-- src/qkd_manager/config_extractor.rs | 48 ++++---- src/routes/keys/get_key.rs | 38 +++--- src/routes/keys/mod.rs | 4 +- src/routes/mod.rs | 16 +-- src/routes/request_context.rs | 2 +- src/routes/sae/info.rs | 8 +- src/routes/sae/mod.rs | 2 +- src/server/certificates.rs | 8 +- src/server/mod.rs | 8 +- tests/common/mod.rs | 14 +-- 72 files changed, 853 insertions(+), 96 deletions(-) create mode 100644 certs/inter_kmes/client-kme1-to-kme2.crt create mode 100644 certs/inter_kmes/client-kme1-to-kme2.csr create mode 100644 certs/inter_kmes/client-kme1-to-kme2.key create mode 100644 certs/inter_kmes/client-kme1-to-kme2.pem create mode 100644 certs/inter_kmes/client-kme1-to-kme2.pfx create mode 100644 certs/inter_kmes/client-kme2-to-kme1.crt create mode 100644 certs/inter_kmes/client-kme2-to-kme1.csr create mode 100644 certs/inter_kmes/client-kme2-to-kme1.key create mode 100644 certs/inter_kmes/client-kme2-to-kme1.pem create mode 100644 certs/inter_kmes/client-kme2-to-kme1.pfx create mode 100755 certs/inter_kmes/generate_kme_ca.sh create mode 100755 certs/inter_kmes/generate_kme_clients.sh create mode 100644 certs/inter_kmes/inter-kme-client.cnf create mode 100644 certs/inter_kmes/root-ca-kme1.crt create mode 100644 certs/inter_kmes/root-ca-kme1.csr create mode 100644 certs/inter_kmes/root-ca-kme1.key create mode 100644 certs/inter_kmes/root-ca-kme1.srl create mode 100644 certs/inter_kmes/root-ca-kme2.crt create mode 100644 certs/inter_kmes/root-ca-kme2.csr create mode 100644 certs/inter_kmes/root-ca-kme2.key create mode 100644 certs/inter_kmes/root-ca-kme2.srl create mode 100644 certs/inter_kmes/root-ca.cnf rename certs/{ => zone1}/CA-zone1.crt (100%) rename certs/{ => zone1}/CA-zone1.key (100%) rename certs/{ => zone1}/CA-zone1.srl (100%) rename certs/{ => zone1}/README.md (100%) rename certs/{ => zone1}/kme1.crt (100%) rename certs/{ => zone1}/kme1.csr (100%) rename certs/{ => zone1}/kme1.key (100%) rename certs/{ => zone1}/kme1.v3.ext (100%) rename certs/{ => zone1}/pass.txt (100%) rename certs/{ => zone1}/sae1.cnf (100%) rename certs/{ => zone1}/sae1.crt (100%) rename certs/{ => zone1}/sae1.csr (100%) rename certs/{ => zone1}/sae1.key (100%) rename certs/{ => zone1}/sae1.pem (100%) rename certs/{ => zone1}/sae1.pfx (100%) rename certs/{ => zone1}/sae2.cnf (100%) rename certs/{ => zone1}/sae2.crt (100%) rename certs/{ => zone1}/sae2.csr (100%) rename certs/{ => zone1}/sae2.key (100%) rename certs/{ => zone1}/sae2.pem (100%) rename certs/{ => zone1}/sae2.pfx (100%) rename raw_keys/{ => kme-1-1}/211202_1159_CD6ADBF2.cor (100%) create mode 100755 raw_keys/kme-1-2/211202_1159_CD6ADBF2.cor rename raw_keys/{ => kme-1-2}/211202_1201_9961A847.cor (100%) rename raw_keys/{ => kme-1-2}/211202_1203_4CC5B386.cor (100%) rename raw_keys/{ => kme-1-2}/211202_1205_94889199.cor (100%) rename raw_keys/{ => kme-1-2}/211202_1208_6DB301BA.cor (100%) rename raw_keys/{ => kme-1-2}/211202_1210_2655B746.cor (100%) rename raw_keys/{ => kme-1-2}/211202_1212_6844D5F5.cor (100%) rename raw_keys/{ => kme-1-2}/211202_1214_7FADACCC.cor (100%) rename raw_keys/{ => kme-1-2}/211202_1216_BFD17354.cor (100%) rename raw_keys/{ => kme-1-2}/211202_1219_9FE60FC0.cor (100%) rename raw_keys/{ => kme-1-2}/211202_1221_47BE3A07.cor (100%) rename raw_keys/{ => kme-1-2}/211202_1223_C350632B.cor (100%) rename raw_keys/{ => kme-1-2}/211202_1225_A7A6EF2D.cor (100%) rename raw_keys/{ => kme-1-2}/211202_1228_F7F2EC9C.cor (100%) rename raw_keys/{ => kme-1-2}/211202_1230_DBFE95B7.cor (100%) diff --git a/certs/inter_kmes/client-kme1-to-kme2.crt b/certs/inter_kmes/client-kme1-to-kme2.crt new file mode 100644 index 0000000..7684d6c --- /dev/null +++ b/certs/inter_kmes/client-kme1-to-kme2.crt @@ -0,0 +1,33 @@ +-----BEGIN CERTIFICATE----- +MIIFoDCCA4igAwIBAgIULgVrj3RJ1EaHNwT6U8U+O374qoIwDQYJKoZIhvcNAQEL +BQAwITEfMB0GA1UEAwwWSW50ZXItS01FIGttZTIgUm9vdCBDQTAeFw0yNDAyMDYx +NDQ3MThaFw0yNjAyMjUxNDQ3MThaMCYxJDAiBgNVBAMMG0tNRSBuZXR3b3JrIENs +aWVudCAkMSB0byAkMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKxy +hiaukcwflvZ3BxCU4Yp5AimANai5YhCOKzEF6mBkNE+z//jtdmnz2vREKkDAcUqt +sW1I+lsYDxABLSBwL0nAWARwwTTshg+DEX82BRX3QDYzAtFMYCSy3/pp1ReGOxGi +mEPplUPsFqQM6LIqq/Pn8T4AEAuMAEqOpbobYfDyvjKQHY50BqpU5JVPMmVsbMHm +CDY/yYebzA6QSWccHtOfsP+tdQJvrGX4yG5tkCPS0Nhu4Myf/tYPjOsNwtDIM27s +p7IynvZoy5aMex8y2neuDjM6Xki/49klUBV2oIS2C3BwTUYnxKuOolN9kllr8r7t +/JAuBHECQAqL0nniDqmXgyHUM5eEwCYIg5GVZ40ACpWnOdOZ9SWoY24jVsq6MxmK ++XY9D3VhisDFrL9E3pzOC0wSDD74L5J0P3D26n3qPv3dIbnxBFzAORPGWigiyFD8 +ke3X80PW8nw7JgbPGcFo9ac+bSEm3zbGIq9GoZlnyfKRJkBvbR03/PVny3z8h7bg +wXDyhDFCsFe4jhCt5EQMe8U503dlGiAct7ircjpMZilu4FlyMWXaOCg7w5T/0Z7C +grVUTluAAicj31teNYWhpCKEbpJSxCGuUiCyXNJgNNW6dWKOe3wm9Neyv7sXR2rd +3WG6IuICyDk8q9JgSMB8yokxbWxmNrzaHfSfTb+BAgMBAAGjgcowgccwCQYDVR0T +BAIwADARBglghkgBhvhCAQEEBAMCBaAwOAYJYIZIAYb4QgENBCsWKUludGVyIEtN +RSBuZXR3b3JrIGNsaWVudCBhdXRoIGNlcnRpZmljYXRlMB0GA1UdDgQWBBRa3Hdj +DAVFhWiDz67b8ZDXyJKTxzAfBgNVHSMEGDAWgBT9qyCcnfQM5Xj6NJQ00kkwLXP3 +7DAOBgNVHQ8BAf8EBAMCBeAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwME +MA0GCSqGSIb3DQEBCwUAA4ICAQCHMGBlc9UJZbeMUX5ASsSSa6sOnAWN8d7qI4Ju +FeclR38XaAvbgjipZ10LTpJDKnL258+PfKly3CUaMBevma8Y08tpuRE4OeJB40M7 +zrRW6VK81XSDDGoLxSAEpq2EFQvMOmOPsZCbYK5PSCXpQg1ZXadDcmuz3dHP5O3f +hxomp9q+Y2enroM74qFNnZ2PMYk+zoaKj2WADy8R04bHzoQ+SrVY9HfIARRahn8j +MUrryU/a9rzfOAXl1o1ZFbjTjPYIdx0yLkaoL7ecCtsCB3JULYJrVuuLFTn64fmZ +oUioomEo3WJHLIFfzJ++RCakEvwWtzpk0vN29PjE4PM99ms8IiVoHIRP9XOd3EiD +H8TlI/CQ9XS26X+fF+HILhGHxYFkykdMmlCOxNdk9MQYC8icSviMPJfWiNgPoUxb +5aVGSHlJeki0VaXuf5URjvanAujWhbsGR0zyk+nobE+vSM+Z5qoOualxuNt7pSDZ +tH9Dx/6Q+gaR6HZ+CVwLMxTHjeDxGqAUBFTGOtjPYm4ozEAy8ASq3f1/nWXp19Hz +3LNEO2zejoO8CpWyjyrPPiLTldeCNj5nRDCx4NAZoeR25moZ4mjJXt78VVxWhTTx +hovJD+JeZ9M7EmmUvplVBDLWWdKfibzsOiD2uvPfhAX8DkTBN20gzD0xnZZ2Cw0M +U/xebg== +-----END CERTIFICATE----- diff --git a/certs/inter_kmes/client-kme1-to-kme2.csr b/certs/inter_kmes/client-kme1-to-kme2.csr new file mode 100644 index 0000000..2205c59 --- /dev/null +++ b/certs/inter_kmes/client-kme1-to-kme2.csr @@ -0,0 +1,26 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIEazCCAlMCAQAwJjEkMCIGA1UEAwwbS01FIG5ldHdvcmsgQ2xpZW50ICQxIHRv +ICQyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEArHKGJq6RzB+W9ncH +EJThinkCKYA1qLliEI4rMQXqYGQ0T7P/+O12afPa9EQqQMBxSq2xbUj6WxgPEAEt +IHAvScBYBHDBNOyGD4MRfzYFFfdANjMC0UxgJLLf+mnVF4Y7EaKYQ+mVQ+wWpAzo +siqr8+fxPgAQC4wASo6luhth8PK+MpAdjnQGqlTklU8yZWxsweYINj/Jh5vMDpBJ +Zxwe05+w/611Am+sZfjIbm2QI9LQ2G7gzJ/+1g+M6w3C0MgzbuynsjKe9mjLlox7 +HzLad64OMzpeSL/j2SVQFXaghLYLcHBNRifEq46iU32SWWvyvu38kC4EcQJACovS +eeIOqZeDIdQzl4TAJgiDkZVnjQAKlac505n1JahjbiNWyrozGYr5dj0PdWGKwMWs +v0TenM4LTBIMPvgvknQ/cPbqfeo+/d0hufEEXMA5E8ZaKCLIUPyR7dfzQ9byfDsm +Bs8ZwWj1pz5tISbfNsYir0ahmWfJ8pEmQG9tHTf89WfLfPyHtuDBcPKEMUKwV7iO +EK3kRAx7xTnTd2UaIBy3uKtyOkxmKW7gWXIxZdo4KDvDlP/RnsKCtVROW4ACJyPf +W141haGkIoRuklLEIa5SILJc0mA01bp1Yo57fCb017K/uxdHat3dYboi4gLIOTyr +0mBIwHzKiTFtbGY2vNod9J9Nv4ECAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4ICAQAI +kXOnPiqpwzojuYY/oSDRh/1aeDNrzm7HE+9nM4bcZJ3Xcg8c4ol1hFQFlzG1DKVl +UWK+p61FtIBaYmoFzx/HCnxrW8Utqs/M3+18xXdq9fwiQ9Y5rtF5MGbSlzpFXwwy +85xx54/t0WzpiRre5GvciB9os2xNWJH0+Gcd1oiieTX4DCP1s+ak6w604VQ6UQcg +KEU2xkYWAL3W9JcYjN8ho1H4e4YbwLQmny4hJ/6WwD2K4QZrtb+Pr9gjnVWD+gle +QjB2C88m057pcg2BJXA/9o1kMTSGIJ2Gyw9NSBysHJ/kwTjPSSERPRUgzz1+1Hz3 +tin9b4gw/461ozM7T8ivd0dcQJjOw3dayEqVmpV34c3BLRyluhDZaogAVTHQDYUj +ROhRd/9y2H8h8ZQgzhlPC7n4+f+f7slHZA9s2ly7fxMM822tn/io3Ze+cJxHrqxh +XuidmuzJDre/HZoO7rUu4vBLMQwiW0vT+OeO8g005PMs691ygJvVP2HKZcPbu3Ec +hm9kbpsALzRvBWdI/tTXnGNTozNVms37Xl1hlao7uxaPj58kdGFU2f1+kwy5mWDb +4en3N1s67puT/62jyNysWaaHjg9Ax+sgLvM51P5Id7gtNd8oBuYSfv4wWFDTDg1u +daybAA68VJKkATwG3jLgLY1gjmJfaalTsaivnvLQMw== +-----END CERTIFICATE REQUEST----- diff --git a/certs/inter_kmes/client-kme1-to-kme2.key b/certs/inter_kmes/client-kme1-to-kme2.key new file mode 100644 index 0000000..55244ab --- /dev/null +++ b/certs/inter_kmes/client-kme1-to-kme2.key @@ -0,0 +1,52 @@ +-----BEGIN PRIVATE KEY----- +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 +gZLjkMeVDWo7PeCcWo3s+USMfyfz +-----END PRIVATE KEY----- diff --git a/certs/inter_kmes/client-kme1-to-kme2.pem b/certs/inter_kmes/client-kme1-to-kme2.pem new file mode 100644 index 0000000..c7928b0 --- /dev/null +++ b/certs/inter_kmes/client-kme1-to-kme2.pem @@ -0,0 +1,115 @@ +-----BEGIN PRIVATE KEY----- +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 +gZLjkMeVDWo7PeCcWo3s+USMfyfz +-----END PRIVATE KEY----- +-----BEGIN CERTIFICATE----- +MIIFoDCCA4igAwIBAgIULgVrj3RJ1EaHNwT6U8U+O374qoIwDQYJKoZIhvcNAQEL +BQAwITEfMB0GA1UEAwwWSW50ZXItS01FIGttZTIgUm9vdCBDQTAeFw0yNDAyMDYx +NDQ3MThaFw0yNjAyMjUxNDQ3MThaMCYxJDAiBgNVBAMMG0tNRSBuZXR3b3JrIENs +aWVudCAkMSB0byAkMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKxy +hiaukcwflvZ3BxCU4Yp5AimANai5YhCOKzEF6mBkNE+z//jtdmnz2vREKkDAcUqt +sW1I+lsYDxABLSBwL0nAWARwwTTshg+DEX82BRX3QDYzAtFMYCSy3/pp1ReGOxGi +mEPplUPsFqQM6LIqq/Pn8T4AEAuMAEqOpbobYfDyvjKQHY50BqpU5JVPMmVsbMHm +CDY/yYebzA6QSWccHtOfsP+tdQJvrGX4yG5tkCPS0Nhu4Myf/tYPjOsNwtDIM27s +p7IynvZoy5aMex8y2neuDjM6Xki/49klUBV2oIS2C3BwTUYnxKuOolN9kllr8r7t +/JAuBHECQAqL0nniDqmXgyHUM5eEwCYIg5GVZ40ACpWnOdOZ9SWoY24jVsq6MxmK ++XY9D3VhisDFrL9E3pzOC0wSDD74L5J0P3D26n3qPv3dIbnxBFzAORPGWigiyFD8 +ke3X80PW8nw7JgbPGcFo9ac+bSEm3zbGIq9GoZlnyfKRJkBvbR03/PVny3z8h7bg +wXDyhDFCsFe4jhCt5EQMe8U503dlGiAct7ircjpMZilu4FlyMWXaOCg7w5T/0Z7C +grVUTluAAicj31teNYWhpCKEbpJSxCGuUiCyXNJgNNW6dWKOe3wm9Neyv7sXR2rd +3WG6IuICyDk8q9JgSMB8yokxbWxmNrzaHfSfTb+BAgMBAAGjgcowgccwCQYDVR0T +BAIwADARBglghkgBhvhCAQEEBAMCBaAwOAYJYIZIAYb4QgENBCsWKUludGVyIEtN +RSBuZXR3b3JrIGNsaWVudCBhdXRoIGNlcnRpZmljYXRlMB0GA1UdDgQWBBRa3Hdj +DAVFhWiDz67b8ZDXyJKTxzAfBgNVHSMEGDAWgBT9qyCcnfQM5Xj6NJQ00kkwLXP3 +7DAOBgNVHQ8BAf8EBAMCBeAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwME +MA0GCSqGSIb3DQEBCwUAA4ICAQCHMGBlc9UJZbeMUX5ASsSSa6sOnAWN8d7qI4Ju +FeclR38XaAvbgjipZ10LTpJDKnL258+PfKly3CUaMBevma8Y08tpuRE4OeJB40M7 +zrRW6VK81XSDDGoLxSAEpq2EFQvMOmOPsZCbYK5PSCXpQg1ZXadDcmuz3dHP5O3f +hxomp9q+Y2enroM74qFNnZ2PMYk+zoaKj2WADy8R04bHzoQ+SrVY9HfIARRahn8j +MUrryU/a9rzfOAXl1o1ZFbjTjPYIdx0yLkaoL7ecCtsCB3JULYJrVuuLFTn64fmZ +oUioomEo3WJHLIFfzJ++RCakEvwWtzpk0vN29PjE4PM99ms8IiVoHIRP9XOd3EiD +H8TlI/CQ9XS26X+fF+HILhGHxYFkykdMmlCOxNdk9MQYC8icSviMPJfWiNgPoUxb +5aVGSHlJeki0VaXuf5URjvanAujWhbsGR0zyk+nobE+vSM+Z5qoOualxuNt7pSDZ +tH9Dx/6Q+gaR6HZ+CVwLMxTHjeDxGqAUBFTGOtjPYm4ozEAy8ASq3f1/nWXp19Hz +3LNEO2zejoO8CpWyjyrPPiLTldeCNj5nRDCx4NAZoeR25moZ4mjJXt78VVxWhTTx +hovJD+JeZ9M7EmmUvplVBDLWWdKfibzsOiD2uvPfhAX8DkTBN20gzD0xnZZ2Cw0M +U/xebg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFFTCCAv2gAwIBAgIUek0U09F785SwAT3V56Elsj+XvGQwDQYJKoZIhvcNAQEL +BQAwITEfMB0GA1UEAwwWSW50ZXItS01FIGttZTIgUm9vdCBDQTAeFw0yNDAyMDYx +NDM4NTRaFw0zNDAyMDMxNDM4NTRaMCExHzAdBgNVBAMMFkludGVyLUtNRSBrbWUy +IFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC0zi2Js02h +P8c7ieKgSZhbbgWNUrcDKDuqEvBBuIOH93rM9oNNX1KAp7pNATEfVwLPUUdsb5Cx +k03p4e3JLOZFIx+yo+mM+9lPOWMl4PvSkWkz280tzzz3i5LdHjbhib9TjAimma3n +cLmZXjZfKKNyovjhYDRXO9eX3sfBwFg/JvWLQJ0rMsbAiSkvK7UD9VciacT4ZbPh +s30j8JszpWatDlF7SKHtdRkPZ2jXCB/nugg/YKAelZ9f7aUtxT8GqQrkIY+8gvKY +M6SWoiD74QtXc7jAhbk947LIpAZj4hjO++eyUQTj0trdBdVq9FWtuDNlXM1RfMwX +uJgjX4I0EPJNuFtR/TKyBEAQnpmSnQBZNU9aYz4gHX0Xr4wy4ai3smO1apJcmI/5 +257THwPVT7r4+8v4S4FhTVooIsQ5NJFEtQ7I/i0XRWT9gsd0C/5dpK+l4yF7TGNF +odXwkCkv6Y1tXzEM163uXJdUi4K1ipBcUZHATy6JLrOQ+DxF2qDqhC+7rReylq/p +/+KzhdRIj3gDgjRe3ZM0oazIRCqSvfOcN8bppOzNVhbFM1CPsFmw33u6TAoqsZxU +JKM2YOyoMGg+DPHQySAAWIW7w/jQgnZZ+KMRWoNonsKen06UoGqAwP7D2zLD2OIw +NjBRvNejylgbqcN13oMlWSq5ctApzuO9TwIDAQABo0UwQzASBgNVHRMBAf8ECDAG +AQH/AgEBMA4GA1UdDwEB/wQEAwIBRjAdBgNVHQ4EFgQU/asgnJ30DOV4+jSUNNJJ +MC1z9+wwDQYJKoZIhvcNAQELBQADggIBALR793A5uM8MWAJoeyw9dNpacyYRUFbq +XubsZPywXTeL698by3lj8WaXxHUx9R9WjO+dgqxmgtV3m6bSIIQEMGuDvw5C2hTA +/XfYR1gDg1PA1xcHM1s2Mr+ColvhNDV9lKnFhGwCzApAAG08yJYNwWPNIewp1jax +VIlQC7OeeznZE02E2tZHqwslKtH8FFNfF7qsDs2vs4VIDEZ9+c1N8GOzQhnpJw6q +53buzHakun+Np+ZsERDxe8wayZImUNhkG2HEMfojzwEoOVOkl/9UnxbHycXpOB2p +Yxx/J4msu4w0+1eGzDFSQNaLxFSQI7WW0VxzPj91cbz82AMTmydF+HQkDxIZF6z5 +41ykQVyrWXOx4eTXuLJFiRTnAAZxPkXEcuxIJCNI1YHW+vSKFFv2nJqbLr3qdFkB +EUja1tl7jtldciguXVWiZ1M/jjJDHIzbbsQNQY0hSiMIgHzC5ljUq+S70P/CGrN4 +CUJEZ1K/0ibk1bvlgfN8+MP0lZr4MSC/G9Rd4exy6Kztgg9j+6Va46yze9mlvqL3 +T8bP/4v0EiuBA4wtiOqBq7d1VlXiIrwg+EYucZA0AjXOnIZRIhWlll3Z5Qr3tqbQ +Tu66Gevg0YbSUFtmdKgT63W1h4wuVMPDkWUogbpvt5y2fMhVQZgEB9c7jflARb5v +2TZRRWOar7pw +-----END CERTIFICATE----- diff --git a/certs/inter_kmes/client-kme1-to-kme2.pfx b/certs/inter_kmes/client-kme1-to-kme2.pfx new file mode 100644 index 0000000000000000000000000000000000000000..a4b026c5f06e05e50a200ae134b0263b6fbf741f GIT binary patch literal 7043 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 Q5y~vk2tZode@?ys0h!`UM*si- literal 0 HcmV?d00001 diff --git a/certs/inter_kmes/client-kme2-to-kme1.crt b/certs/inter_kmes/client-kme2-to-kme1.crt new file mode 100644 index 0000000..e4f52e6 --- /dev/null +++ b/certs/inter_kmes/client-kme2-to-kme1.crt @@ -0,0 +1,33 @@ +-----BEGIN CERTIFICATE----- +MIIFoDCCA4igAwIBAgIUbaPW6mZkPEGO04sF4O/p2YuXThMwDQYJKoZIhvcNAQEL +BQAwITEfMB0GA1UEAwwWSW50ZXItS01FIEtNRTEgUm9vdCBDQTAeFw0yNDAyMDYx +NDQ3MzNaFw0yNjAyMjUxNDQ3MzNaMCYxJDAiBgNVBAMMG0tNRSBuZXR3b3JrIENs +aWVudCAkMSB0byAkMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAM67 +uvY3Qgl3Pt9f4iwSPvlG7S8jopJC0yL0p5WzrpuvVqBoz6kTapsom4XcJ7Pq/Ibu +yv6ykpe3iU2u1JfpZELQi2nmAN0XLWc92OE+gRwc7sXinwXNL7Tu4ZOC5LmfOTBO +e4RQlnFGDfDQ2IPCAHM8Q3F+pG9WDQ3VLIlL0afGGWIsKy1jm46S+W4DcuhpGrk8 +53cCKAliK8ML0L1tYx57pc5PjmyBh3XufOEsDlB6aqSGUuxFNKCec4YapBQ3C3SE +5RZfC4lmFn2e1SiuHKAKcK9b3oK+fBa/0IIkYVRzk0ufEEZ7fHrWmYGh04IRg7jM +rKxLYsX8sQOT/QYXDoMJi+kR/Vk1HBWI8c5kuwk/9KDU6NvCcrbEeYQEhZjE2NEz +B2NtsgNpNOTEPI2EKSPDNzgncWvB1UNyFqqF9RycgdcwR8DpIvgP00+96CXcKWW1 +PJ+lqkJ2C4FTScfQ0HN9zrQD4HAvvfEAMc5m0v9Z1dPGzC67h4Y/1gCTTVvWs0MG +ZbzrI8kIYl6newSIEbPSdTnxUwTJY/ewqmomEoVSfaVp3VIY4OE0qPyFbKNmUaHj +V4RBmRzU5NFMhU5ZQ8YOEaiOJcPMjVgHZgOOFdRGI3Lc2l2A6Eyv3ofIjwDgamSo +zn5XoeVpHD8a/0HwpzC3ZMerKzAFI9Yh/AJL8RQzAgMBAAGjgcowgccwCQYDVR0T +BAIwADARBglghkgBhvhCAQEEBAMCBaAwOAYJYIZIAYb4QgENBCsWKUludGVyIEtN +RSBuZXR3b3JrIGNsaWVudCBhdXRoIGNlcnRpZmljYXRlMB0GA1UdDgQWBBR0O7LO +YSz0b62sKb0z5mb0ZNsLxDAfBgNVHSMEGDAWgBTFnK3cKILWJSYzIoqqSbjTFjiu +XzAOBgNVHQ8BAf8EBAMCBeAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwME +MA0GCSqGSIb3DQEBCwUAA4ICAQA+VV+ZdPBJxQCUua3HZ91pZCYf48+nRT79zjTb +H9FWdOkUJI//IoZ9o8sAHa6phsflFH4hdCh8M3sJM9kTO7R2qkTbo5UJBTAtYucY +mR/afXDbDFl5jtfqn04xNoIi8yhNHEPYQXE63eBfyIu7ifnHyZ4zzpCYc3wBdweB +O31hP/fnLVD7ZWvXUkBtystOfZL+M2FEL3NaPTp9EisQ/TiYsxhPF1gPQZCsxQxu +6bkpKnYXUTFTFSreE/sFqPmRHG9v09nwR6pln6bk2cxMlq9AeEjewCS8aQVvPjAW +VnYTbL4fGjxyz39WFFGKjTvye+xrsx+VPFErvwt5UNLtkzB6EgSuzhG7gz/xWdkP +WsdG05AFs6PmKcpgLbt9K+aQlrGrmMImlAJ0ZWoO8RstfLfmNlaFwJe3KcLKx6CI +sjhb24QrGEOWXlWNolxkAW7GToHWKpLEdLHnoyWFipWDw2T9VeCTc1QvfTjhsYWE +rsXTFwZNaE8vhUkRpN88Gm25G0Eiuwi82XE40soEYFYC301s/ttUXzciEikIJdGG +3HQnFH+gE0LcCaMQ/gKw2JfMiJ05ff0g4DyQgxi8QR84K0qi/ISpOCE4WpoGchUj +kkkwio4hDRgVSCmFxOCHb1/YyK/DpvhlSkvVeYMinbfOis+Du2tlnbvCcLVisOhp +qsuiIQ== +-----END CERTIFICATE----- diff --git a/certs/inter_kmes/client-kme2-to-kme1.csr b/certs/inter_kmes/client-kme2-to-kme1.csr new file mode 100644 index 0000000..9ed488a --- /dev/null +++ b/certs/inter_kmes/client-kme2-to-kme1.csr @@ -0,0 +1,26 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIEazCCAlMCAQAwJjEkMCIGA1UEAwwbS01FIG5ldHdvcmsgQ2xpZW50ICQxIHRv +ICQyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzru69jdCCXc+31/i +LBI++UbtLyOikkLTIvSnlbOum69WoGjPqRNqmyibhdwns+r8hu7K/rKSl7eJTa7U +l+lkQtCLaeYA3RctZz3Y4T6BHBzuxeKfBc0vtO7hk4LkuZ85ME57hFCWcUYN8NDY +g8IAczxDcX6kb1YNDdUsiUvRp8YZYiwrLWObjpL5bgNy6GkauTzndwIoCWIrwwvQ +vW1jHnulzk+ObIGHde584SwOUHpqpIZS7EU0oJ5zhhqkFDcLdITlFl8LiWYWfZ7V +KK4coApwr1vegr58Fr/QgiRhVHOTS58QRnt8etaZgaHTghGDuMysrEtixfyxA5P9 +BhcOgwmL6RH9WTUcFYjxzmS7CT/0oNTo28JytsR5hASFmMTY0TMHY22yA2k05MQ8 +jYQpI8M3OCdxa8HVQ3IWqoX1HJyB1zBHwOki+A/TT73oJdwpZbU8n6WqQnYLgVNJ +x9DQc33OtAPgcC+98QAxzmbS/1nV08bMLruHhj/WAJNNW9azQwZlvOsjyQhiXqd7 +BIgRs9J1OfFTBMlj97CqaiYShVJ9pWndUhjg4TSo/IVso2ZRoeNXhEGZHNTk0UyF +TllDxg4RqI4lw8yNWAdmA44V1EYjctzaXYDoTK/eh8iPAOBqZKjOfleh5WkcPxr/ +QfCnMLdkx6srMAUj1iH8AkvxFDMCAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4ICAQC2 +Pzt1cUT8T4h06tsfugit/iT0pzaqKF9nFnIZtuioVJk2IPUMJiUGfTpztnPNcXSD ++0yNix8Lj/ipc7oqmeNSgvjDp9zz/JDg4lEWghmrbSUNdmuZvhUjWMRGpsFfRutO +EqFzT3KP7i8sv58HjlCMyqFkdHs2X8jYGR6jHHYVTSseuGzub4cJyprLxyR9Xle2 +Bs6CFCl9bSwoKJqyt/5n0ZrGlSNYhr1G9rrr9xF3qvIwJgAcPZOi0z9dVI+6hnOi +vSBBw/Qfze0WXIy531z4EhqwbRSb22x2uIF1XLOx1rIi/58sJ7mWZ82LqLVxteY1 +F6yleYSBAbV6ILFUdVp6zMWtdqnd4n6KB/qwPa6VJRRtMEreeRUQNSun4ENNqRAW +nLuYx53N+RLJenW9RWxIkYgVy28CGEBJJ5J8KSifEe1yfXb5j4WVatKgH/lU8hhC +jj1sQZJxNVdqy0bOnwjNfbouh7q4cARlgcbazu9+UuA3Aeq0onsfnSIqEC8h09OZ +9YzI/TkrQ19L8oVdH/04XsjUuM6okC3i279Y9UfW1QNmc7MLge7gWf5Z2h4mgTuc +fj7OlXosdJhwXhVGYbX1mH9M02yTferOEtITp+o0vVIfPVnfV/ehxZJwiFQ4xF48 +d6ONlFE62C84eo73QngMA4M2QZQgnDwL59r6tJRsyg== +-----END CERTIFICATE REQUEST----- diff --git a/certs/inter_kmes/client-kme2-to-kme1.key b/certs/inter_kmes/client-kme2-to-kme1.key new file mode 100644 index 0000000..cf3a032 --- /dev/null +++ b/certs/inter_kmes/client-kme2-to-kme1.key @@ -0,0 +1,52 @@ +-----BEGIN PRIVATE KEY----- +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 +ugdZ90OGITKH5d9ZrEXJp7a6QTBZfA== +-----END PRIVATE KEY----- diff --git a/certs/inter_kmes/client-kme2-to-kme1.pem b/certs/inter_kmes/client-kme2-to-kme1.pem new file mode 100644 index 0000000..fc264e0 --- /dev/null +++ b/certs/inter_kmes/client-kme2-to-kme1.pem @@ -0,0 +1,115 @@ +-----BEGIN PRIVATE KEY----- +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 +ugdZ90OGITKH5d9ZrEXJp7a6QTBZfA== +-----END PRIVATE KEY----- +-----BEGIN CERTIFICATE----- +MIIFoDCCA4igAwIBAgIUbaPW6mZkPEGO04sF4O/p2YuXThMwDQYJKoZIhvcNAQEL +BQAwITEfMB0GA1UEAwwWSW50ZXItS01FIEtNRTEgUm9vdCBDQTAeFw0yNDAyMDYx +NDQ3MzNaFw0yNjAyMjUxNDQ3MzNaMCYxJDAiBgNVBAMMG0tNRSBuZXR3b3JrIENs +aWVudCAkMSB0byAkMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAM67 +uvY3Qgl3Pt9f4iwSPvlG7S8jopJC0yL0p5WzrpuvVqBoz6kTapsom4XcJ7Pq/Ibu +yv6ykpe3iU2u1JfpZELQi2nmAN0XLWc92OE+gRwc7sXinwXNL7Tu4ZOC5LmfOTBO +e4RQlnFGDfDQ2IPCAHM8Q3F+pG9WDQ3VLIlL0afGGWIsKy1jm46S+W4DcuhpGrk8 +53cCKAliK8ML0L1tYx57pc5PjmyBh3XufOEsDlB6aqSGUuxFNKCec4YapBQ3C3SE +5RZfC4lmFn2e1SiuHKAKcK9b3oK+fBa/0IIkYVRzk0ufEEZ7fHrWmYGh04IRg7jM +rKxLYsX8sQOT/QYXDoMJi+kR/Vk1HBWI8c5kuwk/9KDU6NvCcrbEeYQEhZjE2NEz +B2NtsgNpNOTEPI2EKSPDNzgncWvB1UNyFqqF9RycgdcwR8DpIvgP00+96CXcKWW1 +PJ+lqkJ2C4FTScfQ0HN9zrQD4HAvvfEAMc5m0v9Z1dPGzC67h4Y/1gCTTVvWs0MG +ZbzrI8kIYl6newSIEbPSdTnxUwTJY/ewqmomEoVSfaVp3VIY4OE0qPyFbKNmUaHj +V4RBmRzU5NFMhU5ZQ8YOEaiOJcPMjVgHZgOOFdRGI3Lc2l2A6Eyv3ofIjwDgamSo +zn5XoeVpHD8a/0HwpzC3ZMerKzAFI9Yh/AJL8RQzAgMBAAGjgcowgccwCQYDVR0T +BAIwADARBglghkgBhvhCAQEEBAMCBaAwOAYJYIZIAYb4QgENBCsWKUludGVyIEtN +RSBuZXR3b3JrIGNsaWVudCBhdXRoIGNlcnRpZmljYXRlMB0GA1UdDgQWBBR0O7LO +YSz0b62sKb0z5mb0ZNsLxDAfBgNVHSMEGDAWgBTFnK3cKILWJSYzIoqqSbjTFjiu +XzAOBgNVHQ8BAf8EBAMCBeAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwME +MA0GCSqGSIb3DQEBCwUAA4ICAQA+VV+ZdPBJxQCUua3HZ91pZCYf48+nRT79zjTb +H9FWdOkUJI//IoZ9o8sAHa6phsflFH4hdCh8M3sJM9kTO7R2qkTbo5UJBTAtYucY +mR/afXDbDFl5jtfqn04xNoIi8yhNHEPYQXE63eBfyIu7ifnHyZ4zzpCYc3wBdweB +O31hP/fnLVD7ZWvXUkBtystOfZL+M2FEL3NaPTp9EisQ/TiYsxhPF1gPQZCsxQxu +6bkpKnYXUTFTFSreE/sFqPmRHG9v09nwR6pln6bk2cxMlq9AeEjewCS8aQVvPjAW +VnYTbL4fGjxyz39WFFGKjTvye+xrsx+VPFErvwt5UNLtkzB6EgSuzhG7gz/xWdkP +WsdG05AFs6PmKcpgLbt9K+aQlrGrmMImlAJ0ZWoO8RstfLfmNlaFwJe3KcLKx6CI +sjhb24QrGEOWXlWNolxkAW7GToHWKpLEdLHnoyWFipWDw2T9VeCTc1QvfTjhsYWE +rsXTFwZNaE8vhUkRpN88Gm25G0Eiuwi82XE40soEYFYC301s/ttUXzciEikIJdGG +3HQnFH+gE0LcCaMQ/gKw2JfMiJ05ff0g4DyQgxi8QR84K0qi/ISpOCE4WpoGchUj +kkkwio4hDRgVSCmFxOCHb1/YyK/DpvhlSkvVeYMinbfOis+Du2tlnbvCcLVisOhp +qsuiIQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFFTCCAv2gAwIBAgIUNShk38tjlkIH+MlYr5tzZClmosMwDQYJKoZIhvcNAQEL +BQAwITEfMB0GA1UEAwwWSW50ZXItS01FIEtNRTEgUm9vdCBDQTAeFw0yNDAyMDYx +NDMyMjVaFw0zNDAyMDMxNDMyMjVaMCExHzAdBgNVBAMMFkludGVyLUtNRSBLTUUx +IFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCYAFV4JzHS +Ln0D/9xQINoTit5utaH4wDbBmJ0xxV+1+mi1CTWwKEo6EDV1D8c7k3dBc0QbGRpK +v7bylLrOZQHQwkAW7iSECeb6rgtiPiAIhgcj6dG7/RhffJCDVyl1kAqG6Zln+h0H +8i/48wUvJsomUtxXtz7IYdgbD2EqJs/9c78hCKQ3EOYG9VlY4cCLI1afVE0Pee9R +4W04c92vNt9pdvndzO+XD773gTbI108djFogEWjnpaX512HoIQdVULv3PjZXsVyF +KYKvTjVv/Ix6uEA5C40XxgXqRHi199csktahj0mt/gJzrEIMeK8o04duGzbAPDea +fUDStOLKgMD1vr4G3kPzBoaQ6RknwyQXrAuPEJMHMFku92r4axBRZGXdYKWMa+/v +HH14yFJFaZRmZagAdspFQNqpERuvmC0KTNIxvCA5e2KfAc9zExxnKI3qcws1BEaJ +uUrfTSEmV0nBTWOlsFh+wS1ln2NIzj+GuzJu0YcN/l1eXaYw+bOM9w0C3zRU95/8 +olanOTQGbODGdpnE9rfZ/g8q65ScBsG+DGmLi9kkEj1o8nGzT1ICPuqLbXpZAmDX +nV8t6mvxy/qa7BG53bETkh/4zSJOCAdm00dQsebHZ+Tj6GGcDdwH2WF0XTHUUGNK +t5Yqd/sAJy6HE+Oc4mOrrj6gLoMkr/G0+wIDAQABo0UwQzASBgNVHRMBAf8ECDAG +AQH/AgEBMA4GA1UdDwEB/wQEAwIBRjAdBgNVHQ4EFgQUxZyt3CiC1iUmMyKKqkm4 +0xY4rl8wDQYJKoZIhvcNAQELBQADggIBAG41+VOSZm3MiXiFA/TInIxIjp/wYWyg ++f4Z+OeQ+hOJWcb5e8mIrEokOamXy84Fzs/3KcsrMt1Vnf/KcrxpGVjI100kNC2l +5M3qx5LXrCao1pZ5nEtXiGKW9C/7JOJ95DwpCvYbG0/OLhWdBT9u91Y1E+jC8x1g +RlBy/mRmQGASSBgqI6VQ7tl/apuEqkQ82sIiNgk2S+qboOumNDqk+Xe82Oe5VkLX +NEfVkc7dp9fzAmi0sn6rWUAnU2XDRR+F3LW2InbI4PS30wU9j1L3sqCREIBJ2f4N +ZEqI0tDDII2RuFN3QSDPT8TRTy2bfY7YFP+9CZuThiP0zdmeZzN+YN4AfyB7PdV/ +9oVrOx93jwb7aet7PbRLibFBBfIMd1MRVSb+LLOxwRXOK5jJxsNFjJlsIFN3R+D8 +O6/pXCD7v5tcj8FibxE3v1GLIVe+S2mYcwVZ9SIcfR+QV2FUnUroP71suQjp/Nkv +KFDzhcLuumwwUtb5LcNDobiQ1w/zrlooRp6r0S4YS9va5RY3zYjl4AyzlhFBW7Dh +xCLMLixM9PKr5+7QPlQwvtU6qfIil0ef7VLEKXXHWb530HqTY4wEQyOiU7PM7yu4 +lIlqRK7m5tNFbw+rv8EKIl6LwLep854/N8mzrZoJiSntkVJ/mM3/5mNurPu9Xskv +yLkPQ6grE38m +-----END CERTIFICATE----- diff --git a/certs/inter_kmes/client-kme2-to-kme1.pfx b/certs/inter_kmes/client-kme2-to-kme1.pfx new file mode 100644 index 0000000000000000000000000000000000000000..769dcaa2a2dfe53a887686b793b37ed06e1df82c GIT binary patch literal 7043 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 S1%n9`wu*idqyL{%?|%R_gJjJB literal 0 HcmV?d00001 diff --git a/certs/inter_kmes/generate_kme_ca.sh b/certs/inter_kmes/generate_kme_ca.sh new file mode 100755 index 0000000..74f359e --- /dev/null +++ b/certs/inter_kmes/generate_kme_ca.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +ARGC=$# + +if [ $ARGC -ne 1 ] +then + echo "Invalid number of arguments" + exit +fi + +openssl genrsa -out "root-ca-$1.key" 4096 +openssl req -new -key "root-ca-$1.key" -out "root-ca-$1.csr" -sha256 -subj "/CN=Inter-KME $1 Root CA" +openssl x509 -req -days 3650 -in "root-ca-$1.csr" -signkey "root-ca-$1.key" -sha256 -out "root-ca-$1.crt" -extfile "root-ca.cnf" -extensions root_ca diff --git a/certs/inter_kmes/generate_kme_clients.sh b/certs/inter_kmes/generate_kme_clients.sh new file mode 100755 index 0000000..2436878 --- /dev/null +++ b/certs/inter_kmes/generate_kme_clients.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +ARGC=$# + +if [ $ARGC -ne 2 ] +then + echo "Invalid number of arguments" + echo "Usage: $0 kmeclient kmeserver" + exit +fi + +openssl genrsa -out "client-$1-to-$2.key" 4096 +openssl req -new -key "client-$1-to-$2.key" -out "client-$1-to-$2.csr" -sha256 -subj '/CN=KME network Client $1 to $2' +openssl x509 -req -days 750 -in "client-$1-to-$2.csr" -sha256 -CA "root-ca-$2.crt" -CAkey "root-ca-$2.key" -CAcreateserial -out "client-$1-to-$2.crt" -extfile "inter-kme-client.cnf" -extensions client +cat "client-$1-to-$2.key" "client-$1-to-$2.crt" "root-ca-$2.crt" > "client-$1-to-$2.pem" +openssl pkcs12 -export -out "client-$1-to-$2.pfx" -inkey "client-$1-to-$2.key" -in "client-$1-to-$2.pem" -certfile "root-ca-$2.crt" diff --git a/certs/inter_kmes/inter-kme-client.cnf b/certs/inter_kmes/inter-kme-client.cnf new file mode 100644 index 0000000..7d549cc --- /dev/null +++ b/certs/inter_kmes/inter-kme-client.cnf @@ -0,0 +1,8 @@ +[client] +basicConstraints = CA:FALSE +nsCertType = client, email +nsComment = "Inter KME network client auth certificate" +subjectKeyIdentifier = hash +authorityKeyIdentifier = keyid,issuer +keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment +extendedKeyUsage = clientAuth, emailProtection diff --git a/certs/inter_kmes/root-ca-kme1.crt b/certs/inter_kmes/root-ca-kme1.crt new file mode 100644 index 0000000..0c260bc --- /dev/null +++ b/certs/inter_kmes/root-ca-kme1.crt @@ -0,0 +1,30 @@ +-----BEGIN CERTIFICATE----- +MIIFFTCCAv2gAwIBAgIUNShk38tjlkIH+MlYr5tzZClmosMwDQYJKoZIhvcNAQEL +BQAwITEfMB0GA1UEAwwWSW50ZXItS01FIEtNRTEgUm9vdCBDQTAeFw0yNDAyMDYx +NDMyMjVaFw0zNDAyMDMxNDMyMjVaMCExHzAdBgNVBAMMFkludGVyLUtNRSBLTUUx +IFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCYAFV4JzHS +Ln0D/9xQINoTit5utaH4wDbBmJ0xxV+1+mi1CTWwKEo6EDV1D8c7k3dBc0QbGRpK +v7bylLrOZQHQwkAW7iSECeb6rgtiPiAIhgcj6dG7/RhffJCDVyl1kAqG6Zln+h0H +8i/48wUvJsomUtxXtz7IYdgbD2EqJs/9c78hCKQ3EOYG9VlY4cCLI1afVE0Pee9R +4W04c92vNt9pdvndzO+XD773gTbI108djFogEWjnpaX512HoIQdVULv3PjZXsVyF +KYKvTjVv/Ix6uEA5C40XxgXqRHi199csktahj0mt/gJzrEIMeK8o04duGzbAPDea +fUDStOLKgMD1vr4G3kPzBoaQ6RknwyQXrAuPEJMHMFku92r4axBRZGXdYKWMa+/v +HH14yFJFaZRmZagAdspFQNqpERuvmC0KTNIxvCA5e2KfAc9zExxnKI3qcws1BEaJ +uUrfTSEmV0nBTWOlsFh+wS1ln2NIzj+GuzJu0YcN/l1eXaYw+bOM9w0C3zRU95/8 +olanOTQGbODGdpnE9rfZ/g8q65ScBsG+DGmLi9kkEj1o8nGzT1ICPuqLbXpZAmDX +nV8t6mvxy/qa7BG53bETkh/4zSJOCAdm00dQsebHZ+Tj6GGcDdwH2WF0XTHUUGNK +t5Yqd/sAJy6HE+Oc4mOrrj6gLoMkr/G0+wIDAQABo0UwQzASBgNVHRMBAf8ECDAG +AQH/AgEBMA4GA1UdDwEB/wQEAwIBRjAdBgNVHQ4EFgQUxZyt3CiC1iUmMyKKqkm4 +0xY4rl8wDQYJKoZIhvcNAQELBQADggIBAG41+VOSZm3MiXiFA/TInIxIjp/wYWyg ++f4Z+OeQ+hOJWcb5e8mIrEokOamXy84Fzs/3KcsrMt1Vnf/KcrxpGVjI100kNC2l +5M3qx5LXrCao1pZ5nEtXiGKW9C/7JOJ95DwpCvYbG0/OLhWdBT9u91Y1E+jC8x1g +RlBy/mRmQGASSBgqI6VQ7tl/apuEqkQ82sIiNgk2S+qboOumNDqk+Xe82Oe5VkLX +NEfVkc7dp9fzAmi0sn6rWUAnU2XDRR+F3LW2InbI4PS30wU9j1L3sqCREIBJ2f4N +ZEqI0tDDII2RuFN3QSDPT8TRTy2bfY7YFP+9CZuThiP0zdmeZzN+YN4AfyB7PdV/ +9oVrOx93jwb7aet7PbRLibFBBfIMd1MRVSb+LLOxwRXOK5jJxsNFjJlsIFN3R+D8 +O6/pXCD7v5tcj8FibxE3v1GLIVe+S2mYcwVZ9SIcfR+QV2FUnUroP71suQjp/Nkv +KFDzhcLuumwwUtb5LcNDobiQ1w/zrlooRp6r0S4YS9va5RY3zYjl4AyzlhFBW7Dh +xCLMLixM9PKr5+7QPlQwvtU6qfIil0ef7VLEKXXHWb530HqTY4wEQyOiU7PM7yu4 +lIlqRK7m5tNFbw+rv8EKIl6LwLep854/N8mzrZoJiSntkVJ/mM3/5mNurPu9Xskv +yLkPQ6grE38m +-----END CERTIFICATE----- diff --git a/certs/inter_kmes/root-ca-kme1.csr b/certs/inter_kmes/root-ca-kme1.csr new file mode 100644 index 0000000..54fa204 --- /dev/null +++ b/certs/inter_kmes/root-ca-kme1.csr @@ -0,0 +1,26 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIEZjCCAk4CAQAwITEfMB0GA1UEAwwWSW50ZXItS01FIEtNRTEgUm9vdCBDQTCC +AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJgAVXgnMdIufQP/3FAg2hOK +3m61ofjANsGYnTHFX7X6aLUJNbAoSjoQNXUPxzuTd0FzRBsZGkq/tvKUus5lAdDC +QBbuJIQJ5vquC2I+IAiGByPp0bv9GF98kINXKXWQCobpmWf6HQfyL/jzBS8myiZS +3Fe3Pshh2BsPYSomz/1zvyEIpDcQ5gb1WVjhwIsjVp9UTQ9571HhbThz3a8232l2 ++d3M75cPvveBNsjXTx2MWiARaOelpfnXYeghB1VQu/c+NlexXIUpgq9ONW/8jHq4 +QDkLjRfGBepEeLX31yyS1qGPSa3+AnOsQgx4ryjTh24bNsA8N5p9QNK04sqAwPW+ +vgbeQ/MGhpDpGSfDJBesC48QkwcwWS73avhrEFFkZd1gpYxr7+8cfXjIUkVplGZl +qAB2ykVA2qkRG6+YLQpM0jG8IDl7Yp8Bz3MTHGcojepzCzUERom5St9NISZXScFN +Y6WwWH7BLWWfY0jOP4a7Mm7Rhw3+XV5dpjD5s4z3DQLfNFT3n/yiVqc5NAZs4MZ2 +mcT2t9n+DyrrlJwGwb4MaYuL2SQSPWjycbNPUgI+6ottelkCYNedXy3qa/HL+prs +EbndsROSH/jNIk4IB2bTR1Cx5sdn5OPoYZwN3AfZYXRdMdRQY0q3lip3+wAnLocT +45ziY6uuPqAugySv8bT7AgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAgEAH5ExS7Tb +NhpkIYcK9WYlSjpjozv+ojfDjdoimjU2H2b4ko7Utp0ae/2qwqW1hvy6YQa7CJxq +R+aJOIrRskRy7XM0FGlR+hl5B768ERg9MHWkFFDy2/hEvFInwqg7tD95xPj0XqmK +eXqLvG8o9pIVJ5tl27SXY/f5q/8YIBI27Du5pm7DDG2nC9acpXSlog7E7n/jcVEw +7ykz443Z6XLVaSy4GiklZQ7/woIwuTxI+knMuNZnsPnha8i/CY8EJQavm/2off9O +B/RXtoFnWTz54d6Qub4ybOhHYFfHZVGNHgw2ETBsLiltzwoTJc0sUWzYKzUjoWc3 +JgmDrZVpQXuy4DWHZ89/Jbwlpz6BPW5ZgttIbktbmXTveoVUwa1MVNEcueHGs3UL +1kCUSxQUXYon8KPYHoliPQzrlJ3Cy/gm1RXmOS22hr9E2j7rGzAYlGEXXw3tZnAQ +BVoMrtu58mpvMYIWxmxLbW/lXc7gkNJ2N0mayShrYblGqMOn8Np8YJVVX00lfAAU +Jie/dzcHvrfdrcKJkmVK//Vdq3eMSdf6fULS6NWT0gvKRoTtdVHBHqtMN2XGtG+T +w/SAUHhk8MeKg2LVmR7vPt1DzfOLzH9/CZli0/n17Stygtbz9duQJCLSoAi2DC9p +uYXeWeHB7zL/7WGgIp/W7voTy+VCD7xSlUQ= +-----END CERTIFICATE REQUEST----- diff --git a/certs/inter_kmes/root-ca-kme1.key b/certs/inter_kmes/root-ca-kme1.key new file mode 100644 index 0000000..afbc0f2 --- /dev/null +++ b/certs/inter_kmes/root-ca-kme1.key @@ -0,0 +1,52 @@ +-----BEGIN PRIVATE KEY----- +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 ++VLcPohkFwIz6POauRDOGxuKoeynkrs= +-----END PRIVATE KEY----- diff --git a/certs/inter_kmes/root-ca-kme1.srl b/certs/inter_kmes/root-ca-kme1.srl new file mode 100644 index 0000000..9186165 --- /dev/null +++ b/certs/inter_kmes/root-ca-kme1.srl @@ -0,0 +1 @@ +6DA3D6EA66643C418ED38B05E0EFE9D98B974E13 diff --git a/certs/inter_kmes/root-ca-kme2.crt b/certs/inter_kmes/root-ca-kme2.crt new file mode 100644 index 0000000..d7eba58 --- /dev/null +++ b/certs/inter_kmes/root-ca-kme2.crt @@ -0,0 +1,30 @@ +-----BEGIN CERTIFICATE----- +MIIFFTCCAv2gAwIBAgIUek0U09F785SwAT3V56Elsj+XvGQwDQYJKoZIhvcNAQEL +BQAwITEfMB0GA1UEAwwWSW50ZXItS01FIGttZTIgUm9vdCBDQTAeFw0yNDAyMDYx +NDM4NTRaFw0zNDAyMDMxNDM4NTRaMCExHzAdBgNVBAMMFkludGVyLUtNRSBrbWUy +IFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC0zi2Js02h +P8c7ieKgSZhbbgWNUrcDKDuqEvBBuIOH93rM9oNNX1KAp7pNATEfVwLPUUdsb5Cx +k03p4e3JLOZFIx+yo+mM+9lPOWMl4PvSkWkz280tzzz3i5LdHjbhib9TjAimma3n +cLmZXjZfKKNyovjhYDRXO9eX3sfBwFg/JvWLQJ0rMsbAiSkvK7UD9VciacT4ZbPh +s30j8JszpWatDlF7SKHtdRkPZ2jXCB/nugg/YKAelZ9f7aUtxT8GqQrkIY+8gvKY +M6SWoiD74QtXc7jAhbk947LIpAZj4hjO++eyUQTj0trdBdVq9FWtuDNlXM1RfMwX +uJgjX4I0EPJNuFtR/TKyBEAQnpmSnQBZNU9aYz4gHX0Xr4wy4ai3smO1apJcmI/5 +257THwPVT7r4+8v4S4FhTVooIsQ5NJFEtQ7I/i0XRWT9gsd0C/5dpK+l4yF7TGNF +odXwkCkv6Y1tXzEM163uXJdUi4K1ipBcUZHATy6JLrOQ+DxF2qDqhC+7rReylq/p +/+KzhdRIj3gDgjRe3ZM0oazIRCqSvfOcN8bppOzNVhbFM1CPsFmw33u6TAoqsZxU +JKM2YOyoMGg+DPHQySAAWIW7w/jQgnZZ+KMRWoNonsKen06UoGqAwP7D2zLD2OIw +NjBRvNejylgbqcN13oMlWSq5ctApzuO9TwIDAQABo0UwQzASBgNVHRMBAf8ECDAG +AQH/AgEBMA4GA1UdDwEB/wQEAwIBRjAdBgNVHQ4EFgQU/asgnJ30DOV4+jSUNNJJ +MC1z9+wwDQYJKoZIhvcNAQELBQADggIBALR793A5uM8MWAJoeyw9dNpacyYRUFbq +XubsZPywXTeL698by3lj8WaXxHUx9R9WjO+dgqxmgtV3m6bSIIQEMGuDvw5C2hTA +/XfYR1gDg1PA1xcHM1s2Mr+ColvhNDV9lKnFhGwCzApAAG08yJYNwWPNIewp1jax +VIlQC7OeeznZE02E2tZHqwslKtH8FFNfF7qsDs2vs4VIDEZ9+c1N8GOzQhnpJw6q +53buzHakun+Np+ZsERDxe8wayZImUNhkG2HEMfojzwEoOVOkl/9UnxbHycXpOB2p +Yxx/J4msu4w0+1eGzDFSQNaLxFSQI7WW0VxzPj91cbz82AMTmydF+HQkDxIZF6z5 +41ykQVyrWXOx4eTXuLJFiRTnAAZxPkXEcuxIJCNI1YHW+vSKFFv2nJqbLr3qdFkB +EUja1tl7jtldciguXVWiZ1M/jjJDHIzbbsQNQY0hSiMIgHzC5ljUq+S70P/CGrN4 +CUJEZ1K/0ibk1bvlgfN8+MP0lZr4MSC/G9Rd4exy6Kztgg9j+6Va46yze9mlvqL3 +T8bP/4v0EiuBA4wtiOqBq7d1VlXiIrwg+EYucZA0AjXOnIZRIhWlll3Z5Qr3tqbQ +Tu66Gevg0YbSUFtmdKgT63W1h4wuVMPDkWUogbpvt5y2fMhVQZgEB9c7jflARb5v +2TZRRWOar7pw +-----END CERTIFICATE----- diff --git a/certs/inter_kmes/root-ca-kme2.csr b/certs/inter_kmes/root-ca-kme2.csr new file mode 100644 index 0000000..0f45215 --- /dev/null +++ b/certs/inter_kmes/root-ca-kme2.csr @@ -0,0 +1,26 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIEZjCCAk4CAQAwITEfMB0GA1UEAwwWSW50ZXItS01FIGttZTIgUm9vdCBDQTCC +AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALTOLYmzTaE/xzuJ4qBJmFtu +BY1StwMoO6oS8EG4g4f3esz2g01fUoCnuk0BMR9XAs9RR2xvkLGTTenh7cks5kUj +H7Kj6Yz72U85YyXg+9KRaTPbzS3PPPeLkt0eNuGJv1OMCKaZredwuZleNl8oo3Ki ++OFgNFc715fex8HAWD8m9YtAnSsyxsCJKS8rtQP1VyJpxPhls+GzfSPwmzOlZq0O +UXtIoe11GQ9naNcIH+e6CD9goB6Vn1/tpS3FPwapCuQhj7yC8pgzpJaiIPvhC1dz +uMCFuT3jssikBmPiGM7757JRBOPS2t0F1Wr0Va24M2VczVF8zBe4mCNfgjQQ8k24 +W1H9MrIEQBCemZKdAFk1T1pjPiAdfRevjDLhqLeyY7VqklyYj/nbntMfA9VPuvj7 +y/hLgWFNWigixDk0kUS1Dsj+LRdFZP2Cx3QL/l2kr6XjIXtMY0Wh1fCQKS/pjW1f +MQzXre5cl1SLgrWKkFxRkcBPLokus5D4PEXaoOqEL7utF7KWr+n/4rOF1EiPeAOC +NF7dkzShrMhEKpK985w3xumk7M1WFsUzUI+wWbDfe7pMCiqxnFQkozZg7KgwaD4M +8dDJIABYhbvD+NCCdln4oxFag2iewp6fTpSgaoDA/sPbMsPY4jA2MFG816PKWBup +w3XegyVZKrly0CnO471PAgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAgEAnv7DpbI0 +8tf4wz/D5NWueBKinibURH57lgJJxObGfmHaD4jSYSHA/bCx57rZZfKIt9xIkb4t +n5Hrb0kilQCyLU57fHzlRARo6EWTGO5q7EXIaMKHwYNlqltuGdesfGZVvbGnoEmY +tTSYzqBtYxUEqYZ/jflhonFHRTe+JHmRzLCllEoQ7/md30GnncbBz2ZgJvHCyvmx +jGYWkwCv6M1nZ4wyEmn+kCd6diTGBRm7eMOn6pFkmO9ZcjREgNjuDDUqletd9Zj/ +4v823sq5MtuiP/HVva5gESpQAU6fk1s/Z19os/wl4TtqjESpOAUgGuQDTRPJNULF +7UnKI3ISZjtRU+EQyT7HAjLAU/Zlenr2F916r93oINwwKbuoHI8qobAHZxelfinZ +u2mo6/lbRfk+S5/7ZpJZ2zvwzjNqafO/s0i8wIFNCtDpBr4P3VmAAgA+AbNWOrJf +YIxFKKM+XUlMBDz31X4lrlmry++Yq3smvx6kjBJVdPylGt05Tt8bhsFJK756c1Xb +3o4ol7FaDNoW/bpsiUWLPkne1qBciQGU8qFH2YeHTjcNz+anGAxBJoo+i9/1CTRp +G+yzgX4g1RLJ5w+vXxzu8ooaRFIOlI5Bde4Ka0TfCEq4pZEoMCeP2EwLRVXurocf +u/ANsAXRmlYO2t4UajaWBBhif1fSIYKA5yc= +-----END CERTIFICATE REQUEST----- diff --git a/certs/inter_kmes/root-ca-kme2.key b/certs/inter_kmes/root-ca-kme2.key new file mode 100644 index 0000000..6216766 --- /dev/null +++ b/certs/inter_kmes/root-ca-kme2.key @@ -0,0 +1,52 @@ +-----BEGIN PRIVATE KEY----- +MIIJRAIBADANBgkqhkiG9w0BAQEFAASCCS4wggkqAgEAAoICAQC0zi2Js02hP8c7 +ieKgSZhbbgWNUrcDKDuqEvBBuIOH93rM9oNNX1KAp7pNATEfVwLPUUdsb5Cxk03p +4e3JLOZFIx+yo+mM+9lPOWMl4PvSkWkz280tzzz3i5LdHjbhib9TjAimma3ncLmZ +XjZfKKNyovjhYDRXO9eX3sfBwFg/JvWLQJ0rMsbAiSkvK7UD9VciacT4ZbPhs30j +8JszpWatDlF7SKHtdRkPZ2jXCB/nugg/YKAelZ9f7aUtxT8GqQrkIY+8gvKYM6SW +oiD74QtXc7jAhbk947LIpAZj4hjO++eyUQTj0trdBdVq9FWtuDNlXM1RfMwXuJgj +X4I0EPJNuFtR/TKyBEAQnpmSnQBZNU9aYz4gHX0Xr4wy4ai3smO1apJcmI/5257T +HwPVT7r4+8v4S4FhTVooIsQ5NJFEtQ7I/i0XRWT9gsd0C/5dpK+l4yF7TGNFodXw +kCkv6Y1tXzEM163uXJdUi4K1ipBcUZHATy6JLrOQ+DxF2qDqhC+7rReylq/p/+Kz +hdRIj3gDgjRe3ZM0oazIRCqSvfOcN8bppOzNVhbFM1CPsFmw33u6TAoqsZxUJKM2 +YOyoMGg+DPHQySAAWIW7w/jQgnZZ+KMRWoNonsKen06UoGqAwP7D2zLD2OIwNjBR +vNejylgbqcN13oMlWSq5ctApzuO9TwIDAQABAoICAA5RueI1n3NNgB44rbMba66U +sxSIitKm2rrTJHtVUqLFDdEHwPRdappNLlWvlNAHmG204TQ2+GhSjebKVtu0655p +dAw2K7wCV36NFqDHBbVH1jjI3UzAefKc94pS50PLdf9MOtnUQqVEFImPSue/FIVy +tMVHVOiHu8EHtXL5zxiz9tm1dKfELgt3kW8ZRg0Z3scXRgXqKr84SN6SIqiKHpdG +vVtHMFPZufIHXZKSI9IQC1vW74zHNXJnzsomMfdOvKcT+rSSUQY5fifT5UrYKDQf +3RpE55vS2bOcPJ6n0bvVes8bgt323WXdyBOKuvJhgT3eMKtAd/rKSs+aXnnN0cgF +wpqKewIwED+SExmyayl5LB3xzo7YypmUVe9Zs0XxPEikADhPVG2BhtLdBqX/N/Am +QEyfn/sI1TwEwMRWPsycsJ2aaGRqXaiEFe6ssb8Ie2GKbROLRgVJpYK3f6Qg5a7m +f9RwYD3RRwqkyD773A2FFTqs3/NQ68nORPrQzQppt9NlUb4YvUr4eVSkjcK7lbpA +DFuUEob4UdzgGHKpsUZAPTbFP+F0yZE0SRfFDeabj69HL0TpbSS4/I/anaoCOGeX +9+5hSvNnBk6YRtbRHBhMBZiycJOlXUwitz+TWJNRZHBTqT6GzuEhPoyaqWm0Vlgz +F97ddSH1m1P2Qn2FY6C5AoIBAQDrRa5opODCnkGkC8BNXJaOX77DKtZfakQluvEK +L2tCgeUYPWX5uGHSxMHCu+TFTqVBPkXYtcg2WB96UjDCqknw1Jug2+Z+ZDZePbJX +q63FLADIT9F9yXhsow+cUhVD3uYaQt5LkxfjZLBaTsWIHQ1p5afE5ruaDnRw+zOS +r1JSvQGN9qKCeCx3GMZabaVlglov7D6chY2CVRw/BYkoIXhSVBzXlv2NSlRVJgtx +mBf2grtZP4W/VEamuJPwaeTsLXl2cCCfCt3ZliP88GBX/p3TKXXmz/BqL7voa531 +QICdSbyvbcMcRB5Eq3bvNTY8kiSFF/5FvTRbAzLidu7gOMYtAoIBAQDEvA329UNR +uPmo2/4RQPTUVTTXTuL8jztuWjEbQu4TFDYCrtiwALymiTFP+XdpTFCpUV2NQG1E +kZHKnrssJ1HL6QszCBZA+U2bvqzPYVlmSsZoLO2Cb3z1y+RWvzvlmLR49mOK1pUY +d4x6Dr5WLoR+zwL7KkhI6dTC5Ucyyp6EsVP77CsqhnDAMifNnnkCUIWCB14Zhj6A +J32gTBRyGRoBp4Z2O4VXG/L4p25jVj0uLI/uFDZUxpLrTLpzZTAT21Ja6mYjA1xe +Zb0rAS7hxVDINiXhwkMWhdLIWB92O85bt3E1luTAfnDmRdgx+NKk753MdhoyXQt5 +sWc3EayTwlrrAoIBAQCNqV5Tyfs/lBTIFv9KVZad0Y7GazO7Lfwsj7x1Oool+Jqe +FtIhI+FbDHfyrjoYh7s/ZqSd0Q7lkfgaKgUMIYb2CL5QhDfsIKEP66xH16qBD3bF +JjJov/fPyfsrT81YGY2JgHvjG4WFuOnq5oVP6NZbzhlPmPKa11tLcCXki8ZQ5Vdb +SIcfcgasC3Hbnyu4zF1Lf79Pdab4NBEW7VlhnY2aXOUk9thiy7+tqYO4eTDskFkI +axQ4WSFVX8xMNSbPAq6hHvC1ctCUJDA1K/OG6FvVeqBwQwJqnaVSVAI/WwBWNMD1 +DG0vxuBGzsuFSxAGNqTgssq66SruJiXscFpzDhxdAoIBAQC4PmXVolwpbNJjEaQf +BHZFZIbYHUj2vi0qa80Retz7gTIT0SudqRMD4/gKrdbnBlGEQG8cmfm6/ZlL6Nvh +vfEcxmN2p1wv/UpxUWEF1mWjJuQpK+pC/aZJi2mM1AuEOj7KCfWvUMbQ4yTsKmKW +03nCSJzCHBcWMebPn2nOZ3ONUYUVqVfDu6RcWpxsNL2fLUnbPIsj3FUsL8+3D4kW +UevJINsMXzHBIqupsyPuZBVn6NPiY4t+WXm+Y106NMmRzxSRkHOW1s7qmN1QKQt+ +5QuCdTOE+ilaLnn4po7Qa7IWsvWS+n3AyKly/nY6Vozvanidwv1FrV3R2hKPwD2f +I6WBAoIBAQC908uzmtVq0rXFmMGixXUrdcG8/SF6B9JGAY/LmuRKcb8bCpUzD3d7 +zlV/rtLvuUoWrMlTYwjYASaWnvWnKqtZBGmwuvt295zrfdaP6GGueYGr40bWObC9 +b3t8MgBqUW3+aczRd6Ad99XsFCJrZ2Wcfo987sATLM6cPligHXb8VIJ+O2B0tmvJ ++6AzmhXeu/LkloFu3W37OvZvBBWMa5ws4wDlY7Y6AjIYuouUDvDUjt5eOAta+Ka0 +MJ+VqfN1D+4KPGJUnppk82CvHjpHvicfv9SgRtzEmgJBqu+Hn+4cFfwe+PLORFEh +Asyo0MYdsZa5OMiHqXUg7sZhEM5OWviz +-----END PRIVATE KEY----- diff --git a/certs/inter_kmes/root-ca-kme2.srl b/certs/inter_kmes/root-ca-kme2.srl new file mode 100644 index 0000000..dfacdf9 --- /dev/null +++ b/certs/inter_kmes/root-ca-kme2.srl @@ -0,0 +1 @@ +2E056B8F7449D446873704FA53C53E3B7EF8AA82 diff --git a/certs/inter_kmes/root-ca.cnf b/certs/inter_kmes/root-ca.cnf new file mode 100644 index 0000000..b87de32 --- /dev/null +++ b/certs/inter_kmes/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/CA-zone1.crt b/certs/zone1/CA-zone1.crt similarity index 100% rename from certs/CA-zone1.crt rename to certs/zone1/CA-zone1.crt diff --git a/certs/CA-zone1.key b/certs/zone1/CA-zone1.key similarity index 100% rename from certs/CA-zone1.key rename to certs/zone1/CA-zone1.key diff --git a/certs/CA-zone1.srl b/certs/zone1/CA-zone1.srl similarity index 100% rename from certs/CA-zone1.srl rename to certs/zone1/CA-zone1.srl diff --git a/certs/README.md b/certs/zone1/README.md similarity index 100% rename from certs/README.md rename to certs/zone1/README.md diff --git a/certs/kme1.crt b/certs/zone1/kme1.crt similarity index 100% rename from certs/kme1.crt rename to certs/zone1/kme1.crt diff --git a/certs/kme1.csr b/certs/zone1/kme1.csr similarity index 100% rename from certs/kme1.csr rename to certs/zone1/kme1.csr diff --git a/certs/kme1.key b/certs/zone1/kme1.key similarity index 100% rename from certs/kme1.key rename to certs/zone1/kme1.key diff --git a/certs/kme1.v3.ext b/certs/zone1/kme1.v3.ext similarity index 100% rename from certs/kme1.v3.ext rename to certs/zone1/kme1.v3.ext diff --git a/certs/pass.txt b/certs/zone1/pass.txt similarity index 100% rename from certs/pass.txt rename to certs/zone1/pass.txt diff --git a/certs/sae1.cnf b/certs/zone1/sae1.cnf similarity index 100% rename from certs/sae1.cnf rename to certs/zone1/sae1.cnf diff --git a/certs/sae1.crt b/certs/zone1/sae1.crt similarity index 100% rename from certs/sae1.crt rename to certs/zone1/sae1.crt diff --git a/certs/sae1.csr b/certs/zone1/sae1.csr similarity index 100% rename from certs/sae1.csr rename to certs/zone1/sae1.csr diff --git a/certs/sae1.key b/certs/zone1/sae1.key similarity index 100% rename from certs/sae1.key rename to certs/zone1/sae1.key diff --git a/certs/sae1.pem b/certs/zone1/sae1.pem similarity index 100% rename from certs/sae1.pem rename to certs/zone1/sae1.pem diff --git a/certs/sae1.pfx b/certs/zone1/sae1.pfx similarity index 100% rename from certs/sae1.pfx rename to certs/zone1/sae1.pfx diff --git a/certs/sae2.cnf b/certs/zone1/sae2.cnf similarity index 100% rename from certs/sae2.cnf rename to certs/zone1/sae2.cnf diff --git a/certs/sae2.crt b/certs/zone1/sae2.crt similarity index 100% rename from certs/sae2.crt rename to certs/zone1/sae2.crt diff --git a/certs/sae2.csr b/certs/zone1/sae2.csr similarity index 100% rename from certs/sae2.csr rename to certs/zone1/sae2.csr diff --git a/certs/sae2.key b/certs/zone1/sae2.key similarity index 100% rename from certs/sae2.key rename to certs/zone1/sae2.key diff --git a/certs/sae2.pem b/certs/zone1/sae2.pem similarity index 100% rename from certs/sae2.pem rename to certs/zone1/sae2.pem diff --git a/certs/sae2.pfx b/certs/zone1/sae2.pfx similarity index 100% rename from certs/sae2.pfx rename to certs/zone1/sae2.pfx diff --git a/config_kme1.json b/config_kme1.json index b8c115f..cebd987 100644 --- a/config_kme1.json +++ b/config_kme1.json @@ -2,21 +2,26 @@ "this_kme": { "id": 1, "sqlite_db_path": ":memory:", - "https_listen_address": "127.0.0.1:3000", - "https_ca_client_cert_path": "certs/CA-zone1.crt", - "https_server_cert_path": "certs/kme1.crt", - "https_server_key_path": "certs/kme1.key" + "key_directory_to_watch": "raw_keys/kme-1-1", + "saes_https_interface": { + "listen_address": "127.0.0.1:3000", + "ca_client_cert_path": "certs/zone1/CA-zone1.crt", + "server_cert_path": "certs/zone1/kme1.crt", + "server_key_path": "certs/zone1/kme1.key" + }, + "kmes_https_interface": { + "listen_address": "0.0.0.0:3001", + "ca_client_cert_path": "certs/inter_kmes/root-ca-kme1.crt", + "server_cert_path": "certs/zone1/kme1.crt", + "server_key_path": "certs/zone1/kme1.key" + } }, "other_kmes": [ - { - "id": 1, - "key_directory_to_watch": "raw_keys", - "ip_address": "127.0.0.1" - }, { "id": 2, - "key_directory_to_watch": "raw_keys", - "ip_address": "127.0.0.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-kme1-to-kme2.pfx" } ], "saes": [ diff --git a/raw_keys/211202_1159_CD6ADBF2.cor b/raw_keys/kme-1-1/211202_1159_CD6ADBF2.cor similarity index 100% rename from raw_keys/211202_1159_CD6ADBF2.cor rename to raw_keys/kme-1-1/211202_1159_CD6ADBF2.cor diff --git a/raw_keys/kme-1-2/211202_1159_CD6ADBF2.cor b/raw_keys/kme-1-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/raw_keys/211202_1201_9961A847.cor b/raw_keys/kme-1-2/211202_1201_9961A847.cor similarity index 100% rename from raw_keys/211202_1201_9961A847.cor rename to raw_keys/kme-1-2/211202_1201_9961A847.cor diff --git a/raw_keys/211202_1203_4CC5B386.cor b/raw_keys/kme-1-2/211202_1203_4CC5B386.cor similarity index 100% rename from raw_keys/211202_1203_4CC5B386.cor rename to raw_keys/kme-1-2/211202_1203_4CC5B386.cor diff --git a/raw_keys/211202_1205_94889199.cor b/raw_keys/kme-1-2/211202_1205_94889199.cor similarity index 100% rename from raw_keys/211202_1205_94889199.cor rename to raw_keys/kme-1-2/211202_1205_94889199.cor diff --git a/raw_keys/211202_1208_6DB301BA.cor b/raw_keys/kme-1-2/211202_1208_6DB301BA.cor similarity index 100% rename from raw_keys/211202_1208_6DB301BA.cor rename to raw_keys/kme-1-2/211202_1208_6DB301BA.cor diff --git a/raw_keys/211202_1210_2655B746.cor b/raw_keys/kme-1-2/211202_1210_2655B746.cor similarity index 100% rename from raw_keys/211202_1210_2655B746.cor rename to raw_keys/kme-1-2/211202_1210_2655B746.cor diff --git a/raw_keys/211202_1212_6844D5F5.cor b/raw_keys/kme-1-2/211202_1212_6844D5F5.cor similarity index 100% rename from raw_keys/211202_1212_6844D5F5.cor rename to raw_keys/kme-1-2/211202_1212_6844D5F5.cor diff --git a/raw_keys/211202_1214_7FADACCC.cor b/raw_keys/kme-1-2/211202_1214_7FADACCC.cor similarity index 100% rename from raw_keys/211202_1214_7FADACCC.cor rename to raw_keys/kme-1-2/211202_1214_7FADACCC.cor diff --git a/raw_keys/211202_1216_BFD17354.cor b/raw_keys/kme-1-2/211202_1216_BFD17354.cor similarity index 100% rename from raw_keys/211202_1216_BFD17354.cor rename to raw_keys/kme-1-2/211202_1216_BFD17354.cor diff --git a/raw_keys/211202_1219_9FE60FC0.cor b/raw_keys/kme-1-2/211202_1219_9FE60FC0.cor similarity index 100% rename from raw_keys/211202_1219_9FE60FC0.cor rename to raw_keys/kme-1-2/211202_1219_9FE60FC0.cor diff --git a/raw_keys/211202_1221_47BE3A07.cor b/raw_keys/kme-1-2/211202_1221_47BE3A07.cor similarity index 100% rename from raw_keys/211202_1221_47BE3A07.cor rename to raw_keys/kme-1-2/211202_1221_47BE3A07.cor diff --git a/raw_keys/211202_1223_C350632B.cor b/raw_keys/kme-1-2/211202_1223_C350632B.cor similarity index 100% rename from raw_keys/211202_1223_C350632B.cor rename to raw_keys/kme-1-2/211202_1223_C350632B.cor diff --git a/raw_keys/211202_1225_A7A6EF2D.cor b/raw_keys/kme-1-2/211202_1225_A7A6EF2D.cor similarity index 100% rename from raw_keys/211202_1225_A7A6EF2D.cor rename to raw_keys/kme-1-2/211202_1225_A7A6EF2D.cor diff --git a/raw_keys/211202_1228_F7F2EC9C.cor b/raw_keys/kme-1-2/211202_1228_F7F2EC9C.cor similarity index 100% rename from raw_keys/211202_1228_F7F2EC9C.cor rename to raw_keys/kme-1-2/211202_1228_F7F2EC9C.cor diff --git a/raw_keys/211202_1230_DBFE95B7.cor b/raw_keys/kme-1-2/211202_1230_DBFE95B7.cor similarity index 100% rename from raw_keys/211202_1230_DBFE95B7.cor rename to raw_keys/kme-1-2/211202_1230_DBFE95B7.cor diff --git a/src/config/mod.rs b/src/config/mod.rs index 6801817..2733844 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -40,14 +40,40 @@ pub struct ThisKmeConfig { /// Path to SQLite database file, used to store keys, certificates and other data /// You can use `:memory:` to use in-memory database pub(crate) sqlite_db_path: String, - /// Address to listen for HTTPS connections - pub https_listen_address: String, + /// Directory for keys used in the same KME zone + /// # Note you could use classical encryption in this case, it's just for compatibility purpose + pub(crate) key_directory_to_watch: String, + /// Config for internal HTTPS interface for SAEs + /// # Note you should listen only on secured internal network + pub saes_https_interface: SAEsHttpsInterfaceConfig, + /// Config for external HTTPS interface for other KMEs + pub kmes_https_interface: KMEsHttpsInterfaceConfig +} + +/// Config for internal HTTPS interface for SAEs (likely secured local network) +#[derive(Serialize, Deserialize, Debug)] +pub struct SAEsHttpsInterfaceConfig { + /// Address to listen for HTTPS connections, it should be a secured internal network + pub listen_address: String, + /// Server certificate authority certificate path, used to authenticate client SAEs + pub ca_client_cert_path: String, + /// Server HTTPS certificate path + pub server_cert_path: String, + /// Server HTTPS private key path + pub server_key_path: String +} + +/// Config for external HTTPS interface for other KME network (likely global network +#[derive(Serialize, Deserialize, Debug)] +pub struct KMEsHttpsInterfaceConfig { + /// Address to listen for HTTPS connections, it could be the public IP address + pub listen_address: String, /// Server certificate authority certificate path, used to authenticate client SAEs - pub https_ca_client_cert_path: String, + pub ca_client_cert_path: String, /// Server HTTPS certificate path - pub https_server_cert_path: String, + pub server_cert_path: String, /// Server HTTPS private key path - pub https_server_key_path: String + pub server_key_path: String } /// Configs for other KMEs, including their IDs and paths to directories to watch for new keys @@ -58,7 +84,9 @@ pub struct OtherKmeConfig { /// Path to directory to read and watch for new keys, files must have [crate::QKD_KEY_FILE_EXTENSION](crate::QKD_KEY_FILE_EXTENSION) extension pub(crate) key_directory_to_watch: String, /// IP address of the other KME, used to send keys to it using "classical channel" - pub(crate) ip_address: String, + pub(crate) inter_kme_bind_address: String, + /// Client certificate for inter KME HTTPS authentication + pub(crate) https_client_authentication_certificate: 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 4ddbd7f..603038c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,6 @@ use log::error; use qkd_kme_server::qkd_manager::QkdManager; -use qkd_kme_server::routes::QKDKMERoutesV1; +use qkd_kme_server::routes::EtsiSaeQkdRoutesV1; #[tokio::main] async fn main() { @@ -19,19 +19,26 @@ async fn main() { } }; - let server = qkd_kme_server::server::Server { - listen_addr: config.this_kme_config.https_listen_address.clone(), - ca_client_cert_path: config.this_kme_config.https_ca_client_cert_path.clone(), - server_cert_path: config.this_kme_config.https_server_cert_path.clone(), - server_key_path: config.this_kme_config.https_server_key_path.clone(), + let sae_https_server = qkd_kme_server::server::Server { + listen_addr: config.this_kme_config.saes_https_interface.listen_address.clone(), + ca_client_cert_path: config.this_kme_config.saes_https_interface.ca_client_cert_path.clone(), + server_cert_path: config.this_kme_config.saes_https_interface.server_cert_path.clone(), + server_key_path: config.this_kme_config.saes_https_interface.server_key_path.clone(), + }; + + let inter_kme_https_server = qkd_kme_server::server::Server { + listen_addr: config.this_kme_config.kmes_https_interface.listen_address.clone(), + ca_client_cert_path: config.this_kme_config.kmes_https_interface.ca_client_cert_path.clone(), + server_cert_path: config.this_kme_config.kmes_https_interface.server_cert_path.clone(), + server_key_path: config.this_kme_config.kmes_https_interface.server_key_path.clone(), }; let qkd_manager= QkdManager::from_config(&config); println!("{:?}", qkd_manager.is_err()); let qkd_manager = qkd_manager.unwrap(); - if server.run::(&qkd_manager).await.is_err() { - error!("Error running HTTP server"); + if sae_https_server.run::(&qkd_manager).await.is_err() { + error!("Error running SAEs HTTPS server"); return; } } \ No newline at end of file diff --git a/src/qkd_manager/config_extractor.rs b/src/qkd_manager/config_extractor.rs index ea53aa2..398913b 100644 --- a/src/qkd_manager/config_extractor.rs +++ b/src/qkd_manager/config_extractor.rs @@ -5,7 +5,7 @@ use std::sync::Arc; use notify::event::{AccessKind, AccessMode}; use notify::{EventKind, RecursiveMode, Watcher}; use crate::config::Config; -use crate::io_err; +use crate::{io_err, KmeId}; use crate::qkd_manager::{PreInitQkdKeyWrapper, QkdManager}; pub(super) struct ConfigExtractor {} @@ -22,33 +22,39 @@ impl ConfigExtractor { for other_kme_config in &config.other_kme_configs { let kme_id = other_kme_config.id; let kme_keys_dir = other_kme_config.key_directory_to_watch.as_str(); - let mut dir_watchers = qkd_manager.dir_watcher.lock().unwrap(); - let qkd_manager = Arc::clone(&qkd_manager); - Self::extract_all_keys_from_dir(Arc::clone(&qkd_manager), kme_keys_dir, other_kme_config.id); + Self::extract_and_watch_raw_keys_dir(Arc::clone(&qkd_manager), kme_id, kme_keys_dir)?; + } + Self::extract_and_watch_raw_keys_dir(Arc::clone(&qkd_manager), config.this_kme_config.id, config.this_kme_config.key_directory_to_watch.as_str())?; + Ok(()) + } - dir_watchers.push(match notify::recommended_watcher(move |res: Result| { - match res { - Ok(event) => { - if let EventKind::Access(AccessKind::Close(AccessMode::Write)) = event.kind { - if Self::check_file_extension_qkd_keys(event.paths[0].to_str().unwrap()) { - Self::extract_all_keys_from_file(Arc::clone(&qkd_manager), &event.paths[0].to_str().unwrap(), kme_id); - } + fn extract_and_watch_raw_keys_dir(qkd_manager: Arc, kme_id: KmeId, kme_keys_dir: &str) -> Result<(), io::Error> { + let mut dir_watchers = qkd_manager.dir_watcher.lock().unwrap(); + let qkd_manager = Arc::clone(&qkd_manager); + Self::extract_all_keys_from_dir(Arc::clone(&qkd_manager), kme_keys_dir, kme_id); + + dir_watchers.push(match notify::recommended_watcher(move |res: Result| { + match res { + Ok(event) => { + if let EventKind::Access(AccessKind::Close(AccessMode::Write)) = event.kind { + if Self::check_file_extension_qkd_keys(event.paths[0].to_str().unwrap()) { + Self::extract_all_keys_from_file(Arc::clone(&qkd_manager), &event.paths[0].to_str().unwrap(), kme_id); } } - Err(e) => { - println!("Watch error: {:?}", e); - return; - } } - }) { - Ok(watcher) => watcher, Err(e) => { - return Err(io_err(&format!("Error creating watcher: {:?}", e))); + println!("Watch error: {:?}", e); + return; } - }); - if dir_watchers.iter_mut().last().unwrap().watch(Path::new(kme_keys_dir), RecursiveMode::NonRecursive).is_err() { - return Err(io_err(&format!("Error watching directory: {:?}", kme_keys_dir))); } + }) { + Ok(watcher) => watcher, + Err(e) => { + return Err(io_err(&format!("Error creating watcher: {:?}", e))); + } + }); + if dir_watchers.iter_mut().last().unwrap().watch(Path::new(kme_keys_dir), RecursiveMode::NonRecursive).is_err() { + return Err(io_err(&format!("Error watching directory: {:?}", kme_keys_dir))); } Ok(()) } diff --git a/src/routes/keys/get_key.rs b/src/routes/keys/get_key.rs index 1b26a0c..3b98be7 100644 --- a/src/routes/keys/get_key.rs +++ b/src/routes/keys/get_key.rs @@ -21,7 +21,7 @@ pub(in crate::routes) fn route_get_status(rcx: &RequestContext, _req: Request serial, Err(_) => { - return super::QKDKMERoutesV1::authentication_error(); + return super::EtsiSaeQkdRoutesV1::authentication_error(); } }; @@ -36,17 +36,17 @@ pub(in crate::routes) fn route_get_status(rcx: &RequestContext, _req: Request json, Err(_) => { error!("Error serializing key status"); - return super::QKDKMERoutesV1::internal_server_error(); + return super::EtsiSaeQkdRoutesV1::internal_server_error(); } }; // Return the key status as a response - Ok(crate::routes::QKDKMERoutesV1::json_response_from_str(&key_status_json)) + Ok(crate::routes::EtsiSaeQkdRoutesV1::json_response_from_str(&key_status_json)) } QkdManagerResponse::AuthenticationError => { - super::QKDKMERoutesV1::authentication_error() + super::EtsiSaeQkdRoutesV1::authentication_error() } _ => { - super::QKDKMERoutesV1::internal_server_error() + super::EtsiSaeQkdRoutesV1::internal_server_error() } } } @@ -80,20 +80,20 @@ pub(in crate::routes) fn route_get_key(rcx: &RequestContext, _req: Request json, Err(_) => { error!("Error serializing keys"); - return super::QKDKMERoutesV1::internal_server_error(); + return super::EtsiSaeQkdRoutesV1::internal_server_error(); } }; // Return the key(s) as a response - Ok(crate::routes::QKDKMERoutesV1::json_response_from_str(&keys_json)) + Ok(crate::routes::EtsiSaeQkdRoutesV1::json_response_from_str(&keys_json)) } QkdManagerResponse::AuthenticationError => { - super::QKDKMERoutesV1::authentication_error() + super::EtsiSaeQkdRoutesV1::authentication_error() } QkdManagerResponse::NotFound => { - super::QKDKMERoutesV1::not_found() + super::EtsiSaeQkdRoutesV1::not_found() } _ => { - super::QKDKMERoutesV1::internal_server_error() + super::EtsiSaeQkdRoutesV1::internal_server_error() } } } @@ -134,7 +134,7 @@ pub(in crate::routes) async fn route_get_key_with_id(rcx: &RequestContext<'_>, r let post_body_bytes = match req.into_body().collect().await { Ok(bytes) => bytes.to_bytes(), Err(_) => { - return super::QKDKMERoutesV1::bad_request(); + return super::EtsiSaeQkdRoutesV1::bad_request(); } }; @@ -142,7 +142,7 @@ pub(in crate::routes) async fn route_get_key_with_id(rcx: &RequestContext<'_>, r let request_list_keys_ids: RequestListKeysIds = match serde_json::from_slice(&post_body_bytes) { Ok(request_list_keys_ids) => request_list_keys_ids, Err(_) => { - return super::QKDKMERoutesV1::bad_request(); + return super::EtsiSaeQkdRoutesV1::bad_request(); } }; @@ -161,20 +161,20 @@ pub(in crate::routes) async fn route_get_key_with_id(rcx: &RequestContext<'_>, r Ok(json) => json, Err(_) => { error!("Error serializing keys"); - return super::QKDKMERoutesV1::internal_server_error(); + return super::EtsiSaeQkdRoutesV1::internal_server_error(); } }; // Return the key(s) as a response - Ok(crate::routes::QKDKMERoutesV1::json_response_from_str(&keys_json)) + Ok(crate::routes::EtsiSaeQkdRoutesV1::json_response_from_str(&keys_json)) } QkdManagerResponse::AuthenticationError => { - super::QKDKMERoutesV1::authentication_error() + super::EtsiSaeQkdRoutesV1::authentication_error() } QkdManagerResponse::NotFound => { - super::QKDKMERoutesV1::not_found() + super::EtsiSaeQkdRoutesV1::not_found() } _ => { - super::QKDKMERoutesV1::internal_server_error() + super::EtsiSaeQkdRoutesV1::internal_server_error() } } } @@ -187,7 +187,7 @@ macro_rules! ensure_sae_id_format_type { Ok(sae_id) => sae_id, Err(_) => { warn!("Invalid SAE ID, must be an integer"); - return super::QKDKMERoutesV1::bad_request(); + return super::EtsiSaeQkdRoutesV1::bad_request(); } } } @@ -201,7 +201,7 @@ macro_rules! ensure_client_certificate_serial { Ok(serial) => serial, Err(_) => { warn!("Error getting client certificate serial"); - return super::QKDKMERoutesV1::authentication_error(); + return super::EtsiSaeQkdRoutesV1::authentication_error(); } } } diff --git a/src/routes/keys/mod.rs b/src/routes/keys/mod.rs index 92ce90f..ad4d3a1 100644 --- a/src/routes/keys/mod.rs +++ b/src/routes/keys/mod.rs @@ -4,7 +4,7 @@ use std::convert::Infallible; use http_body_util::Full; use hyper::{body, Request, Response}; use hyper::body::Bytes; -use crate::routes::{QKDKMERoutesV1, RequestContext}; +use crate::routes::{EtsiSaeQkdRoutesV1, RequestContext}; mod get_key; @@ -18,6 +18,6 @@ pub(super) async fn key_handler(rcx: &RequestContext<'_>, req: Request get_key::route_get_key_with_id(rcx, req, slave_sae_id).await, // Route not found - _ => QKDKMERoutesV1::not_found(), + _ => EtsiSaeQkdRoutesV1::not_found(), } } \ No newline at end of file diff --git a/src/routes/mod.rs b/src/routes/mod.rs index 1338029..babba5d 100644 --- a/src/routes/mod.rs +++ b/src/routes/mod.rs @@ -35,10 +35,10 @@ pub trait Routes { } /// Struct representing the routes of the server for the v1 version of the API -pub struct QKDKMERoutesV1 {} +pub struct EtsiSaeQkdRoutesV1 {} #[async_trait] -impl Routes for QKDKMERoutesV1 { +impl Routes for EtsiSaeQkdRoutesV1 { async fn handle_request(req: Request, client_cert: Option<&CertificateDer>, qkd_manager: QkdManager) -> Result>, Infallible> { let path = req.uri().path().to_owned(); @@ -71,7 +71,7 @@ impl Routes for QKDKMERoutesV1 { #[allow(dead_code)] -impl QKDKMERoutesV1 { +impl EtsiSaeQkdRoutesV1 { RESPONSE_ERROR_FUNCTION!(internal_server_error, StatusCode::INTERNAL_SERVER_ERROR, "Internal server error"); RESPONSE_ERROR_FUNCTION!(not_found, StatusCode::NOT_FOUND, "Element not found"); RESPONSE_ERROR_FUNCTION!(authentication_error, StatusCode::UNAUTHORIZED, "Authentication error"); @@ -111,7 +111,7 @@ mod tests { #[tokio::test] async fn test_internal_server_error() { - let response = super::QKDKMERoutesV1::internal_server_error().unwrap(); + let response = super::EtsiSaeQkdRoutesV1::internal_server_error().unwrap(); assert_eq!(response.status(), StatusCode::INTERNAL_SERVER_ERROR); let body = String::from_utf8(response.into_body().collect().await.unwrap().to_bytes().to_vec()).unwrap(); assert_eq!(body, "{\n \"message\": \"Internal server error\"\n}"); @@ -119,7 +119,7 @@ mod tests { #[tokio::test] async fn test_not_found() { - let response = super::QKDKMERoutesV1::not_found().unwrap(); + let response = super::EtsiSaeQkdRoutesV1::not_found().unwrap(); assert_eq!(response.status(), StatusCode::NOT_FOUND); let body = String::from_utf8(response.into_body().collect().await.unwrap().to_bytes().to_vec()).unwrap(); assert_eq!(body, "{\n \"message\": \"Element not found\"\n}"); @@ -127,7 +127,7 @@ mod tests { #[tokio::test] async fn test_authentication_error() { - let response = super::QKDKMERoutesV1::authentication_error().unwrap(); + let response = super::EtsiSaeQkdRoutesV1::authentication_error().unwrap(); assert_eq!(response.status(), StatusCode::UNAUTHORIZED); let body = String::from_utf8(response.into_body().collect().await.unwrap().to_bytes().to_vec()).unwrap(); assert_eq!(body, "{\n \"message\": \"Authentication error\"\n}"); @@ -135,7 +135,7 @@ mod tests { #[tokio::test] async fn test_bad_request() { - let response = super::QKDKMERoutesV1::bad_request().unwrap(); + let response = super::EtsiSaeQkdRoutesV1::bad_request().unwrap(); assert_eq!(response.status(), StatusCode::BAD_REQUEST); let body = String::from_utf8(response.into_body().collect().await.unwrap().to_bytes().to_vec()).unwrap(); assert_eq!(body, "{\n \"message\": \"Bad request\"\n}"); @@ -143,7 +143,7 @@ mod tests { #[tokio::test] async fn test_json_response_from_str() { - let response = super::QKDKMERoutesV1::json_response_from_str("{\"variable\": \"value\"}"); + let response = super::EtsiSaeQkdRoutesV1::json_response_from_str("{\"variable\": \"value\"}"); assert_eq!(response.status(), StatusCode::OK); assert_eq!(response.headers().get("content-type").unwrap(), "application/json"); let body = String::from_utf8(response.into_body().collect().await.unwrap().to_bytes().to_vec()).unwrap(); diff --git a/src/routes/request_context.rs b/src/routes/request_context.rs index 55da9bd..8a0b686 100644 --- a/src/routes/request_context.rs +++ b/src/routes/request_context.rs @@ -111,7 +111,7 @@ mod test { #[test] fn test_context_with_cert() { - const CERT_FILENAME: &'static str = "certs/kme1.crt"; + const CERT_FILENAME: &'static str = "certs/zone1/kme1.crt"; let certs = load_cert(CERT_FILENAME).unwrap(); assert_eq!(certs.len(), 1); let context = super::RequestContext::new(Some(&certs[0]), crate::qkd_manager::QkdManager::new(":memory:", 1)).unwrap(); diff --git a/src/routes/sae/info.rs b/src/routes/sae/info.rs index 227cf22..01704ce 100644 --- a/src/routes/sae/info.rs +++ b/src/routes/sae/info.rs @@ -16,7 +16,7 @@ pub(in crate::routes) async fn route_get_info_me(rcx: &RequestContext<'_>, _req: let client_cert_serial = match rcx.get_client_certificate_serial_as_raw() { Ok(serial) => serial, Err(_) => { - return crate::routes::QKDKMERoutesV1::authentication_error() + return crate::routes::EtsiSaeQkdRoutesV1::authentication_error() } }; // Retrieve the SAE ID from the QKD manager, given the client certificate serial @@ -24,7 +24,7 @@ pub(in crate::routes) async fn route_get_info_me(rcx: &RequestContext<'_>, _req: Ok(sae_info) => sae_info, Err(_) => { // Client certificate serial isn't registered in the QKD manager - return crate::routes::QKDKMERoutesV1::not_found() + return crate::routes::EtsiSaeQkdRoutesV1::not_found() } }; @@ -35,12 +35,12 @@ pub(in crate::routes) async fn route_get_info_me(rcx: &RequestContext<'_>, _req: }; match sae_info_response_obj.to_json() { Ok(json) => { - Ok(crate::routes::QKDKMERoutesV1::json_response_from_str(&json)) + Ok(crate::routes::EtsiSaeQkdRoutesV1::json_response_from_str(&json)) } Err(_) => { // Error serializing the response object, should never happen error!("Error serializing SAE info"); - crate::routes::QKDKMERoutesV1::internal_server_error() + crate::routes::EtsiSaeQkdRoutesV1::internal_server_error() } } } \ No newline at end of file diff --git a/src/routes/sae/mod.rs b/src/routes/sae/mod.rs index 7795478..8486035 100644 --- a/src/routes/sae/mod.rs +++ b/src/routes/sae/mod.rs @@ -12,6 +12,6 @@ use crate::routes::request_context::RequestContext; pub(super) async fn sae_handler(rcx: &RequestContext<'_>, req: Request, uri_segments: &[&str]) -> Result>, Infallible> { match (uri_segments, req.method()) { (["info", "me"], &hyper::Method::GET) => info::route_get_info_me(rcx, req).await, - _ => super::QKDKMERoutesV1::not_found(), + _ => super::EtsiSaeQkdRoutesV1::not_found(), } } \ No newline at end of file diff --git a/src/server/certificates.rs b/src/server/certificates.rs index c30a689..609865b 100644 --- a/src/server/certificates.rs +++ b/src/server/certificates.rs @@ -60,22 +60,22 @@ pub(super) fn load_pkey(filename: &str) -> Result>, i mod test { #[test] fn test_load_cert() { - const CERT_FILENAME: &'static str = "certs/kme1.crt"; + const CERT_FILENAME: &'static str = "certs/zone1/kme1.crt"; let certs = super::load_cert(CERT_FILENAME).unwrap(); assert_eq!(certs.len(), 1); - const CERT_FILENAME_NO_EXIST: &'static str = "certs/no_exist.crt"; + const CERT_FILENAME_NO_EXIST: &'static str = "certs/zone1/no_exist.crt"; let certs = super::load_cert(CERT_FILENAME_NO_EXIST); assert!(certs.is_err()); } #[test] fn test_load_pkey() { - const PKEY_FILENAME: &'static str = "certs/kme1.key"; + const PKEY_FILENAME: &'static str = "certs/zone1/kme1.key"; let keys = super::load_pkey(PKEY_FILENAME).unwrap(); assert_eq!(keys.len(), 1); - const PKEY_FILENAME_NO_EXIST: &'static str = "certs/no_exist.key"; + const PKEY_FILENAME_NO_EXIST: &'static str = "certs/zone1/no_exist.key"; let keys = super::load_pkey(PKEY_FILENAME_NO_EXIST); assert!(keys.is_err()); } diff --git a/src/server/mod.rs b/src/server/mod.rs index 1d680b5..ac2a2dc 100644 --- a/src/server/mod.rs +++ b/src/server/mod.rs @@ -149,9 +149,9 @@ impl Server { mod tests { #[test] fn test_get_ssl_config() { - const CA_CERT_FILENAME: &'static str = "certs/CA-zone1.crt"; - const SERVER_CERT_FILENAME: &'static str = "certs/kme1.crt"; - const SERVER_KEY_FILENAME: &'static str = "certs/kme1.key"; + const CA_CERT_FILENAME: &'static str = "certs/zone1/CA-zone1.crt"; + const SERVER_CERT_FILENAME: &'static str = "certs/zone1/kme1.crt"; + const SERVER_KEY_FILENAME: &'static str = "certs/zone1/kme1.key"; let server = super::Server { listen_addr: "127.0.0.1:3000".to_string(), ca_client_cert_path: CA_CERT_FILENAME.to_string(), @@ -161,7 +161,7 @@ mod tests { let config = server.get_ssl_config(); assert!(config.is_ok()); - const CA_CERT_FILE_WRONG_FORMAT: &'static str = "certs/sae1.pfx"; + const CA_CERT_FILE_WRONG_FORMAT: &'static str = "certs/zone1/sae1.pfx"; let server = super::Server { listen_addr: "127.0.0.1:3000".to_string(), ca_client_cert_path: CA_CERT_FILE_WRONG_FORMAT.to_string(), diff --git a/tests/common/mod.rs b/tests/common/mod.rs index a22c3c8..8ba12c7 100644 --- a/tests/common/mod.rs +++ b/tests/common/mod.rs @@ -3,16 +3,16 @@ use std::fs::File; use std::io::Read; use qkd_kme_server::qkd_manager::{PreInitQkdKeyWrapper, QkdManager}; -use qkd_kme_server::routes::QKDKMERoutesV1; +use qkd_kme_server::routes::EtsiSaeQkdRoutesV1; pub const HOST_PORT: &'static str = "localhost:3000"; pub fn setup() { let server = qkd_kme_server::server::Server { listen_addr: "127.0.0.1:3000".to_string(), - ca_client_cert_path: "certs/CA-zone1.crt".to_string(), - server_cert_path: "certs/kme1.crt".to_string(), - server_key_path: "certs/kme1.key".to_string(), + ca_client_cert_path: "certs/zone1/CA-zone1.crt".to_string(), + server_cert_path: "certs/zone1/kme1.crt".to_string(), + server_key_path: "certs/zone1/kme1.key".to_string(), }; let qkd_manager = QkdManager::new(":memory:", 1); @@ -33,12 +33,12 @@ pub fn setup() { ).unwrap(); qkd_manager.add_pre_init_qkd_key(qkd_key_2).unwrap(); - tokio::spawn(async move {server.run::(&qkd_manager).await.unwrap();}); + tokio::spawn(async move {server.run::(&qkd_manager).await.unwrap();}); } pub fn setup_cert_auth_reqwest_client() -> reqwest::Client { let mut buf = Vec::new(); - File::open("certs/sae1.pfx").unwrap().read_to_end(&mut buf).unwrap(); + File::open("certs/zone1/sae1.pfx").unwrap().read_to_end(&mut buf).unwrap(); let client_cert_id = reqwest::Identity::from_pkcs12_der(&buf, "").unwrap(); reqwest::Client::builder() .identity(client_cert_id) @@ -49,7 +49,7 @@ pub fn setup_cert_auth_reqwest_client() -> reqwest::Client { pub fn setup_cert_auth_reqwest_client_unregistered_sae() -> reqwest::Client { let mut buf = Vec::new(); // SAE2 is not registered in SAEs database - File::open("certs/sae2.pfx").unwrap().read_to_end(&mut buf).unwrap(); + File::open("certs/zone1/sae2.pfx").unwrap().read_to_end(&mut buf).unwrap(); let client_cert_id = reqwest::Identity::from_pkcs12_der(&buf, "").unwrap(); reqwest::Client::builder() .identity(client_cert_id)