summaryrefslogtreecommitdiff
path: root/gtests/common
diff options
context:
space:
mode:
authorKevin Jacobs <kjacobs@mozilla.com>2021-01-25 17:41:03 +0000
committerKevin Jacobs <kjacobs@mozilla.com>2021-01-25 17:41:03 +0000
commitddc9d5dd387672585d52dbf326b40c9ed00ed671 (patch)
tree67715709441f71b7fdcb23415523ac7562c9e7f6 /gtests/common
parent34e04960e009510c84d419ec3edd6d31cfff1bea (diff)
downloadnss-hg-ddc9d5dd387672585d52dbf326b40c9ed00ed671.tar.gz
Bug 1678398 - Update HPKE to draft-07. r=mt
This patch updates HPKE to draft-07. A few other minor changes are included: - Refactor HPKE gtests for increased parameterized testing. - Replace memcpy calls with PORT_Memcpy - Serialization tweaks to make way for context Export/Import (D99277). This should not be landed without an ECH update, as fixed ECH test vectors will otherwise fail to decrypt. Differential Revision: https://phabricator.services.mozilla.com/D99276
Diffstat (limited to 'gtests/common')
-rw-r--r--gtests/common/testvectors/hpke-vectors.h250
1 files changed, 130 insertions, 120 deletions
diff --git a/gtests/common/testvectors/hpke-vectors.h b/gtests/common/testvectors/hpke-vectors.h
index dd7b417b8..afed3fea8 100644
--- a/gtests/common/testvectors/hpke-vectors.h
+++ b/gtests/common/testvectors/hpke-vectors.h
@@ -52,48 +52,37 @@ const hpke_vector kHpkeTestVectors[] = {
static_cast<HpkeKdfId>(1),
static_cast<HpkeAeadId>(1),
"4f6465206f6e2061204772656369616e2055726e",
- "3067020100301406072a8648ce3d020106092b06010401da470f01044c304a"
- "02010104208c490e5b0c7dbe0c6d2192484d2b7a0423b3b4544f2481095a9"
- "9dbf238fb350fa1230321008a07563949fac6232936ed6f36c4fa735930ecd"
- "eaef6734e314aeac35a56fd0a",
- "3067020100301406072a8648ce3d020106092b06010401da470f01044c304a"
- "02010104205a8aa0d2476b28521588e0c704b14db82cdd4970d340d293a957"
- "6deaee9ec1c7a1230321008756e2580c07c1d2ffcb662f5fadc6d6ff13da85"
- "abd7adfecf984aaa102c1269",
+ "3067020100301406072a8648ce3d020106092b06010401da470f01044c304a02010104206"
+ "cee2e2755790708a2a1be22667883a5e3f9ec52810404a0d889a0ed3e28de00a123032100"
+ "950897e0d37a8bdb0f2153edf5fa580a64b399c39fbb3d014f80983352a63617",
+ "3067020100301406072a8648ce3d020106092b06010401da470f01044c304a0201010420e"
+ "caf25b8485bcf40b9f013dbb96a6230f25733b8435bba0997a1dedbc7f78806a123032100"
+ "a5912b20892e36905bac635267e2353d58f8cc7525271a2bf57b9c48d2ec2c07",
"",
"",
- "8a07563949fac6232936ed6f36c4fa735930ecdeaef6734e314aeac35a56fd0a",
- "550ee0b7ec1ea2532f2e2bac87040a4c",
- "2b855847756795a57229559a",
+ "950897e0d37a8bdb0f2153edf5fa580a64b399c39fbb3d014f80983352a63617",
+ "e20cee1bf5392ad2d3a442e231f187ae",
+ "5d99b2f03c452f7a9441933a",
{// Encryptions
{"4265617574792069732074727574682c20747275746820626561757479",
"436f756e742d30",
- "971ba65db526758ea30ae748cd769bc8d90579b62a037816057f24ce4274"
- "16bd47c05ed1c2446ac8e19ec9ae79"},
+ "9418f1ae06eddc43aa911032aed4a951754ee2286a786733761857f8d96a7ec8d852da9"
+ "3bc5eeab49623344aba"},
{"4265617574792069732074727574682c20747275746820626561757479",
"436f756e742d31",
- "f18f1ec397667ca069b9a6ee0bebf0890cd5caa34bb9875b3600ca0142cb"
- "a774dd35f2aafd79a02a08ca5f2806"},
+ "74d69c61899b9158bb50e95d92fbad106f612ea67c61b3c4bef65c8bf3dc18e17bf41ec"
+ "4c408688aae58358d0e"},
{"4265617574792069732074727574682c20747275746820626561757479",
"436f756e742d32",
- "51a8dea350fe6e753f743ec17c956de4cbdfa35f3018fc6a12752c51d137"
- "2c5093959f18c7253da9c953c6cfbe"}},
+ "e6602db9be05d81c4ab8fa621bc35993a7b759851075a34b3bffd257340011c70c9fa1f"
+ "5c11868a076fc3adb3b"}},
{// Exports
- {"436f6e746578742d30", 32,
- "0df04ac640d34a56561419bab20a68e6b7331070208004f89c7b973f4c47"
- "2e92"},
- {"436f6e746578742d31", 32,
- "723c2c8f80e6b827e72bd8e80973a801a05514afe3d4bc46e82e505dceb9"
- "53aa"},
- {"436f6e746578742d32", 32,
- "38010c7d5d81093a11b55e2403a258e9a195bcf066817b332dd996b0a9bc"
- "bc9a"},
- {"436f6e746578742d33", 32,
- "ebf6ab4c3186131de9b2c3c0bc3e2ad21dfcbc4efaf050cd0473f5b1535a"
- "8b6d"},
- {"436f6e746578742d34", 32,
- "c4823eeb3efd2d5216b2d3b16e542bf57470dc9b9ea9af6bce85b151a358"
- "9d90"}}},
+ {"", 32,
+ "be82c06bd83fd6edd74385de5a70859b9e03def4c7bb224a10cfae86087f8a25"},
+ {"00", 32,
+ "82cbfd3c2b2db75e2311d457e569cf12b6387eb4309bca8e77adb2f2b599fc85"},
+ {"54657374436f6e74657874", 32,
+ "c8387c1e6ec4f026c7f3577e3f29df51f46161295eec84c4f64a9174f7b64e4f"}}},
// A.1. DHKEM(X25519, HKDF-SHA256), HKDF-SHA256, AES-128-GCM, PSK mode
{1,
@@ -102,132 +91,153 @@ const hpke_vector kHpkeTestVectors[] = {
static_cast<HpkeKdfId>(1),
static_cast<HpkeAeadId>(1),
"4f6465206f6e2061204772656369616e2055726e",
- "3067020100301406072a8648ce3d020106092b06010401da470f01044c304a020"
- "1010420e7d2b539792a48a24451303ccd0cfe77176b6cb06823c439edfd217458"
- "a1398aa12303210008d39d3e7f9b586341b6004dafba9679d2bd9340066edb247"
- "e3e919013efcd0f",
- "3067020100301406072a8648ce3d020106092b06010401da470f01044c304a020"
- "10104204b41ef269169090551fcea177ecdf622bca86d82298e21cd93119b804c"
- "cc5eaba123032100a5c85773bed3a831e7096f7df4ff5d1d8bac48fc97bfac366"
- "141efab91892a3a",
- "5db3b80a81cb63ca59470c83414ef70a",
+ "3067020100301406072a8648ce3d020106092b06010401da470f01044c304a02010104204"
+ "c1feed23e15ec6a55b8457e0c0f42a3a1ab3ccc309b7cbb7ac6165fc657bd3ba123032100"
+ "f16fa9440b2cb36c855b4b82fb87e1c02ce656dd132f7a7aec739294b6912768",
+ "3067020100301406072a8648ce3d020106092b06010401da470f01044c304a02010104208"
+ "e5430f0d821407670e5e3f6eecc9f52b2cad27b15a5fad1f3d05359ae30d81ca123032100"
+ "13c789187a2dda71889e4b98dc5443624ae68f309cea91865561cfa207586e3a",
+ "0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82",
"456e6e796e20447572696e206172616e204d6f726961",
- "08d39d3e7f9b586341b6004dafba9679d2bd9340066edb247e3e919013efcd0f",
- "811e9b2d7a10f4f9d58786bf8a534ca6",
- "b79b0c5a8c3808e238b10411",
+ "f16fa9440b2cb36c855b4b82fb87e1c02ce656dd132f7a7aec739294b6912768",
+ "70030b55bfb737d4f4355cf62302d281",
+ "746d5e6255902701c3e0b99f",
{// Encryptions
{"4265617574792069732074727574682c20747275746820626561757479",
"436f756e742d30",
- "fb68f911b4e4033d1547f646ea30c9cee987fb4b4a8c30918e5de6e96de32fc"
- "63466f2fc05e09aeff552489741"},
+ "63f7ed3d99e625d4a7373982b5f04daf0c3dfff39cac4b38eeb9d5c225cc3183bdbc91a"
+ "053db9b195319cc8c45"},
{"4265617574792069732074727574682c20747275746820626561757479",
"436f756e742d31",
- "85e7472fbb7e2341af35fb2a0795df9a85caa99a8f584056b11d452bc160470"
- "672e297f9892ce2c5020e794ae1"},
+ "65e7160f80fdf47893a5abe1edcff46c85899f04acb97882e194ce6d4fceec2dc4cb2d3"
+ "abe5d969880722859b2"},
{"4265617574792069732074727574682c20747275746820626561757479",
"436f756e742d32",
- "74229b7491102bcf94cf7633888bc48baa4e5a73cc544bfad4ff61585506fac"
- "b44b359ade03c0b2b35c6430e4c"}},
+ "915e08e6e340fca64982e90ad93490826bfb74af8f48062212c87105dad2b7569c83688"
+ "e564ed5862592b77cdc"}},
{// Exports
- {"436f6e746578742d30", 32,
- "bd292b132fae00243851451c3f3a87e9e11c3293c14d61b114b7e12e07245ffd"},
- {"436f6e746578742d31", 32,
- "695de26bc9336caee01cb04826f6e224f4d2108066ab17fc18f0c993dce05f24"},
- {"436f6e746578742d32", 32,
- "c53f26ef1bf4f5fd5469d807c418a0e103d035c76ccdbc6afb5bc42b24968f6c"},
- {"436f6e746578742d33", 32,
- "8cea4a595dfe3de84644ca8ea7ea9401a345f0db29bb4beebc2c471afc602ec4"},
- {"436f6e746578742d34", 32,
- "e6313f12f6c2054c69018f273211c54fcf2439d90173392eaa34b4caac929068"}}},
-
- // A.2. DHKEM(X25519, HKDF-SHA256), HKDF-SHA256, ChaCha20Poly1305, Base mode
+ {"", 32,
+ "7c40ceb745e14d19fceeac6e4756c796957fe5ff28709198c3f8cbdb5d368fe1"},
+ {"00", 32,
+ "1ef0fd07bd40326f1b88f3545c92969cff202ca7186b9fd1315241f93fcc2edf"},
+ {"54657374436f6e74657874", 32,
+ "997368419db9490aa96c977cdd90bda8fd6234054d4add3d2f31aaaa2f8c1172"}}},
+ // A.2. DHKEM(X25519, HKDF-SHA256), HKDF-SHA256, ChaCha20Poly1305, Base
+ // mode
{2,
static_cast<HpkeModeId>(0),
static_cast<HpkeKemId>(32),
static_cast<HpkeKdfId>(1),
static_cast<HpkeAeadId>(3),
"4f6465206f6e2061204772656369616e2055726e",
- "3067020100301406072a8648ce3d020106092b06010401da470f01044c304a020"
- "10104205006a9a0f0138b9b5d577ed4a67c4f795aee8fc146ac63d7a4167765be"
- "3ad7dca123032100716281787b035b2fee90455d951fa70b3db6cc92f13bedfd7"
- "58c3487994b7020",
- "3067020100301406072a8648ce3d020106092b06010401da470f01044c304a020"
- "101042062139576dcbf9878ccd56262d1b28dbea897821c03370d81971513cc74"
- "aea3ffa1230321001ae26f65041b36ad69eb392c198bfd33df1c6ff17a910cb3e"
- "49db7506b6a4e7f",
+ "3067020100301406072a8648ce3d020106092b06010401da470f01044c304a0201010420e"
+ "fda8f0538ce6ab9f165aae26e02ad96dcb1775b248267174aeb3d140e002ee3a123032100"
+ "1440805f4e60cbd34835baf0813c3071d17def1dbd8c04e75889bb2271d7823a",
+ "3067020100301406072a8648ce3d020106092b06010401da470f01044c304a02010104201"
+ "4365bb26500e7cf263720c4ab04bd45b8e146b4f724facd1fa01d58b63975e4a123032100"
+ "26147d5c2978bccc3cc03a4f9ac607560b5d83f852be4e9024f2cb7207d4c30e",
"",
"",
- "716281787b035b2fee90455d951fa70b3db6cc92f13bedfd758c3487994b7020",
- "1d5e71e2885ddadbcc479798cc65ea74d308f2a9e99c0cc7fe480adce66b5722",
- "8354a7fcfef97d4bbef6d24e",
+ "1440805f4e60cbd34835baf0813c3071d17def1dbd8c04e75889bb2271d7823a",
+ "a17448a542d0d6d75e3b21be0a1f68607904b4802c6b19a7e7e90976aa00a5c8",
+ "6f6b832dba944a91e5684514",
{// Encryptions
{"4265617574792069732074727574682c20747275746820626561757479",
"436f756e742d30",
- "fa4632a400962c98143e58450e75d879365359afca81a5f5b5997c6555647ec"
- "302045a80c57d3e2c2abe7e1ced"},
+ "1b9ce69bd0e6b4242ac2dd841ef093fc9dfa9e684f81c2d1778fd3268ca5aa7d612cd87"
+ "f72acd2aeaee084dee2"},
{"4265617574792069732074727574682c20747275746820626561757479",
"436f756e742d31",
- "8313fcbf760714f5a93b6864820e48dcec3ddd476ad4408ff1c1a1f7bfb8cb8"
- "699fada4a9e59bf8086eb1c0635"},
+ "f041fb8de275b5319587269cb39190029906b9267eb5619b7bec8a5e0b3b3a0bead1696"
+ "17f2c4d45d028b1b654"},
{"4265617574792069732074727574682c20747275746820626561757479",
"436f756e742d32",
- "020f2856d95b85e1def9549bf327c484d327616f1e213045f117be4c287571a"
- "b983958f74766cbc6f8197c8d8d"}},
+ "0042c74002608a20e432ee9628e84cba76482aca29359e93d60067371be547355acca2c"
+ "271a2072b85a77a6237"}},
{// Exports
- {"436f6e746578742d30", 32,
- "22bbe971392c685b55e13544cdaf976f36b89dc1dbe1296c2884971a5aa9e331"},
- {"436f6e746578742d31", 32,
- "5c0fa72053a2622d8999b726446db9ef743e725e2cb040afac2d83eae0d41981"},
- {"436f6e746578742d32", 32,
- "72b0f9999fd37ac2b948a07dadd01132587501a5a9460d596c1f7383299a2442"},
- {"436f6e746578742d33", 32,
- "73d2308ed5bdd63aacd236effa0db2d3a30742b6293a924d95a372e76d90486b"},
- {"436f6e746578742d34", 32,
- "d4f8878dbc471935e86cdee08746e53837bbb4b6013003bebb0bc1cc3e074085"}}},
-
- // A.2. DHKEM(X25519, HKDF-SHA256), HKDF-SHA256, ChaCha20Poly1305, PSK mode
+ {"", 32,
+ "996dc6fda1dc47e687613e0e221d64a3598e1ead9585177d22f230716569c04d"},
+ {"00", 32,
+ "6d07b4e3e06ace3dc3f1b2a0826a0f896aa828769ff993c2e3829ae40325c27d"},
+ {"54657374436f6e74657874", 32,
+ "bb69068c4f7767331512d375e4ab0ca0c6c51446040096ea0ae1cc3f9a3f54bd"}}},
+ // A.2. DHKEM(X25519, HKDF-SHA256), HKDF-SHA256, ChaCha20Poly1305, PSK
+ // mode
{3,
static_cast<HpkeModeId>(1),
static_cast<HpkeKemId>(32),
static_cast<HpkeKdfId>(1),
static_cast<HpkeAeadId>(3),
"4f6465206f6e2061204772656369616e2055726e",
- "3067020100301406072a8648ce3d020106092b06010401da470f01044c304a020"
- "10104204bfdb62b95ae2a1f29f20ea49e24aa2673e0d240c6e967f668f55ed5de"
- "e996dca123032100f4639297e3305b03d34dd5d86522ddc6ba11a608a0003670a"
- "30734823cdd3763",
- "3067020100301406072a8648ce3d020106092b06010401da470f01044c304a020"
- "1010420a6ab4e1bb782d580d837843089d65ebe271a0ee9b5a951777cecf1293c"
- "58c150a123032100c49b46ed73ecb7d3a6a3e44f54b8f00f9ab872b57dd79ded6"
- "6d7231a14c64144",
- "5db3b80a81cb63ca59470c83414ef70a",
+ "3067020100301406072a8648ce3d020106092b06010401da470f01044c304a0201010420d"
+ "b1c9dfba77e1e3b8687ea18af207cffca803bdd983f955376b8271ef9c78a46a123032100"
+ "8e4b29035c22b67b3a7a0f5a52f12b3ab17a9ae1f0c63b029137ba09f420224a",
+ "3067020100301406072a8648ce3d020106092b06010401da470f01044c304a02010104204"
+ "e335da3ec60e68c156586b8217de6801cb83b5a4de413645fcb112c00b2228ba123032100"
+ "94ea1227a357dfd3548aadb9ef19d9974add594871498e123390a8bcb4db5d51",
+ "0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82",
"456e6e796e20447572696e206172616e204d6f726961",
- "f4639297e3305b03d34dd5d86522ddc6ba11a608a0003670a30734823cdd3763",
- "396c06a52b39d0930594aa2c6944561cc1741f638557a12bef1c1cad349157c9",
- "baa4ecf96b5d6d536d0d7210",
+ "8e4b29035c22b67b3a7a0f5a52f12b3ab17a9ae1f0c63b029137ba09f420224a",
+ "a603fe0f9897dc6ce042a467d6bd430a01cd679e930f1b5706ad425e4153496d",
+ "318e48afae42913a928146e6",
{// Encryptions
{"4265617574792069732074727574682c20747275746820626561757479",
"436f756e742d30",
- "f97ca72675b8199e8ffec65b4c200d901110b177b246f241b6f9716fb60b35b"
- "32a6d452675534b591e8141468a"},
+ "c87f8158a501c7a2f31708bbdba10f9c5ad035624c3153eeb028e65b82f41f38cbe1cd9"
+ "aafb10e502d328b83c1"},
{"4265617574792069732074727574682c20747275746820626561757479",
"436f756e742d31",
- "57796e2b9dd0ddf807f1a7cb5884dfc50e61468c4fd69fa03963731e51674ca"
- "88fee94eeac3290734e1627ded6"},
+ "aef7a0b0e3a58b177dac9628439b44d1e706724e265ab3b46d791612b51637342479ad9"
+ "45607b8b54112bd8c86"},
{"4265617574792069732074727574682c20747275746820626561757479",
"436f756e742d32",
- "b514150af1057151687d0036a9b4a3ad50fb186253f839d8433622baa85719e"
- "d5d2532017a0ce7b9ca0007f276"}},
+ "c00884a5c658213bd4381d65b54d93682692fef9408a6e437a97a904267727269b242d3"
+ "d81725ad8f0c764e082"}},
{// Exports
- {"436f6e746578742d30", 32,
- "735400cd9b9193daffe840f412074728ade6b1978e9ae27957aacd588dbd7c9e"},
- {"436f6e746578742d31", 32,
- "cf4e351e1943d171ff2d88726f18160086ecbec52a8151dba8cf5ba0737a6097"},
- {"436f6e746578742d32", 32,
- "8e23b44d4f23dd906d1c100580a670d171132c9786212c4ca2876a1541a84fae"},
- {"436f6e746578742d33", 32,
- "56252a940ece53d4013eb619b444ee1d019a08eec427ded2b6dbf24be624a4a0"},
- {"436f6e746578742d34", 32,
- "fc6cdca9ce8ab062401478ffd16ee1c07e2b15d7c781d4227f07c6043d937fad"}}}};
-
+ {"", 32,
+ "23c31ee2757bbecf105f74c90bf1e640b6ddc545dc8d80b1abbf2aa9dd1786ce"},
+ {"00", 32,
+ "05af7597519945fe8443f7cb84cdb651a8dd18cd7bbbd65d31095d3c69c1257e"},
+ {"54657374436f6e74657874", 32,
+ "5814619f842c7c328c9657854154e51b581c7bbd3b646bd773be67f93900a109"}}},
+ // DHKEM(X25519, HKDF-SHA256), HKDF-SHA512, ChaCha20Poly1305, Base mode
+ // Tests KEM.hash != KDF.hash.
+ {4,
+ static_cast<HpkeModeId>(0),
+ static_cast<HpkeKemId>(32),
+ static_cast<HpkeKdfId>(3),
+ static_cast<HpkeAeadId>(3),
+ "4f6465206f6e2061204772656369616e2055726e",
+ "3067020100301406072a8648ce3d020106092b06010401da470f01044c304a02010104200"
+ "6e74abcc8b65671d1ef4a6cb273662c6a3b3ff6590852bfebc7bc94887f5c4ea123032100"
+ "de2746f66f3e14a3389f570e8f8cc1de4e39a89d1cbb445fad711d7acf407e15",
+ "3067020100301406072a8648ce3d020106092b06010401da470f01044c304a02010104202"
+ "dc14b2f31b233963f0a2d9a836072f29666fdea84a5893d30254deb9183e0a9a123032100"
+ "318f92c9e96142c4ce9a06ea04f7099698ee4160044f2db585d9e2b02abd6041",
+ "",
+ "",
+ "de2746f66f3e14a3389f570e8f8cc1de4e39a89d1cbb445fad711d7acf407e15",
+ "4a54adb318d8a420506b0473815a32c2b1923a936fa7c735c8a038a38fcc80d2",
+ "9c6d83a59628e7327d19a3d8",
+ {// Encryptions
+ {"4265617574792069732074727574682c20747275746820626561757479",
+ "436f756e742d30",
+ "59cbc98df2d7640598377e3184e07c008dea1c264c72a8414028715960ab6d6909a3110"
+ "e633a23baf8b9b5e2f1"},
+ {"4265617574792069732074727574682c20747275746820626561757479",
+ "436f756e742d31",
+ "c9a4b68ea349eea9fdf499f7577c9325e9b76f24308a81ac5dfbbee3489dd41c85d7fb3"
+ "5e585859ea5c790f155"},
+ {"4265617574792069732074727574682c20747275746820626561757479",
+ "436f756e742d32",
+ "5d9f717b192b43bea1f6bd25ee63d7b88b06019132c31a4e262a4c1d4f01c7bd70d00df"
+ "0e2f858cf654ae86447"}},
+ {// Exports
+ {"", 32,
+ "97b0ac016b9dedb5f115cf6fd24b927f8e75b48a2ab6069efe7fec6a18ff4272"},
+ {"00", 32,
+ "c994b47854104e476d9e47bb15f9fb66f4879f68bc89a4cfccc259e80a30c913"},
+ {"54657374436f6e74657874", 32,
+ "9199e5beeda45397b1bbee3dd13ad1afbd2963f83d9e5ebdf1e23b6c7e012317"}}},
+};
#endif // hpke_vectors_h__