summaryrefslogtreecommitdiffstats
path: root/security/nss/automation/saw/poly1305-hacl.saw
diff options
context:
space:
mode:
authorMoonchild <mcwerewolf@gmail.com>2018-06-12 00:58:35 +0200
committerGitHub <noreply@github.com>2018-06-12 00:58:35 +0200
commitb0f5f9bc6bb3c8b5ab7b5120dbf7ec48f8445387 (patch)
tree40d946c5ff23b3c0c09558f478cc68e87cc71448 /security/nss/automation/saw/poly1305-hacl.saw
parentb1d82a62259c6888ea6f3f71f3e0973ea4b4e85e (diff)
parent505a561549b5226fd3c7905eaa61fe787dfad243 (diff)
downloadUXP-b0f5f9bc6bb3c8b5ab7b5120dbf7ec48f8445387.tar
UXP-b0f5f9bc6bb3c8b5ab7b5120dbf7ec48f8445387.tar.gz
UXP-b0f5f9bc6bb3c8b5ab7b5120dbf7ec48f8445387.tar.lz
UXP-b0f5f9bc6bb3c8b5ab7b5120dbf7ec48f8445387.tar.xz
UXP-b0f5f9bc6bb3c8b5ab7b5120dbf7ec48f8445387.zip
Merge pull request #477 from JustOff/PR_nss-3.36
Update NSS/NSPR to 3.36.4/4.19
Diffstat (limited to 'security/nss/automation/saw/poly1305-hacl.saw')
-rw-r--r--security/nss/automation/saw/poly1305-hacl.saw38
1 files changed, 38 insertions, 0 deletions
diff --git a/security/nss/automation/saw/poly1305-hacl.saw b/security/nss/automation/saw/poly1305-hacl.saw
new file mode 100644
index 000000000..a4dfff6d9
--- /dev/null
+++ b/security/nss/automation/saw/poly1305-hacl.saw
@@ -0,0 +1,38 @@
+// 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/.
+
+import "poly1305.cry" as poly1305;
+
+print "Proving Poly1305 spec...";
+prove_print abc {{ poly1305::allTestsPass }};
+
+print "Loading LLVM bitcode...";
+m <- llvm_load_module "../../../dist/Debug/lib/libfreeblpriv3.so.bc";
+
+let SpecPoly1305 n = do {
+ llvm_ptr "output" (llvm_array 16 (llvm_int 8));
+ output <- llvm_var "*output" (llvm_array 16 (llvm_int 8));
+
+ llvm_ptr "input" (llvm_array n (llvm_int 8));
+ input <- llvm_var "*input" (llvm_array n (llvm_int 8));
+
+ llvm_var "len1" (llvm_int 64);
+ llvm_ptr "k1" (llvm_array 32 (llvm_int 8));
+ k1 <- llvm_var "*k1" (llvm_array 32 (llvm_int 8));
+
+ llvm_assert_eq "*input" {{ zero : [n][8] }};
+ llvm_assert_eq "len1" {{ `n : [64] }};
+
+ llvm_assert_eq "*k1" {{ zero : [32][8] }};
+
+ let res = {{ poly1305::Poly1305 input (take`{16} k1) (drop`{16} k1) }};
+ llvm_ensure_eq "*output" {{ res }};
+
+ llvm_verify_tactic abc;
+};
+
+print "Proving equality for a single block...";
+// This is currently disabled as it takes way too long. We need to help Z3
+// prove this before we can enable it on Taskcluster.
+//time (llvm_verify m "Hacl_Poly1305_64_crypto_onetimeauth" [] (SpecPoly1305 16));