19 |= [a/@I b/@H] ^- @uxH
29 |= [a/@I b/@H] ^- @uxH
39 =+ =+ [gr=(ga 8 0x11b 3) few==>(fe .(a 5))]
40 =+ [pro=pro.gr dif=dif.gr pow=pow.gr ror=ror.few]
41 [pro=pro dif=dif pow=pow ror=ror nnk=8 nnb=4 nnr=14]
56 ++ co *{p/@ q/@ r/@ s/@} :: col coefs
62 ++ ix |~(a/@ *@) :: key index
69 ++ ro *{p/@ q/@ r/@ s/@} :: row shifts
96 ++ ix |~(a/@ *@) :: key index
102 ++ ro *{p/@ q/@ r/@ s/@} :: row shifts
108 ++ su 0x7d0c.2155.6314.69e1.26d6.77ba.7e04.2b17.
109 6199.5383.3cbb.ebc8.b0f5.2aae.4d3b.e0a0.
110 ef9c.c993.9f7a.e52d.0d4a.b519.a97f.5160.
111 5fec.8027.5910.12b1.31c7.0788.33a8.dd1f.
112 f45a.cd78.fec0.db9a.2079.d2c6.4b3e.56fc.
113 1bbe.18aa.0e62.b76f.89c5.291d.711a.f147.
114 6edf.751c.e837.f9e2.8535.ade7.2274.ac96.
115 73e6.b4f0.cecf.f297.eadc.674f.4111.913a.
116 6b8a.1301.03bd.afc1.020f.3fca.8f1e.2cd0.
117 0645.b3b8.0558.e4f7.0ad3.bc8c.00ab.d890.
118 849d.8da7.5746.155e.dab9.edfd.5048.706c.
119 92b6.655d.cc5c.a4d4.1698.6886.64f6.f872.
120 25d1.8b6d.49a2.5b76.b224.d928.66a1.2e08.
121 4ec3.fa42.0b95.4cee.3d23.c2a6.3294.7b54.
122 cbe9.dec4.4443.8e34.87ff.2f9b.8239.e37c.
123 fbd7.f381.9ea3.40bf.38a5.3630.d56a.0952
139 ++ co [0xe 0xb 0xd 0x9]
145 ++ ix :: key expand, inv
147 =+ [i=1 j=_@ b=_@ c=co:pin]
151 => .(b (cut 7 [i 1] a))
152 => .(b (rep 5 (mcol (pode 5 4 b) c)))
158 :~ [i (cut 7 [0 i] a)]
160 [j (cut 7 [+(i) j] a)]
176 ++ su 0x7d0c.2155.6314.69e1.26d6.77ba.7e04.2b17.
177 6199.5383.3cbb.ebc8.b0f5.2aae.4d3b.e0a0.
178 ef9c.c993.9f7a.e52d.0d4a.b519.a97f.5160.
179 5fec.8027.5910.12b1.31c7.0788.33a8.dd1f.
180 f45a.cd78.fec0.db9a.2079.d2c6.4b3e.56fc.
181 1bbe.18aa.0e62.b76f.89c5.291d.711a.f147.
182 6edf.751c.e837.f9e2.8535.ade7.2274.ac96.
183 73e6.b4f0.cecf.f297.eadc.674f.4111.913a.
184 6b8a.1301.03bd.afc1.020f.3fca.8f1e.2cd0.
185 0645.b3b8.0558.e4f7.0ad3.bc8c.00ab.d890.
186 849d.8da7.5746.155e.dab9.edfd.5048.706c.
187 92b6.655d.cc5c.a4d4.1698.6886.64f6.f872.
188 25d1.8b6d.49a2.5b76.b224.d928.66a1.2e08.
189 4ec3.fa42.0b95.4cee.3d23.c2a6.3294.7b54.
190 cbe9.dec4.4443.8e34.87ff.2f9b.8239.e37c.
191 fbd7.f381.9ea3.40bf.38a5.3630.d56a.0952
200 |= [a=(list ,@) b=[p=@ q=@ r=@ s=@]] ^- (list ,@)
201 =+ c=[p=_@ q=_@ r=_@ s=_@]
204 => .(p.c (cut 3 [0 1] i.a))
205 => .(q.c (cut 3 [1 1] i.a))
206 => .(r.c (cut 3 [2 1] i.a))
207 => .(s.c (cut 3 [3 1] i.a))
212 :~ [[p.c p.b] [q.c q.b] [r.c r.b] [s.c s.b]]
213 [[p.c s.b] [q.c p.b] [r.c q.b] [s.c r.b]]
214 [[p.c r.b] [q.c s.b] [r.c p.b] [s.c q.b]]
215 [[p.c q.b] [q.c r.b] [r.c s.b] [s.c p.b]]
217 |= [a=[@ @] b=[@ @] c=[@ @] d=[@ @]]
218 :(dif (pro a) (pro b) (pro c) (pro d))
225 ++ pode :: explode to block
226 |= [a=bloq b=@ c=@] ^- (list ,@)
232 $(m +(m), d (weld d (limo [0 ~])))
238 ++ sube :: s-box word
240 (rep 3 (turn (pode 3 4 a) |=(c=@ (cut 3 [c 1] b))))
248 ++ be :: block cipher
249 |= [a=? b=@ c=@H] ^- @uxH
262 (pode 5 nnb (cut 5 [(mul (ix.a b) nnb) nnb] c))
269 |= [c=(list ,@) d=(list ,@)] ^- (list ,@)
272 [(mix i.c i.d) $(c t.c, d t.d)]
279 |= [a=cipa b=(list ,@)] ^- (list ,@)
287 (limo [0 p.e] [1 q.e] [2 r.e] [3 s.e] ~)
289 (cut 3 [f 1] (snag (mod (add g c) nnb) b))
296 |= [a=cipa b=(list ,@)] ^- (list ,@)
298 [(sube i.b su.a) $(b t.b)]
301 =+ [d=?:(a pen pin) e=(pode 5 nnb c) f=1]
302 => .(e (sark e (ankh d 0 b)))
307 => .(e (mcol e co.d))
308 => .(e (sark e (ankh d f b)))
312 => .(e (sark e (ankh d nnr b)))
321 =+ [b=a c=0 d=su:pen i=nnk]
323 ?: =(i (mul nnb +(nnr)))
325 => .(c (cut 5 [(dec i) 1] b))
326 => ?: =(0 (mod i nnk))
329 .(c (mix c (pow (dec (div i nnk)) 2)))
330 ?: &((gth nnk 6) =(4 (mod i nnk)))
333 => .(c (mix c (cut 5 [(sub i nnk) 1] b)))
334 => .(b (can 5 [i b] [1 c] ~))
341 ++ ix :: key expand, inv
343 =+ [i=1 j=_@ b=_@ c=co:pin]
347 => .(b (cut 7 [i 1] a))
348 => .(b (rep 5 (mcol (pode 5 4 b) c)))
354 :~ [i (cut 7 [0 i] a)]
356 [j (cut 7 [+(i) j] a)]
366 ++ curt :: curve25519
371 =+ =+ [p=486.662 q=(sub (bex 255) 19)]
382 =+ low=(dis 248 (cut 3 [0 1] raw))
383 =+ hih=(con 64 (dis 127 (cut 3 [31 1] raw)))
384 =+ mid=(cut 3 [1 30] raw)
385 (can 3 [[1 low] [30 mid] [1 hih] ~])
391 ++ sqr |=(a=@ (mul a a))
397 ++ inv |=(a=@ (~(exp fo q) (sub q 2) a))
404 |= [n=[x=@ z=@] m=[x=@ z=@] d=[x=@ z=@]]
409 (sun:si (mul x.m x.n))
410 (sun:si (mul z.m z.n))
416 (sun:si (mul x.m z.n))
417 (sun:si (mul z.m x.n))
419 [(sit.fq xx) (sit.fq zz)]
430 (dif:si (sun:si x) (sun:si z))
434 :(add (sqr x) :(mul p x z) (sqr z))
436 [(sit.fq xx) (sit.fq zz)]
446 (sit.fq (mul -.x (inv +.x)))
449 $(i (dec i), s (cad r s one), r (cub r))
450 $(i (dec i), r (cad r s one), s (cub s))
459 =+ =+ [b=256 q=(sub (bex 255) 19)]
464 27.742.317.777.372.353.535.851.937.790.883.648.493
465 =+ d=(dif.fq 0 (fra.fq 121.665 121.666))
466 =+ ii=(exp.fq (div (dec q) 4) 2)
467 [b=b q=q fq=fq l=l d=d ii=ii]
473 ++ norm |=(x=@ ?:(=(0 (mod x 2)) x (sub q x)))
480 ++ xrec :: recover x-coord
483 %+ mul (dif.fq (mul y y) 1)
484 (inv.fq +(:(mul d y y)))
485 =+ x=(exp.fq (div (add 3 q) 8) xx)
486 ?: !=(0 (dif.fq (mul x x) (sit.fq xx)))
495 ++ ward :: edwards multiply
496 |= [pp=[@ @] qq=[@ @]] ^- [@ @]
497 =+ dp=:(pro.fq d -.pp -.qq +.pp +.qq)
503 (inv.fq (sum.fq 1 dp))
509 (inv.fq (dif.fq 1 dp))
517 ++ scam :: scalar multiply
518 |= [pp=[@ @] e=@] ^- [@ @]
522 => .(qq (ward qq qq))
532 ++ etch :: encode point
534 (can 0 ~[[(sub b 1) +.pp] [1 (dis 1 -.pp)]])
541 ++ curv :: point on curve?
546 (pro.fq (sub q (sit.fq x)) x)
548 (sum.fq 1 :(pro.fq d x x y y))
555 ++ deco :: decode point
556 |= s=@ ^- (unit ,[@ @])
557 =+ y=(cut 0 [0 (dec b)] s)
558 =+ si=(cut 0 [(dec b) 1] s)
560 => .(x ?:(!=(si (dis 1 x)) (sub q x) x))
572 =+ bby=(pro.fq 4 (inv.fq 5))
583 ++ puck :: public key
586 ?: (gth (met 3 sk) 32) !!
587 =+ h=(shal (rsh 0 3 b) sk)
591 (lsh 0 3 (cut 0 [3 (sub b 5)] h))
599 ++ suck :: keypair from seed
602 (can 0 ~[[b se] [b pu]])
613 =+ pk=(cut 0 [b b] sk)
614 =+ h=(shal (rsh 0 3 b) sk)
618 (lsh 0 3 (cut 0 [3 (sub b 5)] h))
620 =+ hm=(cut 0 [b b] h)
636 (~(sit fo l) (add r (mul (shaz ha) a)))
637 (can 0 ~[[b (etch rr)] [b ss]])
646 |= [s=@ m=@ pk=@] ^- ?
647 ?: (gth (div b 4) (met 3 s)) |
648 ?: (gth (div b 8) (met 3 pk)) |
650 =+ rr=(deco (cut 0 [0 b] s))
654 =+ ss=(cut 0 [b b] s)
655 =+ ha=(can 3 ~[[cb (etch u.rr)] [cb pk] [(met 3 m) m]])
657 =((scam bb ss) (ward u.rr (scam u.aa h)))
660 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list