def CmAes.xts_encrypt

bend-osdev-cipher-modes@0.1.0.0 · aes_modes.bend:39

import bend-osdev-cipher-modes@0.1.0.0/aes_modes.bend as AesModes
import Base
import bend-osdev-bytes@0.1.0.0/bytes.bend as B
import bend-osdev-cipher-modes@0.1.0.0/cipher_modes.bend as M
import bend-osdev-cipher-modes@0.1.0.0/aes.bend as X
import bend-osdev-cipher-modes@0.1.0.0/xts.bend as T

39# the data unit p with 16-byte sequence number i (Xts.sector(n) for sector n)
40def CmAes.xts_encrypt(+key: B.Octets, i: B.Octets, p: B.Octets) -> Result<&2, &2, M.CmError, B.Octets>:
41  +n = B.Octets.len(key)
42  +h = Nat.div(n, 2n)
43  do Result<&2, &2, M.CmError, B.Octets>:
44    M.cm.check(Bool.or(Nat.is_eq(n, 32n), Nat.is_eq(n, 64n)), M.CmBadKeyLength{n})
45    k1 : X.CmAesKey <- X.CmAes.key(B.Octets.take(h, key))
46    k2 : X.CmAesKey <- X.CmAes.key(B.Octets.drop(h, key))
47    T.Xts.encrypt(~X.CmAesKey, ~X.CmAes.encrypt, k1, k2, i, p)

Uses (16)

Used by (2)