summaryrefslogtreecommitdiffstats
path: root/web/server/h2o/libh2o/deps/picotls/deps/cifra/src/testpoly1305.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--web/server/h2o/libh2o/deps/picotls/deps/cifra/src/testpoly1305.c102
1 files changed, 102 insertions, 0 deletions
diff --git a/web/server/h2o/libh2o/deps/picotls/deps/cifra/src/testpoly1305.c b/web/server/h2o/libh2o/deps/picotls/deps/cifra/src/testpoly1305.c
new file mode 100644
index 00000000..3ecf1ca8
--- /dev/null
+++ b/web/server/h2o/libh2o/deps/picotls/deps/cifra/src/testpoly1305.c
@@ -0,0 +1,102 @@
+/*
+ * cifra - embedded cryptography library
+ * Written in 2014 by Joseph Birr-Pixton <jpixton@gmail.com>
+ *
+ * To the extent possible under law, the author(s) have dedicated all
+ * copyright and related and neighboring rights to this software to the
+ * public domain worldwide. This software is distributed without any
+ * warranty.
+ *
+ * You should have received a copy of the CC0 Public Domain Dedication
+ * along with this software. If not, see
+ * <http://creativecommons.org/publicdomain/zero/1.0/>.
+ */
+
+
+#include "poly1305.h"
+
+#include "testutil.h"
+#include "handy.h"
+#include "cutest.h"
+
+static void check(const char *rstr, const char *sstr,
+ const char *msgstr, const char *tagstr)
+{
+ uint8_t r[16], s[16], tag[16];
+ uint8_t msg[132], out[16];
+
+ unhex(r, sizeof r, rstr);
+ unhex(s, sizeof s, sstr);
+ size_t nmsg = unhex(msg, sizeof msg, msgstr);
+ unhex(tag, sizeof tag, tagstr);
+
+ cf_poly1305 ctx;
+ cf_poly1305_init(&ctx, r, s);
+ cf_poly1305_update(&ctx, msg, nmsg);
+ cf_poly1305_finish(&ctx, out);
+
+ TEST_CHECK(memcmp(out, tag, 16) == 0);
+}
+
+static void test_poly1305(void)
+{
+ check("eea6a7251c1e72916d11c2cb214d3c25",
+ "2539121d8e234e652d651fa4c8cff880",
+ "8e993b9f48681273c29650ba32fc76ce48332ea7164d96a4476fb8c531a1186ac0dfc17c98dce87b4da7f011ec48c97271d2c20f9b928fe2270d6fb863d51738b48eeee314a7cc8ab932164548e526ae90224368517acfeabd6bb3732bc0e9da99832b61ca01b6de56244a9e88d5f9b37973f622a43d14a6599b1f654cb45a74e355a5",
+ "f3ffc7703f9400e52a7dfb4b3d3305d9");
+
+ check("851fc40c3467ac0be05cc20404f3f700",
+ "580b3b0f9447bb1e69d095b5928b6dbc",
+ "f3f6",
+ "f4c633c3044fc145f84f335cb81953de");
+
+ check("a0f3080000f46400d0c7e9076c834403",
+ "dd3fab2251f11ac759f0887129cc2ee7",
+ "",
+ "dd3fab2251f11ac759f0887129cc2ee7");
+
+ check("48443d0bb0d21109c89a100b5ce2c208",
+ "83149c69b561dd88298a1798b10716ef",
+ "663cea190ffb83d89593f3f476b6bc24d7e679107ea26adb8caf6652d0656136",
+ "0ee1c16bb73f0f4fd19881753c01cdbe");
+
+ check("12976a08c4426d0ce8a82407c4f48207",
+ "80f8c20aa71202d1e29179cbcb555a57",
+ "ab0812724a7f1e342742cbed374d94d136c6b8795d45b3819830f2c04491faf0990c62e48b8018b2c3e4a0fa3134cb67fa83e158c994d961c4cb21095c1bf9",
+ "5154ad0d2cb26e01274fc51148491f1b");
+
+ /* extras from RFC7539 */
+ check("02000000000000000000000000000000",
+ "00000000000000000000000000000000",
+ "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF",
+ "03000000000000000000000000000000");
+ check("02000000000000000000000000000000",
+ "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF",
+ "02000000000000000000000000000000",
+ "03000000000000000000000000000000");
+ check("01000000000000000000000000000000",
+ "00000000000000000000000000000000",
+ "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11000000000000000000000000000000",
+ "05000000000000000000000000000000");
+ check("01000000000000000000000000000000",
+ "00000000000000000000000000000000",
+ "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE01010101010101010101010101010101",
+ "00000000000000000000000000000000");
+ check("02000000000000000000000000000000",
+ "00000000000000000000000000000000",
+ "FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF",
+ "FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");
+ check("01000000000000000400000000000000",
+ "00000000000000000000000000000000",
+ "E33594D7505E43B900000000000000003394D7505E4379CD01000000000000000000000000000000000000000000000001000000000000000000000000000000",
+ "14000000000000005500000000000000");
+ check("01000000000000000400000000000000",
+ "00000000000000000000000000000000",
+ "E33594D7505E43B900000000000000003394D7505E4379CD010000000000000000000000000000000000000000000000",
+ "13000000000000000000000000000000");
+}
+
+TEST_LIST = {
+ { "poly1305", test_poly1305 },
+ { 0 }
+};