tor

The Tor anonymity network
git clone https://git.dasho.dev/tor.git
Log | Files | Refs | README | LICENSE

ge_add.q (773B)


      1 :name:fe:r->X:r->Y:r->Z:r->T:t0:t1:t2:t3:t4:t5:p->X:p->Y:p->Z:p->T:q->YplusX:q->YminusX:q->Z:q->T2d:
      2 fe r:var/r=fe:
      3 
      4 enter f:enter/f:>X1=fe#11:>Y1=fe#12:>Z1=fe#13:>T1=fe#14:>YpX2=fe#15:>YmX2=fe#16:>Z2=fe#17:>T2d2=fe#18:
      5 return:nofallthrough:<X3=fe#1:<Y3=fe#2:<Z3=fe#3:<T3=fe#4:leave:
      6 
      7 h=f+g:<f=fe:<g=fe:>h=fe:asm/fe_add(>h,<f,<g);:
      8 h=f-g:<f=fe:<g=fe:>h=fe:asm/fe_sub(>h,<f,<g);:
      9 h=f*g:<f=fe:<g=fe:>h=fe:asm/fe_mul(>h,<f,<g);:
     10 h=f^2:<f=fe:>h=fe:asm/fe_sq(>h,<f);:
     11 h=2*g:<g=fe:>h=fe:asm/fe_add(>h,<g,<g);:
     12 
     13 :
     14 
     15 enter ge_add
     16 
     17 fe X1
     18 fe Y1
     19 fe Z1
     20 fe Z2
     21 fe T1
     22 fe ZZ
     23 fe YpX2
     24 fe YmX2
     25 fe T2d2
     26 fe X3
     27 fe Y3
     28 fe Z3
     29 fe T3
     30 fe YpX1
     31 fe YmX1
     32 fe A
     33 fe B
     34 fe C
     35 fe D
     36 
     37 YpX1 = Y1+X1
     38 YmX1 = Y1-X1
     39 A = YpX1*YpX2
     40 B = YmX1*YmX2
     41 C = T2d2*T1
     42 ZZ = Z1*Z2
     43 D = 2*ZZ
     44 X3 = A-B
     45 Y3 = A+B
     46 Z3 = D+C
     47 T3 = D-C
     48 
     49 return