pkcs7: PKCS #7 padding in Haskell

[ crypto, library, mit ] [ Propose Tags ]

Implements PKCS #7 padding. This implements the PKCS #7 padding scheme. This scheme is defined in RFC 5652, section 6.3. Strings will be padded out to multiples of the block size; for example, a 5-byte string with an 8-byte block size will have three bytes of padding added. If the length is already a multiple of the block size, an entire block size worth of padding is added. The padding bytes are all set to the number of padding bytes. Returning to the previous example, the padding string would be three bytes of the byte 0x03. Unpadding checks the length and padding, and if this is valid, strips off the padding.


[Skip to Readme]

Modules

[Index]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 1.0.0.0, 1.0.0.1
Dependencies base (>4.5 && <5), bytestring (>=0.10 && <1.0) [details]
License MIT
Author K. Isom
Maintainer coder@kyleisom.net
Category Crypto
Home page https://github.com/kisom/pkcs7
Source repo head: git clone https://github.com/kisom/pkcs7
Uploaded by kisom at 2015-08-14T04:10:01Z
Distributions
Reverse Dependencies 1 direct, 0 indirect [details]
Downloads 1530 total (6 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2015-08-14 [all 1 reports]

Readme for pkcs7-1.0.0.1

[back to package description]

pkcs7

Build Status

This implements the PKCS #7 padding scheme. This scheme is defined in RFC 5652, section 6.3.

Strings will be padded out to multiples of the block size; for example, a 5-byte string with an 8-byte block size will have three bytes of padding added. If the length is already a multiple of the block size, an entire block size worth of padding is added.

The padding bytes are all set to the number of padding bytes. Returning to the previous example, the padding string would be three bytes of the byte 0x03.

Unpadding checks the length and padding, and if this is valid, strips off the padding.

The following functions are defined for Strings:

  • pad: apply PKCS #7 padding assuming an AES block size
  • padN: apply PKCS #7 padding, specifying the block size
  • unpad: remove PKCS #7 padding assuming an AES block size
  • unpadN: remove PKCS #7 padding, specifying the block size

The following functions are defined for ByteStrings:

  • padBytes: apply PKCS #7 padding assuming an AES block size
  • padBytesN: apply PKCS #7 padding, specifying the block size
  • unpadBytes: remove PKCS #7 padding assuming an AES block size
  • unpadBytesN: remove PKCS #7 padding, specifying the block size

The unpadding functions return a Maybe a (where a is either a String or ByteString, depending on the function). If there was a padding error, Nothing is returned. Otherwise, Just the string is returned.