law pkcs7_round_trip

bend-osdev-pkcs7@0.1.0.0 · LAWS.bend:10

import bend-osdev-pkcs7@0.1.0.0/LAWS.bend as LAWS
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
import bend-osdev-pkcs7@0.1.0.0/pkcs7.bend as P

10# Unpadding undoes padding, for every block size bs and message m: when bs
11# is one the padding takes (1 to 255), unpad(pad(m)) is m; when it is not,
12# both refuse alike (CmBadBlockSize)
13law pkcs7_round_trip:
14  for +bs: Nat
15  for +m: B.Octets
16  {Result.bind(&2, &2, M.CmError, B.Octets, B.Octets, P.Pkcs7.pad(bs, m), c => P.Pkcs7.unpad(bs, c)) == Result.map(&2, &2, M.CmError, B.Octets, B.Octets, c => m, P.Pkcs7.pad(bs, m)) : Result<&2, &2, M.CmError, B.Octets>}

Uses (10)

Used by (1)