def pkcs7.unpad.oct
bend-osdev-pkcs7@0.1.0.0 · pkcs7.bend:65
import bend-osdev-pkcs7@0.1.0.0/pkcs7.bend as Pkcs7
import Base
import bend-osdev-bytes@0.1.1.0/bytes.bend as B
import bend-osdev-mode-core@0.1.0.0/mode_core.bend as M
65
66
67def pkcs7.unpad.oct(+bs: Nat, +m: B.Octets, +n: Nat) -> Result<&2, &2, M.CmError, B.Octets>:
68 +v = pkcs7.last(B.Octets.at(m, Nat.sub(n, 1n)), 0)
69 +p = U32.to_nat(v)
70 +good = Bool.and(Nat.is_lt(0n, p), Bool.and(Nat.is_le(p, bs), U32.is_eq(pkcs7.diff(B.Octets.to_list(B.Octets.drop(Nat.sub(n, p), m)), v, 0), 0)))
71 pkcs7.strip(good, n, p, m)