def CmAes.xts_decrypt
bend-osdev-cipher-modes@0.1.0.0 · aes_modes.bend:49
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
49def CmAes.xts_decrypt(+key: B.Octets, i: B.Octets, c: B.Octets) -> Result<&2, &2, M.CmError, B.Octets>:
50 +n = B.Octets.len(key)
51 +h = Nat.div(n, 2n)
52 do Result<&2, &2, M.CmError, B.Octets>:
53 M.cm.check(Bool.or(Nat.is_eq(n, 32n), Nat.is_eq(n, 64n)), M.CmBadKeyLength{n})
54 k1 : X.CmAesKey <- X.CmAes.key(B.Octets.take(h, key))
55 k2 : X.CmAesKey <- X.CmAes.key(B.Octets.drop(h, key))
56 T.Xts.decrypt(~X.CmAesKey, ~X.CmAes.encrypt, ~X.CmAes.decrypt, X.CmAes.prepare(k1), k2, i, c)