aboutsummaryrefslogtreecommitdiff
path: root/src/Experiments
diff options
context:
space:
mode:
authorGravatar Rob Sloan <varomodt@gmail.com>2016-10-06 11:21:56 -0700
committerGravatar Rob Sloan <varomodt@gmail.com>2016-10-06 11:21:56 -0700
commitfdc9457ef2e23d081492962b9b08ec4bdcd0ffb0 (patch)
treea8d8a8c2a5fc51d876a22b28ce06b7def9dbb912 /src/Experiments
parentb4149da4a5df358aef6ba32f1d66b0fa813aea66 (diff)
parentbd40805a09cc060531c5a1e7a69329255150f991 (diff)
Merge _CoqProject
Diffstat (limited to 'src/Experiments')
-rw-r--r--src/Experiments/c.sh19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/Experiments/c.sh b/src/Experiments/c.sh
new file mode 100644
index 000000000..12757595b
--- /dev/null
+++ b/src/Experiments/c.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+cat << EOF
+#include <stdint.h>
+
+typedef struct { uint64_t v[10]; } fe25519;
+typedef struct { fe25519 X, Y, Z, T; } ge25519;
+
+void ge25519_add(ge25519 *R, ge25519 *P, ge25519 *Q) {
+EOF
+
+python -c "print ('\n'.join('\tuint64_t %s_%s_%d = %s->%s.v[%i];'%(P,c,i,P,c,i) for i in range(10) for c in 'XYZT' for P in 'PQ'))"
+grep '^\s*(\*\s*let' SpecificCurve25519.v | sed 's#(\*##g' | sed 's#\s*let#\tuint64_t#g' | sed 's#:=#=#g' | sed 's#\s\+in#;#g' | sed 's#\s*\*)##g'
+grep -A4 '^\s*(\*\s*let' SpecificCurve25519.v | tail -4 | tr -dc '0123456789x \n' | python -c "import sys; print ('\tge25519 ret = {{' + '},\n\t{'.join(', '.join(line.split()) for line in sys.stdin) + '}};')"
+
+cat << EOF
+ *R = ret;
+}
+EOF