Echainiv.AdEchainiv.iv: def of bend-osdev-aead@0.1.0.0 Import: import bend-osdev-aead@0.1.0.0/echainiv.bend as Echainiv Lines 43-48 of bend-osdev-aead@0.1.0.0/echainiv.bend: https://jend.leeeet.dev/read.txt?path=bend-osdev-aead@0.1.0.0/echainiv.bend&start_line=43&end_line=48 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 # The IV of sequence number seq: E(Kc, salt xor seq right-aligned) def 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, +seq: B.Octets) -> B.Octets: match k: case AdEchainivKey{ka, +kc, +salt}: +x = O.CrOct.xor(salt, B.Octets.append(B.Octets.zeros(Nat.sub(B.Octets.len(salt), B.Octets.len(seq))), seq)) ad.ec.e(~KC, ~Blk, ~enc, ~blk_to, kc, blk_of(x), x) Uses (9): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Maybe https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat.sub https://jend.leeeet.dev/definition.txt?path=bend-osdev-aead@0.1.0.0/echainiv.bend&name=AdEchainivKey https://jend.leeeet.dev/definition.txt?path=bend-osdev-aead@0.1.0.0/echainiv.bend&name=ad.ec.e https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.1/bytes.bend&name=Octets https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.1/bytes.bend&name=Octets.append https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.1/bytes.bend&name=Octets.len https://jend.leeeet.dev/definition.txt?path=bend-osdev-bytes@0.1.1.1/bytes.bend&name=Octets.zeros https://jend.leeeet.dev/definition.txt?path=bend-osdev-crypto@0.1.0.0/octets.bend&name=CrOct.xor