\subsection{023: standard crypto api to add newer ciphers and hashes}

\subsubsection{023: Definition of requirement }

The current KLIPS1 encapsulation and decapsulation routines make explicit
synchronous calls to the 3DES encrypt and decrypt functions. This causes
three problems:
\begin{enumerate}
\item it makes it difficult to add new algorithms, both at compile time and
	at runtime.
\item it fails to make use of multiprocessor systems effectively
\item it fails to interface nicely to hardware acceleration devices
\end{enumerate}

A standard API from FreeSWAN KLIPS to algorithm functions (e.g. 3DES-MD5-ESP)
would provide for plug and play capabilities for algorithms.

An asynchronous interface would permit multiple processors or hardware
accelerators to interface easily as well.

Despite this, the packets must still emerge from the system in the same order 
that they arrived. That is, they must not be reordered, as this causes
inefficiencies for TCP.

\subsubsection{023: response}

A design to use an asynchronous interface to algorithms will be provided as
part of KLIPS2.

The design proposed by Bart Trojanowski (rsa1) <bart@jukie.net> will be used
as a basis.

