def AdEchainiv.iv
bend-osdev-aead@0.1.0.0 · echainiv.bend:43
import bend-osdev-aead@0.1.0.0/echainiv.bend as Echainiv
import Base
import bend-osdev-bytes@0.1.0.0/bytes.bend as B
import bend-osdev-crypto@0.1.0.0/octets.bend as O
43
44def AdEchainiv.iv(~KA: Data, ~KC: Data, ~Blk: Data, ~enc: KC -> Blk -> Blk, ~blk_of: B.Octets -> Maybe<&2, Blk>, ~blk_to: Blk -> B.Octets, k: AdEchainivKey<KA, KC>, +seq: B.Octets) -> B.Octets:
45 match k:
46 case AdEchainivKey{ka, +kc, +salt}:
47 +x = O.CrOct.xor(salt, B.Octets.append(B.Octets.zeros(Nat.sub(B.Octets.len(salt), B.Octets.len(seq))), seq))
48 ad.ec.e(~KC, ~Blk, ~enc, ~blk_to, kc, blk_of(x), x)