| Copyright | (c) 2019-2020 Emily Pillmore |
|---|---|
| License | BSD-style |
| Maintainer | Emily Pillmore <emilypi@cohomolo.gy> |
| Stability | stable |
| Portability | non-portable |
| Safe Haskell | Trustworthy |
| Language | Haskell2010 |
Data.ByteString.Base32.Hex
Description
This module contains ByteString-valued combinators for
implementing the RFC 4648 specification of the Base32hex
encoding format. This includes padded and unpadded decoding variants, as well as
internal and external validation for canonicity.
Synopsis
- encodeBase32 :: ByteString -> Text
- encodeBase32' :: ByteString -> ByteString
- decodeBase32 :: ByteString -> Either Text ByteString
- encodeBase32Unpadded :: ByteString -> Text
- encodeBase32Unpadded' :: ByteString -> ByteString
- decodeBase32Unpadded :: ByteString -> Either Text ByteString
- decodeBase32Padded :: ByteString -> Either Text ByteString
- isBase32Hex :: ByteString -> Bool
- isValidBase32Hex :: ByteString -> Bool
Documentation
encodeBase32 :: ByteString -> Text Source #
Encode a ByteString value as a Base32hex Text value with padding.
See: RFC-4648 section 7
Examples:
>>>encodeBase32 "Sun""ADQMS==="
encodeBase32' :: ByteString -> ByteString Source #
Encode a ByteString value as a Base32hex ByteString value with padding.
See: RFC-4648 section 7
Examples:
>>>encodeBase32' "Sun""ADQMS==="
decodeBase32 :: ByteString -> Either Text ByteString Source #
Decode an arbitrarily padded Base32hex-encoded ByteString value. If its length
is not a multiple of 8, then padding characters will be added to fill out the
input to a multiple of 8 for safe decoding, as Base32hex-encoded values are
optionally padded.
See: RFC-4648 section 7
Examples:
>>>decodeBase32 "ADQMS==="Right "Sun"
>>>decodeBase32 "ADQMS"Right "Sun"
>>>decodeBase32 "ADQM==="Left "Base32-encoded bytestring has invalid padding"
encodeBase32Unpadded :: ByteString -> Text Source #
Encode a ByteString value as a Base32hex Text value without padding.
See: RFC-4648 section 7
Examples:
>>>encodeBase32Unpadded' "Sun""ADQMS"
encodeBase32Unpadded' :: ByteString -> ByteString Source #
Encode a ByteString value as a Base32hex ByteString value without padding.
See: RFC-4648 section 7
Examples:
>>>encodeBase32Unpadded' "Sun""ADQMS"
decodeBase32Unpadded :: ByteString -> Either Text ByteString Source #
Decode an unpadded Base32hex-encoded ByteString value.
See: RFC-4648 section 7
Examples:
>>>decodeBase32Unpadded "ADQMS"Right "Sun"
>>>decodeBase32Unpadded "ADQMS==="Left "Base32-encoded bytestring has invalid padding"
decodeBase32Padded :: ByteString -> Either Text ByteString Source #
Decode a padded Base32hex-encoded ByteString value.
See: RFC-4648 section 7
Examples:
>>>decodeBase32Padded "ADQMS==="Right "Sun"
>>>decodeBase32Padded "ADQMS"Left "Base32-encoded bytestring requires padding"
isBase32Hex :: ByteString -> Bool Source #
Tell whether a ByteString value is encoded in padded or unpadded Base32hex format
Examples:
>>>isBase32Hex "ADQMS"True
>>>isBase32Hex "ADQMS==="True
>>>isBase32Hex "ADQMS=="False
isValidBase32Hex :: ByteString -> Bool Source #
Tell whether a ByteString value is a valid Base32hex format.
This will not tell you whether or not this is a correct Base32hex representation,
only that it conforms to the correct shape (including padding/size etc.).
To check whether it is a true Base32hex encoded ByteString value, use isBase32.
Examples:
>>>isValidBase32Hex "ADQMS"True
>>>isValidBase32Hex "ADQMS="False
>>>isValidBase32Hex "ADQMS%"False