\documentclass{article} \setlength{\textwidth}{6.5in} % 1 inch side margins \setlength{\textheight}{9in} % ~1 inch top and bottom margins \setlength{\headheight}{0in} \setlength{\topmargin}{0in} \setlength{\headsep}{0in} \setlength{\oddsidemargin}{0in} \setlength{\evensidemargin}{0in} \title{\textbf{Botan Python Interface Documentation}} \author{Jack Lloyd \\ \texttt{lloyd@randombit.net}} \date{2009/10/10} \newcommand{\filename}[1]{\texttt{#1}} \newcommand{\manpage}[2]{\texttt{#1}(#2)} \newcommand{\macro}[1]{\texttt{#1}} \newcommand{\function}[1]{\textbf{#1}} \newcommand{\type}[1]{\texttt{#1}} \renewcommand{\arg}[1]{\textsl{#1}} \newcommand{\variable}[1]{\textsl{#1}} \begin{document} \maketitle \tableofcontents \parskip=5pt \pagebreak \section{Ciphers} Botan's Python interface provides a generic interface to any cipher supported by the library. The class \type{botan.Cipher} takes three arguments, all strings: first, the name of the algorith, second the direction (which can be either ``encrypt'' or ``decrypt''), and lastly, the key to use. For instance \begin{verbatim} encryptor = botan.Cipher("AES-128/EAX", "encrypt", key) \end{verbatim} creates an object that will encrypt and authenticate messages using the EAX mode of operation using the AES cipher. To use this object, call the \function{cipher} function with two arguments - the input to encrypt, and the IV to use: \begin{verbatim} ciphertext = encryptor.cipher(input, salt) \end{verbatim} \subsection{Cryptobox} \subsection{RNGs} \section{RSA} \end{document}