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)

Uses (18)

Used by (2)