def seqiv
bend-osdev-aead@0.1.0.0 · check.bend:169
import bend-osdev-aead@0.1.0.0/check.bend as Check
import Base
import bend-osdev-bytes@0.1.0.0/bytes.bend as B
import bend-osdev-cipher-modes@0.1.0.0/aes.bend as X
import bend-osdev-crypto@0.1.0.0/crypto.bend as Cr
import bend-osdev-aead@0.1.0.0/seqiv.bend as Sq
169def seqiv(+k: B.Octets, +seq: B.Octets, +a: B.Octets, +p: B.Octets) -> String:
170 +r = sq.key(k)
171 +c = Result.bind(&2, &2, Cr.CrError, Sq.AdSeqivKey<X.CmAesKey>, B.Octets, r, kk => Sq.AdSeqiv.seal(~X.CmAesKey, ~ccm.seal, kk, seq, a, p))
172 both(c, Result.bind(&2, &2, Cr.CrError, Sq.AdSeqivKey<X.CmAesKey>, B.Octets, r, kk => Result.bind(&2, &2, Cr.CrError, B.Octets, B.Octets, c, x => Sq.AdSeqiv.open(~X.CmAesKey, ~ccm.open, ~12n, kk, seq, a, x))))