aboutsummaryrefslogtreecommitdiff
path: root/analysis/countermeasures/curvegen.ipynb
diff options
context:
space:
mode:
Diffstat (limited to 'analysis/countermeasures/curvegen.ipynb')
-rw-r--r--analysis/countermeasures/curvegen.ipynb202
1 files changed, 0 insertions, 202 deletions
diff --git a/analysis/countermeasures/curvegen.ipynb b/analysis/countermeasures/curvegen.ipynb
deleted file mode 100644
index 949fe8e..0000000
--- a/analysis/countermeasures/curvegen.ipynb
+++ /dev/null
@@ -1,202 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "id": "a98d0f65-3419-4c00-9921-66b5d3e3ee44",
- "metadata": {},
- "source": [
- "# Curve generation"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "4a81787a-c139-479f-84a5-93d4fd07698a",
- "metadata": {},
- "outputs": [],
- "source": [
- "import itertools\n",
- "import random\n",
- "import time\n",
- "import json\n",
- "\n",
- "import cypari2\n",
- "\n",
- "from subprocess import Popen, PIPE\n",
- "\n",
- "from tqdm.auto import trange, tqdm\n",
- "\n",
- "from common import divisor_map"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "1d385964-888d-4704-8ff8-40ebf2fac3da",
- "metadata": {},
- "outputs": [],
- "source": [
- "bits = 256"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "227173fe-308f-4c2f-abf9-9a4480600484",
- "metadata": {
- "scrolled": true
- },
- "outputs": [],
- "source": [
- "pari = cypari2.Pari()\n",
- "orders = []\n",
- "for divisor in tqdm(divisor_map[\"all\"]):\n",
- " dbits = divisor.bit_length()\n",
- " pbits = bits - dbits\n",
- " if dbits == bits:\n",
- " print(divisor, 1)\n",
- " orders.append((divisor, 1, divisor))\n",
- " continue\n",
- " if dbits > bits:\n",
- " print(f\"Cannot fill in for divisor with {dbits}.\")\n",
- " continue\n",
- " while True:\n",
- " prime = int(pari.randomprime([2**(pbits-1), 2**(pbits+1)]))\n",
- " order = divisor * prime\n",
- " if order.bit_length() == bits:\n",
- " break\n",
- " print(divisor, prime)\n",
- " orders.append((divisor, prime, order))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "93fc0fc1-f1d5-48e3-90db-5907f3530813",
- "metadata": {},
- "outputs": [],
- "source": [
- "with open(\"curves_1.json\", \"r\") as f:\n",
- " parsed = json.load(f)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "af70d331-8ac7-4985-ab98-0201c6c399fb",
- "metadata": {},
- "outputs": [],
- "source": [
- "commands = []\n",
- "processes = []\n",
- "for divisor, prime, order in orders:\n",
- " if str(divisor) in parsed:\n",
- " continue\n",
- " command = [\"./ecgen\", \"--fp\", \"-n\", f\"{divisor},{prime}\", \"-u\", \"--points\", \"none\", \"-m\", \"12g\", \"--threads\", \"8\", str(bits)]\n",
- " commands.append(command)\n",
- " print(\" \".join(command))\n",
- "\n",
- "random.shuffle(commands)\n",
- "total = len(commands)\n",
- "\n",
- "results = {}\n",
- "errored = {}\n",
- "running = []\n",
- "max_procs = 20\n",
- "with tqdm(total=total, smoothing=0, desc=\"Computing curves\") as pbar:\n",
- " while commands or running:\n",
- " done = []\n",
- " for cmd, start, proc in running:\n",
- " now = time.time()\n",
- " divisor = int(cmd[3].split(\",\")[0])\n",
- " if (ret := proc.poll()) is not None:\n",
- " print(\" \".join(cmd))\n",
- " err = proc.stderr.read()\n",
- " res = proc.stdout.read()\n",
- " if err:\n",
- " errored[divisor] = err\n",
- " print(err)\n",
- " else:\n",
- " results[divisor] = res\n",
- " pbar.update(1)\n",
- " done.append((cmd, start, proc))\n",
- " if len(results) % 10 == 0:\n",
- " print(f\"Results {len(results)}, remaining {len(commands)}, errored {len(errored)}\")\n",
- " elif now - start > 60 * 60:\n",
- " print(\"Timed out: \" + \" \".join(cmd))\n",
- " errored[divisor] = \"timeout\"\n",
- " proc.kill()\n",
- " pbar.update(1)\n",
- " done.append((cmd, start, proc))\n",
- " for d in done:\n",
- " running.remove(d)\n",
- " time.sleep(1)\n",
- " while len(running) < max_procs and commands:\n",
- " command = commands.pop()\n",
- " start = time.time()\n",
- " proc = Popen(command, stdout=PIPE, stderr=PIPE, text=True)\n",
- " running.append((command, start, proc))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "ddd92921-ccdd-4978-b36f-65872973d138",
- "metadata": {},
- "outputs": [],
- "source": [
- "with open(\"curves_1.json\", \"r\") as f:\n",
- " parsed = json.load(f)\n",
- "if results:\n",
- " for div, res in results.items():\n",
- " try:\n",
- " data = json.loads(res)\n",
- " parsed[str(div)] = data[0]\n",
- " print(\"ok\", div)\n",
- " except:\n",
- " print(\"failed\", div)\n",
- "with open(\"curves_1.json\", \"w\") as f:\n",
- " json.dump(parsed, f)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "c26f55ff-4cf4-43d0-b1ed-5f3c0c6708df",
- "metadata": {},
- "outputs": [],
- "source": [
- "len(parsed)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "5bf5e3e7-7472-458b-bdc8-e5b7a8d65ec1",
- "metadata": {},
- "outputs": [],
- "source": []
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.12.3"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 5
-}