module Data.Padding
   ( zeroPad
   , zeroUnpad
   ) where

import           Data.Padding.Util     (requiredPadding)

import qualified Data.ByteString       as B
import qualified Data.ByteString.Char8 as BC
import           Data.Char             (chr)

zeroPad :: Int -> B.ByteString -> B.ByteString
zeroPad boundary input = input `B.append` padding
   where
      padding = BC.replicate padLength (chr 0)
      padLength = requiredPadding inputLength boundary
      inputLength = B.length input

zeroUnpad :: B.ByteString -> B.ByteString
zeroUnpad = fst . BC.spanEnd (== chr 0)