)]}' { "commit": "b2c312d670b9967cf881419758f0ec286b66a25f", "tree": "e0142f6357c84fdf2470172cc3423ec7c787fc4f", "parents": [ "5b280a80dfdb70939d725cd22a1a0a902c2fdbef" ], "author": { "name": "Adam Langley", "email": "agl@google.com", "time": "Fri Nov 03 12:03:13 2017 -0700" }, "committer": { "name": "CQ bot account: commit-bot@chromium.org", "email": "commit-bot@chromium.org", "time": "Fri Nov 03 22:39:31 2017 +0000" }, "message": "curve25519: fiat-crypto field arithmetic.\n\nEach operation was translated from fiat-crypto output using fiat-crypto\nprettyprint.py. For example fe_mul is synthesized in\nhttps://github.com/mit-plv/fiat-crypto/blob/master/src/Specific/X25519/C32/femul.v,\nand shown in the last Coq-compatible form at\nhttps://github.com/mit-plv/fiat-crypto/blob/master/src/Specific/X25519/C32/femulDisplay.log.\n\nBenchmarks on Google Cloud\u0027s unidentified Intel Xeon with AVX2:\n\ngit checkout $VARIANT \u0026\u0026 ( cd build \u0026\u0026 rm -rf * \u0026\u0026 CC\u003dclang CXX\u003dclang++ cmake -GNinja -DCMAKE_TOOLCHAIN_FILE\u003d../util/32-bit-toolchain.cmake -DCMAKE_BUILD_TYPE\u003dRelease .. \u0026\u0026 ninja \u0026\u0026 ./tool/bssl speed -filter 25519 )\n\nthis branch:\n\nDid 11382 Ed25519 key generation operations in 1053046us (10808.6 ops/sec)\nDid 11169 Ed25519 signing operations in 1038080us (10759.3 ops/sec)\nDid 2925 Ed25519 verify operations in 1001346us (2921.1 ops/sec)\nDid 12000 Curve25519 base-point multiplication operations in 1084851us (11061.4 ops/sec)\nDid 3850 Curve25519 arbitrary point multiplication operations in 1085565us (3546.5 ops/sec)\n\nDid 11466 Ed25519 key generation operations in 1049821us (10921.9 ops/sec)\nDid 11000 Ed25519 signing operations in 1013317us (10855.4 ops/sec)\nDid 3047 Ed25519 verify operations in 1043846us (2919.0 ops/sec)\nDid 12000 Curve25519 base-point multiplication operations in 1068924us (11226.2 ops/sec)\nDid 3850 Curve25519 arbitrary point multiplication operations in 1090598us (3530.2 ops/sec)\n\nDid 10309 Ed25519 key generation operations in 1003320us (10274.9 ops/sec)\nDid 11000 Ed25519 signing operations in 1017862us (10807.0 ops/sec)\nDid 3135 Ed25519 verify operations in 1098624us (2853.6 ops/sec)\nDid 9000 Curve25519 base-point multiplication operations in 1046608us (8599.2 ops/sec)\nDid 3132 Curve25519 arbitrary point multiplication operations in 1038963us (3014.5 ops/sec)\n\nmaster:\n\nDid 11564 Ed25519 key generation operations in 1068762us (10820.0 ops/sec)\nDid 11104 Ed25519 signing operations in 1024278us (10840.8 ops/sec)\nDid 3206 Ed25519 verify operations in 1049179us (3055.7 ops/sec)\nDid 12000 Curve25519 base-point multiplication operations in 1073619us (11177.1 ops/sec)\nDid 3550 Curve25519 arbitrary point multiplication operations in 1000279us (3549.0 ops/sec)\nandreser@linux-andreser:~/boringssl$ build/tool/bssl speed -filter 25519\nDid 11760 Ed25519 key generation operations in 1072495us (10965.1 ops/sec)\nDid 10800 Ed25519 signing operations in 1003486us (10762.5 ops/sec)\nDid 3245 Ed25519 verify operations in 1080399us (3003.5 ops/sec)\nDid 12000 Curve25519 base-point multiplication operations in 1076021us (11152.2 ops/sec)\nDid 3570 Curve25519 arbitrary point multiplication operations in 1005087us (3551.9 ops/sec)\nandreser@linux-andreser:~/boringssl$ build/tool/bssl speed -filter 25519\nDid 11438 Ed25519 key generation operations in 1041115us (10986.3 ops/sec)\nDid 11000 Ed25519 signing operations in 1012589us (10863.2 ops/sec)\nDid 3312 Ed25519 verify operations in 1082834us (3058.6 ops/sec)\nDid 12000 Curve25519 base-point multiplication operations in 1061318us (11306.7 ops/sec)\nDid 3580 Curve25519 arbitrary point multiplication operations in 1004923us (3562.5 ops/sec)\n\nsquashed: curve25519: convert field constants to unsigned.\n\nimport re, sys, math\n\ndef weight(i):\n return 2**int(math.ceil(25.5*i))\n\ndef convert(t):\n limbs \u003d [x for x in t.groups() if x.replace(\u0027-\u0027,\u0027\u0027).isdigit()]\n v \u003d sum(weight(i)*x for (i,x) in enumerate(map(int, limbs))) % (2**255-19)\n limbs \u003d [(v % weight(i+1)) // weight(i) for i in range(10)]\n assert v \u003d\u003d sum(weight(i)*x for (i,x) in enumerate(limbs))\n\n i \u003d 0\n ret \u003d \u0027\u0027\n for s in t.groups():\n if s.replace(\u0027-\u0027,\u0027\u0027).isdigit():\n ret +\u003d str(limbs[i])\n i +\u003d 1\n else:\n ret +\u003d s\n return ret\n\nfe_re \u003d re.compile(r\u0027(\\s*,\\s*)\u0027.join(r\u0027(-?\\d+)\u0027 for i in range(10)))\nprint (re.sub(fe_re, convert, sys.stdin.read()))\n\nChange-Id: Ibd4f7f5c38e5c4d61c9826afb406baebe2be5168\nReviewed-on: https://boringssl-review.googlesource.com/22385\nReviewed-by: Adam Langley \u003cagl@google.com\u003e\nCommit-Queue: Adam Langley \u003cagl@google.com\u003e\nCQ-Verified: CQ bot account: commit-bot@chromium.org \u003ccommit-bot@chromium.org\u003e\n", "tree_diff": [ { "type": "modify", "old_id": "9eb5bb493919f61f8447e1916fa0a263377c4176", "old_mode": 33188, "old_path": "LICENSE", "new_id": "ff4116fad40990741802d9810b1ab31855a04a0e", "new_mode": 33188, "new_path": "LICENSE" }, { "type": "add", "old_id": "0000000000000000000000000000000000000000", "old_mode": 0, "old_path": "/dev/null", "new_id": "bd46c61374f7e73eb0b0b0cc6f2f2d44bd47384c", "new_mode": 33188, "new_path": "third_party/fiat/LICENSE" }, { "type": "add", "old_id": "0000000000000000000000000000000000000000", "old_mode": 0, "old_path": "/dev/null", "new_id": "bae0285b4d44157a742b866a0842c5767eb89855", "new_mode": 33188, "new_path": "third_party/fiat/METADATA" }, { "type": "add", "old_id": "0000000000000000000000000000000000000000", "old_mode": 0, "old_path": "/dev/null", "new_id": "55127152410cb1961abdc17843487f36ec5f25c3", "new_mode": 33188, "new_path": "third_party/fiat/README.md" }, { "type": "modify", "old_id": "b1354817be22038aefd3ef0a687cb40af5a53c72", "old_mode": 33188, "old_path": "third_party/fiat/curve25519.c", "new_id": "d54aa839e60fa7264263476aadd9ea9f3b1ab789", "new_mode": 33188, "new_path": "third_party/fiat/curve25519.c" }, { "type": "modify", "old_id": "68de500153259e9d809b257aab5488494e550b85", "old_mode": 33188, "old_path": "third_party/fiat/internal.h", "new_id": "10218e06569c9266cba80cccb5dfb2135c45f4cb", "new_mode": 33188, "new_path": "third_party/fiat/internal.h" } ] }