\section{\module{base64} ---
	 RFC 3548: Base16, Base32, Base64 Data Encodings}

\declaremodule{standard}{base64}
\modulesynopsis{RFC 3548: Base16, Base32, Base64 Data Encodings}


\indexii{base64}{encoding}
\index{MIME!base64 encoding}

This module provides data encoding and decoding as specified in
\rfc{3548}.  This standard defines the Base16, Base32, and Base64
algorithms for encoding and decoding arbitrary binary strings into
text strings that can be safely sent by email, used as parts of URLs,
or included as part of an HTTP POST request.  The encoding algorithm is
not the same as the \program{uuencode} program.

There are two interfaces provided by this module.  The modern
interface supports encoding and decoding string objects using all
three alphabets.  The legacy interface provides for encoding and
decoding to and from file-like objects as well as strings, but only
using the Base64 standard alphabet.

The modern interface provides:

\begin{funcdesc}{b64encode}{s\optional{, altchars}}
Encode a string use Base64.

\var{s} is the string to encode.  Optional \var{altchars} must be a
string of at least length 2 (additional characters are ignored) which
specifies an alternative alphabet for the \code{+} and \code{/}
characters.  This allows an application to e.g. generate URL or
filesystem safe Base64 strings.  The default is \code{None}, for which
the standard Base64 alphabet is used.

The encoded string is returned.
\end{funcdesc}

\begin{funcdesc}{b64decode}{s\optional{, altchars}}
Decode a Base64 encoded string.

\var{s} is the string to decode.  Optional \var{altchars} must be a
string of at least length 2 (additional characters are ignored) which
specifies the alternative alphabet used instead of the \code{+} and
\code{/} characters.

The decoded string is returned.  A \exception{TypeError} is raised if
\var{s} were incorrectly padded or if there are non-alphabet
characters present in the string.
\end{funcdesc}

\begin{funcdesc}{standard_b64encode}{s}
Encode string \var{s} using the standard Base64 alphabet.
\end{funcdesc}

\begin{funcdesc}{standard_b64decode}{s}
Decode string \var{s} using the standard Base64 alphabet.
\end{funcdesc}

\begin{funcdesc}{urlsafe_b64encode}{s}
Encode string \var{s} using a URL-safe alphabet, which substitutes
\code{-} instead of \code{+} and \code{_} instead of \code{/} in the
standard Base64 alphabet.
\end{funcdesc}

\begin{funcdesc}{urlsafe_b64decode}{s}
Decode string \var{s} using a URL-safe alphabet, which substitutes
\code{-} instead of \code{+} and \code{_} instead of \code{/} in the
standard Base64 alphabet.
\end{funcdesc}

\begin{funcdesc}{b32encode}{s}
Encode a string using Base32.  \var{s} is the string to encode.  The
encoded string is returned.
\end{funcdesc}

\begin{funcdesc}{b32decode}{s\optional{, casefold\optional{, map01}}}
Decode a Base32 encoded string.

\var{s} is the string to decode.  Optional \var{casefold} is a flag
specifying whether a lowercase alphabet is acceptable as input.  For
security purposes, the default is \code{False}.

\rfc{3548} allows for optional mapping of the digit 0 (zero) to the
letter O (oh), and for optional mapping of the digit 1 (one) to either
the letter I (eye) or letter L (el).  The optional argument
\var{map01} when not \code{None}, specifies which letter the digit 1 should
be mapped to (when map01 is not \var{None}, the digit 0 is always
mapped to the letter O).  For security purposes the default is
\code{None}, so that 0 and 1 are not allowed in the input.

The decoded string is returned.  A \exception{TypeError} is raised if
\var{s} were incorrectly padded or if there are non-alphabet characters
present in the string.
\end{funcdesc}

\begin{funcdesc}{b16encode}{s}
Encode a string using Base16.

\var{s} is the string to encode.  The encoded string is returned.
\end{funcdesc}

\begin{funcdesc}{b16decode}{s\optional{, casefold}}
Decode a Base16 encoded string.

\var{s} is the string to decode.  Optional \var{casefold} is a flag
specifying whether a lowercase alphabet is acceptable as input.  For
security purposes, the default is \code{False}.

The decoded string is returned.  A \exception{TypeError} is raised if
\var{s} were incorrectly padded or if there are non-alphabet
characters present in the string.
\end{funcdesc}

The legacy interface:

\begin{funcdesc}{decode}{input, output}
Decode the contents of the \var{input} file and write the resulting
binary data to the \var{output} file.
\var{input} and \var{output} must either be file objects or objects that
mimic the file object interface. \var{input} will be read until
\code{\var{input}.read()} returns an empty string.
\end{funcdesc}

\begin{funcdesc}{decodestring}{s}
Decode the string \var{s}, which must contain one or more lines of
base64 encoded data, and return a string containing the resulting
binary data.
\end{funcdesc}

\begin{funcdesc}{encode}{input, output}
Encode the contents of the \var{input} file and write the resulting
base64 encoded data to the \var{output} file.
\var{input} and \var{output} must either be file objects or objects that
mimic the file object interface. \var{input} will be read until
\code{\var{input}.read()} returns an empty string.  \function{encode()}
returns the encoded data plus a trailing newline character
(\code{'\e n'}).
\end{funcdesc}

\begin{funcdesc}{encodestring}{s}
Encode the string \var{s}, which can contain arbitrary binary data,
and return a string containing one or more lines of
base64-encoded data.  \function{encodestring()} returns a
string containing one or more lines of base64-encoded data
always including an extra trailing newline (\code{'\e n'}).
\end{funcdesc}

\begin{seealso}
  \seemodule{binascii}{Support module containing \ASCII-to-binary
                       and binary-to-\ASCII{} conversions.}
  \seerfc{1521}{MIME (Multipurpose Internet Mail Extensions) Part One:
          Mechanisms for Specifying and Describing the Format of
          Internet Message Bodies}{Section 5.2, ``Base64
          Content-Transfer-Encoding,'' provides the definition of the
          base64 encoding.}
\end{seealso}
