def Pkcs7.unpad.go
bend-osdev-cipher-modes@0.1.0.0 · pkcs7.bend:73
import bend-osdev-cipher-modes@0.1.0.0/pkcs7.bend as Pkcs7
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
73def Pkcs7.unpad.go(ok: Bool, +bs: Nat, +m: B.Octets) -> Result<&2, &2, M.CmError, B.Octets>:
74 match ok:
75 case True{}:
76 +n = B.Octets.len(m)
77 do Result<&2, &2, M.CmError, B.Octets>:
78 M.cm.check(Nat.is_lt(0n, n), M.CmTooShort{n})
79 M.cm.check(Nat.is_eq(Nat.mod(n, bs), 0n), M.CmNotBlockMultiple{n})
80 pkcs7.unpad.oct(bs, m, n)
81 case False{}:
82 Fail{M.CmBadBlockSize{bs}}