| 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
Description
This module contains ByteString-valued combinators for
implementing the RFC 4648 specification of the Base32
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
- isBase32 :: ByteString -> Bool
- isValidBase32 :: ByteString -> Bool
Documentation
encodeBase32 :: ByteString -> Text Source #
Encode a ByteString value as a Base32 Text value with padding.
See: RFC-4648 section 6
Examples:
>>>encodeBase32 "Sun""KN2W4==="
encodeBase32' :: ByteString -> ByteString Source #
Encode a ByteString value as a Base32 ByteString value with padding.
See: RFC-4648 section 6
Examples:
>>>encodeBase32' "Sun""KN2W4==="
decodeBase32 :: ByteString -> Either Text ByteString Source #
Decode an arbitrarily padded Base32-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 Base32-encoded values are
optionally padded.
See: RFC-4648 section 6
Examples:
>>>decodeBase32 "KN2W4==="Right "Sun"
>>>decodeBase32 "KN2W4"Right "Sun"
>>>decodeBase32 "KN2W==="Left "Base32-encoded bytestring has invalid padding"
encodeBase32Unpadded :: ByteString -> Text Source #
Encode a ByteString value as a Base32 Text value without padding.
See: RFC-4648 section 6
Examples:
>>>encodeBase32Unpadded "Sun""KN2W4"
encodeBase32Unpadded' :: ByteString -> ByteString Source #
Encode a ByteString value as a Base32 ByteString value without padding.
See: RFC-4648 section 6
Examples:
>>>encodeBase32Unpadded' "Sun""KN2W4"
decodeBase32Unpadded :: ByteString -> Either Text ByteString Source #
Decode an unpadded Base32-encoded ByteString value.
See: RFC-4648 section 6
Examples:
>>>decodeBase32Unpadded "KN2W4"Right "Sun"
>>>decodeBase32Unpadded "KN2W4==="Left "Base32-encoded bytestring has invalid padding"
decodeBase32Padded :: ByteString -> Either Text ByteString Source #
Decode a padded Base32-encoded ByteString value.
See: RFC-4648 section 6
Examples:
>>>decodeBase32Padded "KN2W4==="Right "Sun"
>>>decodeBase32Padded "KN2W4"Left "Base32-encoded bytestring requires padding"
isBase32 :: ByteString -> Bool Source #
Tell whether a ByteString value is encoded in padded or unpadded Base32 format
Examples:
>>>isBase32 "KN2W4"True
>>>isBase32 "KN2W4==="True
>>>isBase32 "KN2W4=="False
isValidBase32 :: ByteString -> Bool Source #
Tell whether a ByteString value is a valid Base32 format.
This will not tell you whether or not this is a correct Base32 representation,
only that it conforms to the correct shape (including padding/size etc.).
To check whether it is a true Base32 encoded ByteString value, use isBase32.
Examples:
>>>isValidBase32 "KN2W4"True
>>>isValidBase32 "KN2W4="False
>>>isValidBase32 "KN2W4%"False