def rc4.ksa
bend-osdev-legacy-ciphers@0.1.0.0 · rc4.bend:81
import bend-osdev-legacy-ciphers@0.1.0.0/rc4.bend as Rc4
import Base
import bend-osdev-legacy-ciphers@0.1.0.0/legacy_ciphers.bend as L
81
82
83def rc4.ksa(n: Nat, +key: List<&2, U32>, +klen: Nat, +s: L.LcTab, +i: U32, +j: U32) -> L.LcTab:
84 match n:
85 case 0n:
86 s
87 case 1n+p:
88 +j2 = U32.and(255, U32.add(U32.add(j, rc4.at(s, i)), L.lc.at(key, Nat.mod(U32.to_nat(i), klen))))
89 rc4.ksa(p, key, klen, rc4.swap(s, i, j2), U32.add(i, 1), j2)