1
0
Fork 0
This commit is contained in:
Mike 2024-01-31 20:49:39 +02:00
parent 2afece2a22
commit 9afae4a4db
2 changed files with 67 additions and 6 deletions

View file

@ -20,17 +20,12 @@
(link (swap 'E (/ E 2)))
(gt0 E) ) ) ) ) )
(de expmod (B E M)
(println 'B B 'E E 'M M)
(let R 1
(for I (steps E)
(println 'I I)
(wait 100)
(and
(setq R (modulo (* R R) M))
(bit? 1 I)
(setq R (modulo (* R B) M)) ) )
(println 'R R)
R ) )
(de inv (X)
(expmod X (- *Q 2) *Q) )
@ -77,12 +72,15 @@
(inv (- 1 (* *D X1 X2 Y1 Y2))) )
*Q ) ) ) )
(de scalarmult (P E)
(println 'P P 'E E)
(let Q (cons 0 1)
(for I (steps E)
(and
(setq Q (edwards Q Q))
(bit? 1 I)
(setq Q (edwards Q P)) ) )
(wait 1000)
(println 'Q Q)
Q ) )
(de isoncurve (P)
(let

View file

@ -1,5 +1,49 @@
#{
REFERENCE PYTHON:
REFERENCE PYTHON:
def scalarmult(P,e):
if e == 0: return [0,1]
Q = scalarmult(P,e/2)
Q = edwards(Q,Q)
if e & 1: Q = edwards(Q,P)
return Q
P (15112221349535400772501151409588531511454012693041857206046113283949847762202 . 46316835694926478169428394003475163141307993866256225615783033603165251855960)
E 36144925721603087658594284515452164870581325872720374094707712194495455132720
Q (38815646466658113194383306759739515082307681141926459231621296960732224964046 . 11903303657706407974989296177215005343713679411332034699907763981919547054807)
}#
(de expmod (B E M)
(if (=0 E)
1
(let R
(%
(** (expmod B (/ E 2) M) 2)
M )
(when (bit? 1 E)
(setq R (% (* R B) M)) )
R ) ) )
(de inv (X)
(expmod X (- *Q 2) *Q) )
(de edwards (P Q)
(println 'P P 'Q Q)
(let
(X1 (car P)
Y1 (cdr P)
X2 (car Q)
Y2 (cdr Q) )
(cons
(%
(*
(+ (* X1 Y2) (* X2 Y1))
(inv (inc (* *D X1 X2 Y1 Y2))) )
*Q )
(%
(*
(+ (* Y1 Y2) (* X1 X2))
(inv (- 1 (* *D X1 X2 Y1 Y2))) )
*Q ) ) ) )
#{
def scalarmult(P,e):
if e == 0: return [0,1]
Q = scalarmult(P,e/2)
@ -7,6 +51,25 @@
if e & 1: Q = edwards(Q,P)
return Q
}#
(de scalarmult (P E)
(wait 100)
(if (=0 E)
(cons 0 1)
(let Q (scalarmult P (/ E 2))
(println 1)
(setq Q (edwards Q Q))
(println 2)
(when (bit? 1 E)
(setq Q (edwards Q P)) )
Q ) ) )
(trace 'scalarmult)
(println
(scalarmult
(15112221349535400772501151409588531511454012693041857206046113283949847762202 . 46316835694926478169428394003475163141307993866256225615783033603165251855960)
36144925721603087658594284515452164870581325872720374094707712194495455132720 ) )
(msg 'ok)
(bye)