| |||||||||||||||||||
| |||||||||||||||||||
| |||||||||||||||||||
| Synopsis | |||||||||||||||||||
| |||||||||||||||||||
| PKCS5 (RFC 1423) based [un]padding routines | |||||||||||||||||||
| padPKCS5 :: ByteLength -> ByteString -> ByteString | |||||||||||||||||||
| PKCS5 (aka RFC1423) padding method. This method will not work properly for pad modulos > 256 | |||||||||||||||||||
| padBlockSize :: BlockCipher k => k -> ByteString -> ByteString | |||||||||||||||||||
| PKCS5 (aka RFC1423) padding method using the BlockCipher instance to determine the pad size. | |||||||||||||||||||
| putPaddedPKCS5 :: ByteLength -> ByteString -> Put | |||||||||||||||||||
putPaddedPKCS5 m bs
Will pad out bs to a byte multiple of m and put both the bytestring and it's padding via Put (this saves on copying if you are already using Cereal). | |||||||||||||||||||
| unpadPKCS5safe :: ByteString -> Maybe ByteString | |||||||||||||||||||
| unpad a strict bytestring padded in the typical PKCS5 manner. This routine verifies all pad bytes and pad length match correctly. | |||||||||||||||||||
| unpadPKCS5 :: ByteString -> ByteString | |||||||||||||||||||
| ESP (RFC 4303) [un]padding routines | |||||||||||||||||||
| padESP :: Int -> ByteString -> ByteString | |||||||||||||||||||
Pad a bytestring to the IPSEC esp specification padESP m payload is equivilent to:
(msg) (padding) (length field)
B.concat [payload, B.pack [1,2,3,4..], B.pack [padLen]]
Where:
Notice the result bytesting length remainder r equals zero. The lack of a "next header" field means this function is not directly useable for an IPSec implementation (copy/paste the 4 line function and add in a "next header" field if you are making IPSec ESP). | |||||||||||||||||||
| unpadESP :: ByteString -> Maybe ByteString | |||||||||||||||||||
A static espPad allows reuse of a single B.pack'ed pad for all calls to padESP unpad and return the padded message (Nothing is returned if the padding is invalid) | |||||||||||||||||||
| padESPBlockSize :: BlockCipher k => k -> ByteString -> ByteString | |||||||||||||||||||
| Like padESP but use the BlockCipher instance to determine padding size | |||||||||||||||||||
| putPadESPBlockSize :: BlockCipher k => k -> ByteString -> Put | |||||||||||||||||||
| Like putPadESP but using the BlockCipher instance to determine padding size | |||||||||||||||||||
| putPadESP :: Int -> ByteString -> Put | |||||||||||||||||||
| Pad a bytestring to the IPSEC ESP specification using Put. This can reduce copying if you are already using Put. | |||||||||||||||||||
| Produced by Haddock version 2.7.2 |