14 |= [a/@I b/@H] ^- @uxH
24 |= [a/@I b/@H] ^- @uxH
34 =+ =+ [gr=(ga 8 0x11b 3) few==>(fe .(a 5))]
35 =+ [pro=pro.gr dif=dif.gr pow=pow.gr ror=ror.few]
36 [pro=pro dif=dif pow=pow ror=ror nnk=8 nnb=4 nnr=14]
51 ++ co *{p/@ q/@ r/@ s/@} :: col coefs
57 ++ ix |~(a/@ *@) :: key index
64 ++ ro *{p/@ q/@ r/@ s/@} :: row shifts
91 ++ ix |~(a/@ *@) :: key index
97 ++ ro *{p/@ q/@ r/@ s/@} :: row shifts
103 ++ su 0x7d0c.2155.6314.69e1.26d6.77ba.7e04.2b17.
104 6199.5383.3cbb.ebc8.b0f5.2aae.4d3b.e0a0.
105 ef9c.c993.9f7a.e52d.0d4a.b519.a97f.5160.
106 5fec.8027.5910.12b1.31c7.0788.33a8.dd1f.
107 f45a.cd78.fec0.db9a.2079.d2c6.4b3e.56fc.
108 1bbe.18aa.0e62.b76f.89c5.291d.711a.f147.
109 6edf.751c.e837.f9e2.8535.ade7.2274.ac96.
110 73e6.b4f0.cecf.f297.eadc.674f.4111.913a.
111 6b8a.1301.03bd.afc1.020f.3fca.8f1e.2cd0.
112 0645.b3b8.0558.e4f7.0ad3.bc8c.00ab.d890.
113 849d.8da7.5746.155e.dab9.edfd.5048.706c.
114 92b6.655d.cc5c.a4d4.1698.6886.64f6.f872.
115 25d1.8b6d.49a2.5b76.b224.d928.66a1.2e08.
116 4ec3.fa42.0b95.4cee.3d23.c2a6.3294.7b54.
117 cbe9.dec4.4443.8e34.87ff.2f9b.8239.e37c.
118 fbd7.f381.9ea3.40bf.38a5.3630.d56a.0952
134 ++ co [0xe 0xb 0xd 0x9]
140 ++ ix :: key expand, inv
142 =+ [i=1 j=_@ b=_@ c=co:pin]
146 => .(b (cut 7 [i 1] a))
147 => .(b (rep 5 (mcol (pode 5 4 b) c)))
153 :~ [i (cut 7 [0 i] a)]
155 [j (cut 7 [+(i) j] a)]
171 ++ su 0x7d0c.2155.6314.69e1.26d6.77ba.7e04.2b17.
172 6199.5383.3cbb.ebc8.b0f5.2aae.4d3b.e0a0.
173 ef9c.c993.9f7a.e52d.0d4a.b519.a97f.5160.
174 5fec.8027.5910.12b1.31c7.0788.33a8.dd1f.
175 f45a.cd78.fec0.db9a.2079.d2c6.4b3e.56fc.
176 1bbe.18aa.0e62.b76f.89c5.291d.711a.f147.
177 6edf.751c.e837.f9e2.8535.ade7.2274.ac96.
178 73e6.b4f0.cecf.f297.eadc.674f.4111.913a.
179 6b8a.1301.03bd.afc1.020f.3fca.8f1e.2cd0.
180 0645.b3b8.0558.e4f7.0ad3.bc8c.00ab.d890.
181 849d.8da7.5746.155e.dab9.edfd.5048.706c.
182 92b6.655d.cc5c.a4d4.1698.6886.64f6.f872.
183 25d1.8b6d.49a2.5b76.b224.d928.66a1.2e08.
184 4ec3.fa42.0b95.4cee.3d23.c2a6.3294.7b54.
185 cbe9.dec4.4443.8e34.87ff.2f9b.8239.e37c.
186 fbd7.f381.9ea3.40bf.38a5.3630.d56a.0952
195 |= [a=(list ,@) b=[p=@ q=@ r=@ s=@]] ^- (list ,@)
196 =+ c=[p=_@ q=_@ r=_@ s=_@]
199 => .(p.c (cut 3 [0 1] i.a))
200 => .(q.c (cut 3 [1 1] i.a))
201 => .(r.c (cut 3 [2 1] i.a))
202 => .(s.c (cut 3 [3 1] i.a))
207 :~ [[p.c p.b] [q.c q.b] [r.c r.b] [s.c s.b]]
208 [[p.c s.b] [q.c p.b] [r.c q.b] [s.c r.b]]
209 [[p.c r.b] [q.c s.b] [r.c p.b] [s.c q.b]]
210 [[p.c q.b] [q.c r.b] [r.c s.b] [s.c p.b]]
212 |= [a=[@ @] b=[@ @] c=[@ @] d=[@ @]]
213 :(dif (pro a) (pro b) (pro c) (pro d))
220 ++ pode :: explode to block
221 |= [a=bloq b=@ c=@] ^- (list ,@)
227 $(m +(m), d (weld d (limo [0 ~])))
233 ++ sube :: s-box word
235 (rep 3 (turn (pode 3 4 a) |=(c=@ (cut 3 [c 1] b))))
243 ++ be :: block cipher
244 |= [a=? b=@ c=@H] ^- @uxH
257 (pode 5 nnb (cut 5 [(mul (ix.a b) nnb) nnb] c))
264 |= [c=(list ,@) d=(list ,@)] ^- (list ,@)
267 [(mix i.c i.d) $(c t.c, d t.d)]
274 |= [a=cipa b=(list ,@)] ^- (list ,@)
282 (limo [0 p.e] [1 q.e] [2 r.e] [3 s.e] ~)
284 (cut 3 [f 1] (snag (mod (add g c) nnb) b))
291 |= [a=cipa b=(list ,@)] ^- (list ,@)
293 [(sube i.b su.a) $(b t.b)]
296 =+ [d=?:(a pen pin) e=(pode 5 nnb c) f=1]
297 => .(e (sark e (ankh d 0 b)))
302 => .(e (mcol e co.d))
303 => .(e (sark e (ankh d f b)))
307 => .(e (sark e (ankh d nnr b)))
316 =+ [b=a c=0 d=su:pen i=nnk]
318 ?: =(i (mul nnb +(nnr)))
320 => .(c (cut 5 [(dec i) 1] b))
321 => ?: =(0 (mod i nnk))
324 .(c (mix c (pow (dec (div i nnk)) 2)))
325 ?: &((gth nnk 6) =(4 (mod i nnk)))
328 => .(c (mix c (cut 5 [(sub i nnk) 1] b)))
329 => .(b (can 5 [i b] [1 c] ~))
336 ++ ix :: key expand, inv
338 =+ [i=1 j=_@ b=_@ c=co:pin]
342 => .(b (cut 7 [i 1] a))
343 => .(b (rep 5 (mcol (pode 5 4 b) c)))
349 :~ [i (cut 7 [0 i] a)]
351 [j (cut 7 [+(i) j] a)]
361 ++ curt :: curve25519
366 =+ =+ [p=486.662 q=(sub (bex 255) 19)]
377 =+ low=(dis 248 (cut 3 [0 1] raw))
378 =+ hih=(con 64 (dis 127 (cut 3 [31 1] raw)))
379 =+ mid=(cut 3 [1 30] raw)
380 (can 3 [[1 low] [30 mid] [1 hih] ~])
386 ++ sqr |=(a=@ (mul a a))
392 ++ inv |=(a=@ (~(exp fo q) (sub q 2) a))
399 |= [n=[x=@ z=@] m=[x=@ z=@] d=[x=@ z=@]]
404 (sun:si (mul x.m x.n))
405 (sun:si (mul z.m z.n))
411 (sun:si (mul x.m z.n))
412 (sun:si (mul z.m x.n))
414 [(sit.fq xx) (sit.fq zz)]
425 (dif:si (sun:si x) (sun:si z))
429 :(add (sqr x) :(mul p x z) (sqr z))
431 [(sit.fq xx) (sit.fq zz)]
441 (sit.fq (mul -.x (inv +.x)))
444 $(i (dec i), s (cad r s one), r (cub r))
445 $(i (dec i), r (cad r s one), s (cub s))
454 =+ =+ [b=256 q=(sub (bex 255) 19)]
459 27.742.317.777.372.353.535.851.937.790.883.648.493
460 =+ d=(dif.fq 0 (fra.fq 121.665 121.666))
461 =+ ii=(exp.fq (div (dec q) 4) 2)
462 [b=b q=q fq=fq l=l d=d ii=ii]
468 ++ norm |=(x=@ ?:(=(0 (mod x 2)) x (sub q x)))
475 ++ xrec :: recover x-coord
478 %+ mul (dif.fq (mul y y) 1)
479 (inv.fq +(:(mul d y y)))
480 =+ x=(exp.fq (div (add 3 q) 8) xx)
481 ?: !=(0 (dif.fq (mul x x) (sit.fq xx)))
490 ++ ward :: edwards multiply
491 |= [pp=[@ @] qq=[@ @]] ^- [@ @]
492 =+ dp=:(pro.fq d -.pp -.qq +.pp +.qq)
498 (inv.fq (sum.fq 1 dp))
504 (inv.fq (dif.fq 1 dp))
512 ++ scam :: scalar multiply
513 |= [pp=[@ @] e=@] ^- [@ @]
517 => .(qq (ward qq qq))
527 ++ etch :: encode point
529 (can 0 ~[[(sub b 1) +.pp] [1 (dis 1 -.pp)]])
536 ++ curv :: point on curve?
541 (pro.fq (sub q (sit.fq x)) x)
543 (sum.fq 1 :(pro.fq d x x y y))
550 ++ deco :: decode point
551 |= s=@ ^- (unit ,[@ @])
552 =+ y=(cut 0 [0 (dec b)] s)
553 =+ si=(cut 0 [(dec b) 1] s)
555 => .(x ?:(!=(si (dis 1 x)) (sub q x) x))
567 =+ bby=(pro.fq 4 (inv.fq 5))
578 ++ puck :: public key
581 ?: (gth (met 3 sk) 32) !!
582 =+ h=(shal (rsh 0 3 b) sk)
586 (lsh 0 3 (cut 0 [3 (sub b 5)] h))
594 ++ suck :: keypair from seed
597 (can 0 ~[[b se] [b pu]])
608 =+ pk=(cut 0 [b b] sk)
609 =+ h=(shal (rsh 0 3 b) sk)
613 (lsh 0 3 (cut 0 [3 (sub b 5)] h))
615 =+ hm=(cut 0 [b b] h)
631 (~(sit fo l) (add r (mul (shaz ha) a)))
632 (can 0 ~[[b (etch rr)] [b ss]])
641 |= [s=@ m=@ pk=@] ^- ?
642 ?: (gth (div b 4) (met 3 s)) |
643 ?: (gth (div b 8) (met 3 pk)) |
645 =+ rr=(deco (cut 0 [0 b] s))
649 =+ ss=(cut 0 [b b] s)
650 =+ ha=(can 3 ~[[cb (etch u.rr)] [cb pk] [(met 3 m) m]])
652 =((scam bb ss) (ward u.rr (scam u.aa h)))
655 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
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