def ad.sq.key
bend-osdev-aead@0.1.0.0 · seqiv.bend:46
import bend-osdev-aead@0.1.0.0/seqiv.bend as Seqiv
import Base
import bend-osdev-bytes@0.1.0.0/bytes.bend as B
import bend-osdev-crypto@0.1.0.0/crypto.bend as Cr
46def ad.sq.key(~KA: Data, ~akey: B.Octets -> Result<&2, &2, Cr.CrError, KA>, +ivlen: Nat, +o: B.Octets) -> Result<&2, &2, Cr.CrError, AdSeqivKey<KA>>:
47 +n = B.Octets.len(o)
48 +m = Nat.sub(n, ivlen)
49 do Result<&2, &2, Cr.CrError, AdSeqivKey<KA>>:
50 Cr.CrError.check(Nat.is_le(ivlen, n), Cr.CrBadKeyLength{n})
51 ka : KA <- akey(B.Octets.take(m, o))
52 return AdSeqivKey{ka, B.Octets.drop(m, o)}