summaryrefslogtreecommitdiff
path: root/automation/saw/poly1305.cry
diff options
context:
space:
mode:
Diffstat (limited to 'automation/saw/poly1305.cry')
-rw-r--r--automation/saw/poly1305.cry336
1 files changed, 0 insertions, 336 deletions
diff --git a/automation/saw/poly1305.cry b/automation/saw/poly1305.cry
deleted file mode 100644
index 6321a4f19..000000000
--- a/automation/saw/poly1305.cry
+++ /dev/null
@@ -1,336 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-/* This file provides a spec of the Poly1305 one-time authenticator.
- * See <https://tools.ietf.org/html/rfc7539> for details. */
-
-module poly1305 where
-
-P : [136]
-P = 2^^130 - 5
-
-Poly1305 : {n} (fin n) => [n][8] -> [16][8] -> [16][8] -> [16][8]
-Poly1305 msg r s = reverse (groupBy (drop ((rounds ! 0) + s')))
- where
- rounds = [zero] # [ Poly1305_block acc r' b | b <- blocks | acc <- rounds ]
- r' = zero # (Poly1305_clamp (join (reverse r)))
- s' = zero # (join (reverse s))
- blocks = Poly1305_split msg
-
-private
- // 0x0f - for r[3], r[7], r[11], r[15]
- // 0xfc - for r[4], r[8], r[12]
- Poly1305_clamp r = r && 0x0ffffffc0ffffffc0ffffffc0fffffff
-
- // Poly1305_block : ((acc + msg) * r) % P
- Poly1305_block : [136] -> [136] -> [136] -> [136]
- Poly1305_block acc r msg = drop (prod % (zero # P))
- where
- acc' : [137]
- // Add the current block to the accumulator.
- acc' = (zero # acc) + (zero # msg)
- prod : [273]
- // Multiply the new accumulator value by r.
- prod = ((zero : [137]) # r) * ((zero : [136]) # acc')
-
- Poly1305_split : {n, nb, nf} (fin n, nf == n / 16, nb == (n + 15) / 16) => [n][8] -> [nb][136]
- Poly1305_split msg = take ((h1 : [nf][136]) # h2)
- where
- // Split all full 16-byte blocks and append 0x01, then convert to LE.
- h1 = [ join (reverse (b # [0x01])) | b <- groupBy`{16} (take msg)]
- // Pad the remaining bytes (if any) and convert to LE.
- h2 = [join (reverse ((drop`{nf * 16} msg) # [0x01] # zero))]
-
-/* -------------------------------------------------------------------------- */
-/* -- Tests ----------------------------------------------------------------- */
-
-private
- // https://tools.ietf.org/html/rfc7539#section-2.5.2
- rval1 = [0x85, 0xd6, 0xbe, 0x78, 0x57, 0x55, 0x6d, 0x33,
- 0x7f, 0x44, 0x52, 0xfe, 0x42, 0xd5, 0x06, 0xa8]
- sval1 = [0x01, 0x03, 0x80, 0x8a, 0xfb, 0x0d, 0xb2, 0xfd,
- 0x4a, 0xbf, 0xf6, 0xaf, 0x41, 0x49, 0xf5, 0x1b]
- text1 = [0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x67, 0x72,
- 0x61, 0x70, 0x68, 0x69, 0x63, 0x20, 0x46, 0x6f,
- 0x72, 0x75, 0x6d, 0x20, 0x52, 0x65, 0x73, 0x65,
- 0x61, 0x72, 0x63, 0x68, 0x20, 0x47, 0x72, 0x6f,
- 0x75, 0x70]
-
- rfctest01 = Poly1305 text1 rval1 sval1
- == [0xa8, 0x06, 0x1d, 0xc1, 0x30, 0x51, 0x36, 0xc6,
- 0xc2, 0x2b, 0x8b, 0xaf, 0x0c, 0x01, 0x27, 0xa9]
-
- // https://tools.ietf.org/html/rfc7539#appendix-A.3
- // Test Vector #1
- rval2 = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
- sval2 = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
- text2 = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
-
- rfctest02 = Poly1305 text2 rval2 sval2
- == [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
-
- // https://tools.ietf.org/html/rfc7539#appendix-A.3
- // Test Vector #2
- rval3 = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
- sval3 = [0x36, 0xe5, 0xf6, 0xb5, 0xc5, 0xe0, 0x60, 0x70,
- 0xf0, 0xef, 0xca, 0x96, 0x22, 0x7a, 0x86, 0x3e]
- text3 = [0x41, 0x6e, 0x79, 0x20, 0x73, 0x75, 0x62, 0x6d,
- 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x74,
- 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x49, 0x45,
- 0x54, 0x46, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x6e,
- 0x64, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74,
- 0x68, 0x65, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x72,
- 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x20, 0x66,
- 0x6f, 0x72, 0x20, 0x70, 0x75, 0x62, 0x6c, 0x69,
- 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61,
- 0x73, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x6f, 0x72,
- 0x20, 0x70, 0x61, 0x72, 0x74, 0x20, 0x6f, 0x66,
- 0x20, 0x61, 0x6e, 0x20, 0x49, 0x45, 0x54, 0x46,
- 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65,
- 0x74, 0x2d, 0x44, 0x72, 0x61, 0x66, 0x74, 0x20,
- 0x6f, 0x72, 0x20, 0x52, 0x46, 0x43, 0x20, 0x61,
- 0x6e, 0x64, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x73,
- 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74,
- 0x20, 0x6d, 0x61, 0x64, 0x65, 0x20, 0x77, 0x69,
- 0x74, 0x68, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65,
- 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
- 0x20, 0x6f, 0x66, 0x20, 0x61, 0x6e, 0x20, 0x49,
- 0x45, 0x54, 0x46, 0x20, 0x61, 0x63, 0x74, 0x69,
- 0x76, 0x69, 0x74, 0x79, 0x20, 0x69, 0x73, 0x20,
- 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x64, 0x65, 0x72,
- 0x65, 0x64, 0x20, 0x61, 0x6e, 0x20, 0x22, 0x49,
- 0x45, 0x54, 0x46, 0x20, 0x43, 0x6f, 0x6e, 0x74,
- 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e,
- 0x22, 0x2e, 0x20, 0x53, 0x75, 0x63, 0x68, 0x20,
- 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e,
- 0x74, 0x73, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75,
- 0x64, 0x65, 0x20, 0x6f, 0x72, 0x61, 0x6c, 0x20,
- 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e,
- 0x74, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x49, 0x45,
- 0x54, 0x46, 0x20, 0x73, 0x65, 0x73, 0x73, 0x69,
- 0x6f, 0x6e, 0x73, 0x2c, 0x20, 0x61, 0x73, 0x20,
- 0x77, 0x65, 0x6c, 0x6c, 0x20, 0x61, 0x73, 0x20,
- 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x20,
- 0x61, 0x6e, 0x64, 0x20, 0x65, 0x6c, 0x65, 0x63,
- 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x20, 0x63,
- 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6d, 0x61,
- 0x64, 0x65, 0x20, 0x61, 0x74, 0x20, 0x61, 0x6e,
- 0x79, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x6f,
- 0x72, 0x20, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x2c,
- 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x61,
- 0x72, 0x65, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65,
- 0x73, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f]
-
- rfctest03 = Poly1305 text3 rval3 sval3
- == [0x36, 0xe5, 0xf6, 0xb5, 0xc5, 0xe0, 0x60, 0x70,
- 0xf0, 0xef, 0xca, 0x96, 0x22, 0x7a, 0x86, 0x3e]
-
- // https://tools.ietf.org/html/rfc7539#appendix-A.3
- // Test Vector #3
- rval4 = [0x36, 0xe5, 0xf6, 0xb5, 0xc5, 0xe0, 0x60, 0x70,
- 0xf0, 0xef, 0xca, 0x96, 0x22, 0x7a, 0x86, 0x3e]
- sval4 = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
- text4 = [0x41, 0x6e, 0x79, 0x20, 0x73, 0x75, 0x62, 0x6d,
- 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x74,
- 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x49, 0x45,
- 0x54, 0x46, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x6e,
- 0x64, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74,
- 0x68, 0x65, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x72,
- 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x20, 0x66,
- 0x6f, 0x72, 0x20, 0x70, 0x75, 0x62, 0x6c, 0x69,
- 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61,
- 0x73, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x6f, 0x72,
- 0x20, 0x70, 0x61, 0x72, 0x74, 0x20, 0x6f, 0x66,
- 0x20, 0x61, 0x6e, 0x20, 0x49, 0x45, 0x54, 0x46,
- 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65,
- 0x74, 0x2d, 0x44, 0x72, 0x61, 0x66, 0x74, 0x20,
- 0x6f, 0x72, 0x20, 0x52, 0x46, 0x43, 0x20, 0x61,
- 0x6e, 0x64, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x73,
- 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74,
- 0x20, 0x6d, 0x61, 0x64, 0x65, 0x20, 0x77, 0x69,
- 0x74, 0x68, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65,
- 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
- 0x20, 0x6f, 0x66, 0x20, 0x61, 0x6e, 0x20, 0x49,
- 0x45, 0x54, 0x46, 0x20, 0x61, 0x63, 0x74, 0x69,
- 0x76, 0x69, 0x74, 0x79, 0x20, 0x69, 0x73, 0x20,
- 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x64, 0x65, 0x72,
- 0x65, 0x64, 0x20, 0x61, 0x6e, 0x20, 0x22, 0x49,
- 0x45, 0x54, 0x46, 0x20, 0x43, 0x6f, 0x6e, 0x74,
- 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e,
- 0x22, 0x2e, 0x20, 0x53, 0x75, 0x63, 0x68, 0x20,
- 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e,
- 0x74, 0x73, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75,
- 0x64, 0x65, 0x20, 0x6f, 0x72, 0x61, 0x6c, 0x20,
- 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e,
- 0x74, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x49, 0x45,
- 0x54, 0x46, 0x20, 0x73, 0x65, 0x73, 0x73, 0x69,
- 0x6f, 0x6e, 0x73, 0x2c, 0x20, 0x61, 0x73, 0x20,
- 0x77, 0x65, 0x6c, 0x6c, 0x20, 0x61, 0x73, 0x20,
- 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x20,
- 0x61, 0x6e, 0x64, 0x20, 0x65, 0x6c, 0x65, 0x63,
- 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x20, 0x63,
- 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6d, 0x61,
- 0x64, 0x65, 0x20, 0x61, 0x74, 0x20, 0x61, 0x6e,
- 0x79, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x6f,
- 0x72, 0x20, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x2c,
- 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x61,
- 0x72, 0x65, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65,
- 0x73, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f]
-
- rfctest04 = Poly1305 text4 rval4 sval4
- == [0xf3, 0x47, 0x7e, 0x7c, 0xd9, 0x54, 0x17, 0xaf,
- 0x89, 0xa6, 0xb8, 0x79, 0x4c, 0x31, 0x0c, 0xf0]
-
- // https://tools.ietf.org/html/rfc7539#appendix-A.3
- // Test Vector #4
- rval5 = [0x1c, 0x92, 0x40, 0xa5, 0xeb, 0x55, 0xd3, 0x8a,
- 0xf3, 0x33, 0x88, 0x86, 0x04, 0xf6, 0xb5, 0xf0]
- sval5 = [0x47, 0x39, 0x17, 0xc1, 0x40, 0x2b, 0x80, 0x09,
- 0x9d, 0xca, 0x5c, 0xbc, 0x20, 0x70, 0x75, 0xc0]
- text5 = [0x27, 0x54, 0x77, 0x61, 0x73, 0x20, 0x62, 0x72,
- 0x69, 0x6c, 0x6c, 0x69, 0x67, 0x2c, 0x20, 0x61,
- 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73,
- 0x6c, 0x69, 0x74, 0x68, 0x79, 0x20, 0x74, 0x6f,
- 0x76, 0x65, 0x73, 0x0a, 0x44, 0x69, 0x64, 0x20,
- 0x67, 0x79, 0x72, 0x65, 0x20, 0x61, 0x6e, 0x64,
- 0x20, 0x67, 0x69, 0x6d, 0x62, 0x6c, 0x65, 0x20,
- 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77,
- 0x61, 0x62, 0x65, 0x3a, 0x0a, 0x41, 0x6c, 0x6c,
- 0x20, 0x6d, 0x69, 0x6d, 0x73, 0x79, 0x20, 0x77,
- 0x65, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20,
- 0x62, 0x6f, 0x72, 0x6f, 0x67, 0x6f, 0x76, 0x65,
- 0x73, 0x2c, 0x0a, 0x41, 0x6e, 0x64, 0x20, 0x74,
- 0x68, 0x65, 0x20, 0x6d, 0x6f, 0x6d, 0x65, 0x20,
- 0x72, 0x61, 0x74, 0x68, 0x73, 0x20, 0x6f, 0x75,
- 0x74, 0x67, 0x72, 0x61, 0x62, 0x65, 0x2e]
-
- rfctest05 = Poly1305 text5 rval5 sval5
- == [0x45, 0x41, 0x66, 0x9a, 0x7e, 0xaa, 0xee, 0x61,
- 0xe7, 0x08, 0xdc, 0x7c, 0xbc, 0xc5, 0xeb, 0x62]
-
- // https://tools.ietf.org/html/rfc7539#appendix-A.3
- // Test Vector #5
- rval6 = [0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
- sval6 = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
- text6 = [0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]
-
- rfctest06 = Poly1305 text6 rval6 sval6
- == [0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
-
- // https://tools.ietf.org/html/rfc7539#appendix-A.3
- // Test Vector #6
- rval7 = [0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
- sval7 = [0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]
- text7 = [0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
-
- rfctest07 = Poly1305 text7 rval7 sval7
- == [0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
-
- // https://tools.ietf.org/html/rfc7539#appendix-A.3
- // Test Vector #7
- rval8 = [0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
- sval8 = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
- text8 = [0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
-
- rfctest08 = Poly1305 text8 rval8 sval8
- == [0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
-
- // https://tools.ietf.org/html/rfc7539#appendix-A.3
- // Test Vector #8
- rval9 = [0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
- sval9 = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
- text9 = [0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xfb, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
- 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01]
-
- rfctest09 = Poly1305 text9 rval9 sval9
- == [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
-
- // https://tools.ietf.org/html/rfc7539#appendix-A.3
- // Test Vector #9
- rval10 = [0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
- sval10 = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
- text10 = [0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]
-
- rfctest10 = Poly1305 text10 rval10 sval10
- == [0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]
-
- // https://tools.ietf.org/html/rfc7539#appendix-A.3
- // Test Vector #10
- rval11 = [0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
- sval11 = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
- text11 = [0xe3, 0x35, 0x94, 0xd7, 0x50, 0x5e, 0x43, 0xb9,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x33, 0x94, 0xd7, 0x50, 0x5e, 0x43, 0x79, 0xcd,
- 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
-
- rfctest11 = Poly1305 text11 rval11 sval11
- == [0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
-
- // https://tools.ietf.org/html/rfc7539#appendix-A.3
- // Test Vector #11
- rval12 = [0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
- sval12 = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
- text12 = [0xe3, 0x35, 0x94, 0xd7, 0x50, 0x5e, 0x43, 0xb9,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x33, 0x94, 0xd7, 0x50, 0x5e, 0x43, 0x79, 0xcd,
- 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
-
- rfctest12 = Poly1305 text12 rval12 sval12
- == [0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
-
-property allTestsPass =
- ([ // Full RFC test vectors
- rfctest01, rfctest02, rfctest03, rfctest04,
- rfctest05, rfctest06, rfctest07, rfctest08,
- rfctest09, rfctest10, rfctest11, rfctest12
- ] : [_]Bit) == ~zero // All test bits should equal one