ark-curves-cherry-picked/curve25519/scripts/g1.ipynb
curve25519/scripts/g1.ipynbRaw
1{
2 "cells": [
3 {
4 "cell_type": "code",
5 "execution_count": 1,
6 "id": "f890e69f",
7 "metadata": {},
8 "outputs": [],
9 "source": [
10 "q = pow(2,255) - 19"
11 ]
12 },
13 {
14 "cell_type": "code",
15 "execution_count": 2,
16 "id": "d90a7f0b",
17 "metadata": {},
18 "outputs": [],
19 "source": [
20 "A = 486662\n",
21 "B = 1"
22 ]
23 },
24 {
25 "cell_type": "code",
26 "execution_count": 3,
27 "id": "1b2aebc5",
28 "metadata": {},
29 "outputs": [
30 {
31 "name": "stdout",
32 "output_type": "stream",
33 "text": [
34 "486664\n",
35 "486660\n"
36 ]
37 }
38 ],
39 "source": [
40 "a = (A + 2) * 1\n",
41 "d = (A - 2) * 1\n",
42 "print(a)\n",
43 "print(d)"
44 ]
45 },
46 {
47 "cell_type": "code",
48 "execution_count": 4,
49 "id": "aae2f8bf",
50 "metadata": {},
51 "outputs": [
52 {
53 "data": {
54 "text/plain": [
55 "9"
56 ]
57 },
58 "execution_count": 4,
59 "metadata": {},
60 "output_type": "execute_result"
61 }
62 ],
63 "source": [
64 "u = 9\n",
65 "u"
66 ]
67 },
68 {
69 "cell_type": "code",
70 "execution_count": 5,
71 "id": "ea9a4d90",
72 "metadata": {},
73 "outputs": [
74 {
75 "data": {
76 "text/plain": [
77 "14781619447589544791020593568409986887264606134616475288964881837755586237401"
78 ]
79 },
80 "execution_count": 5,
81 "metadata": {},
82 "output_type": "execute_result"
83 }
84 ],
85 "source": [
86 "v = mod(u^3 + A * u^2 + u, q).sqrt()\n",
87 "v"
88 ]
89 },
90 {
91 "cell_type": "code",
92 "execution_count": 6,
93 "id": "95895004",
94 "metadata": {},
95 "outputs": [
96 {
97 "data": {
98 "text/plain": [
99 "38213832894368730265794714087330135568483813637251082400757400312561599933396"
100 ]
101 },
102 "execution_count": 6,
103 "metadata": {},
104 "output_type": "execute_result"
105 }
106 ],
107 "source": [
108 "u * pow(v, -1, q) % q"
109 ]
110 },
111 {
112 "cell_type": "code",
113 "execution_count": 7,
114 "id": "1134cf74",
115 "metadata": {},
116 "outputs": [
117 {
118 "data": {
119 "text/plain": [
120 "46316835694926478169428394003475163141307993866256225615783033603165251855960"
121 ]
122 },
123 "execution_count": 7,
124 "metadata": {},
125 "output_type": "execute_result"
126 }
127 ],
128 "source": [
129 "(u - 1) * pow(u + 1, -1, q) % q"
130 ]
131 },
132 {
133 "cell_type": "code",
134 "execution_count": null,
135 "id": "ec089e21",
136 "metadata": {},
137 "outputs": [],
138 "source": []
139 }
140 ],
141 "metadata": {
142 "kernelspec": {
143 "display_name": "SageMath 9.2",
144 "language": "sage",
145 "name": "sagemath"
146 },
147 "language_info": {
148 "codemirror_mode": {
149 "name": "ipython",
150 "version": 3
151 },
152 "file_extension": ".py",
153 "mimetype": "text/x-python",
154 "name": "python",
155 "nbconvert_exporter": "python",
156 "pygments_lexer": "ipython3",
157 "version": "3.9.7"
158 }
159 },
160 "nbformat": 4,
161 "nbformat_minor": 5
162}