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# The IV of sequence number seq: E(Kc, salt xor seq right-aligned)
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)

Uses (9)

Used by (2)