\section{\module{base64} ---
         Encode and decode MIME base64 data}

\declaremodule{standard}{base64}
\modulesynopsis{Encode and decode files using the MIME base64 data.}


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

This module performs base64 encoding and decoding of arbitrary binary
strings into text strings that can be safely sent by email or included
as part of an HTTP POST request.  The
encoding scheme is defined in \rfc{1521} (\emph{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'') and is used for
MIME email and various other Internet-related applications; it is not
the same as the output produced by the \program{uuencode} program.
For example, the string \code{'www.python.org'} is encoded as the
string \code{'d3d3LnB5dGhvbi5vcmc=\e n'}.  


\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}
