+++ /dev/null
-<!doctype linuxdoc system>
-
-<!--
-#
-# SILC Library Reference Manual SGML source code
-#
-# Author: Pekka Riikonen <priikone@poseidon.pspt.fi>
-#
-# Copyright (C) 2000 Pekka Riikonen
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-
--->
-
-<article>
-
-<!-- Title information -->
-
-<title>SILC Library Reference Manual
-<author>Pekka Riikonen <tt>priikone@poseidon.pspt.fi</tt>
-<date>Last updated: $Id$
-<abstract>
-This document describes the SILC Library functions and programming
-application interfaces. The SILC Library is pretty much generic purpose
-library in many ways. It includes routines for basic things like buffer
-management, network connection management, scheduling and task management.
-However, it includes a lot routines that are related only to SILC. This
-document does not describe the implementation of the SILC client and SILC
-server. They and their API's will be described in separate documents.
-</abstract>
-
-<!-- Table of contents -->
-<toc>
-
-<!-- Begin the document -->
-
-<sect>Overview
-
-<p>
-This document describes the SILC Library functions and programming
-application interfaces. The SILC Library is pretty much generic purpose
-library in many ways. It includes routines for basic things like buffer
-management, network connection management, scheduling and task management.
-However, it includes a lot routines that are related only to SILC. This
-document does not describe the implementation of the SILC client and SILC
-server. They and their API's will be described in separate documents.
-
-<sect><tt>lib/</tt> directory
-
-<p>
-This section describes the libraries implemented in the SILC Library
-as a whole. The SILC package and the SILC library includes other libraries
-that are out of scope of this document. Those libraries are mentioned
-separately and reference to the corresponding library manual is given.
-
-<sect1><tt>silccore</tt>
-
-<p>
-This directory includes the core library of the SILC. It includes all the
-basic and common routines used by SILC client and server applications.
-This includes buffer management, file management, network connection
-mangement, task management and scheduling.
-
-<sect1><tt>silccrypt</tt>
-
-<p>
-This directory includes the crypto library. It includes implementations
-of various cryptographic algrotihms, hash functions and public key
-cryptosystems. It also includes cryptographically strong random number
-generator. Most of the implementations of the algorithms are copied
-from other crypto libraries.
-
-<sect1><tt>silcmath</tt>
-
-<p>
-This directory includes math library. It includes GNU MP library and
-some other routines. The math library is tightly related to the crypto
-library and specificly public key cryptosystems.
-
-<sect2><tt>silcmath/gmp-3.0.1</tt>
-
-<p>
-This directory includes the GNU MP library. The description of this
-library is out of scope of this document. See
-<url url="http://www.swox.com/gmp/"> for more detailed information.
-
-<sect1><tt>silcsim</tt>
-
-<p>
-This directory includes the SILC Module (SIM) library. SIM's are dynamically
-loadable shared objects.
-
-<sect1><tt>silcske</tt>
-
-<p>
-This directory includes implementation of the SILC Key Exchange (SKE)
-protocol. SKE protocol is used to perform key exchange between two
-connecting entities such as client and server. The SKE protocol
-specification is described in the Internet Draft
-<tt>draft-riikonen-silc-ke-auth-00.txt</tt> document available from
-<url url="http://www.ietf.org">.
-
-<sect>Basic programming with SILC library
-
-<p>
-
-
-<sect>Core Library
-
-<p>
-SILC Core library includes all the basic and common routines used by
-SILC client and server applications. This includes buffer management,
-file management, network connection mangement, task management and scheduling.
-It also includes core components related to the actual SILC protocol
-implementation such as ID routines, ID cache system and SILC packet management.
-
-<p>
-This section lists all the public header files of the core library thus
-all the public application programming interfaces of the core library.
-
-<sect1>lib/silccore/id.h
-
-<p>
- These are important ID types used in SILC. SILC server creates these
- but SILC client has to handle these as well since these are used in
- packet sending and reception. However, client never creates these
- but it receives the correct ID's from server. Clients, servers and
- channels are identified by the these ID's. Note that these are currently
- IPv4 specific, although adding IPv6 support is not a bad task and SILC
- protocol already supports IPv6.
-
-<sect2>Includes
-
-<p>
-<tt>#include "id.h"</tt>
-
-<sect2>Definitions
-
-<p>
-<verb>typedef unsigned char SilcIdType;</verb>
-<descrip><quote>
-Type definition for all ID types.
-</quote></descrip>
-
-<p>
-<verb>
-#define SILC_ID_SERVER_LEN
-#define SILC_ID_CLIENT_LEN
-#define SILC_ID_CHANNEL_LEN
-</verb>
-<descrip><quote>
-Length of the ID's.
-</quote></descrip>
-
-<p>
-<verb>
-#define SILC_ID_NONE
-#define SILC_ID_SERVER
-#define SILC_ID_CLIENT
-#define SILC_ID_CHANNEL
-</verb>
-<descrip><quote>
-All types of the ID's.
-</quote></descrip>
-
-<p>
-<verb>
-typedef struct {
- struct in_addr ip; /* 32 bit IP */
- unsigned short port; /* 16 bit port */
- unsigned short rnd; /* 16 bit random number */
-} SilcServerID;
-</verb>
-<descrip><quote>
-Defines the Server ID structure. This is used to distinguish a server in
-SILC network.
-</quote></descrip>
-
-<p>
-<verb>
-typedef struct {
- struct in_addr ip; /* 32 bit IP */
- unsigned char rnd; /* 8 bit random number */
- unsigned char hash[CLIENTID_HASH_LEN]; /* 88 bit MD5 hash */
-} SilcClientID;
-</verb>
-<descrip><quote>
-Defines the Client ID structure. This is used to distinguish a client in
-SILC network.
-</quote></descrip>
-
-<p>
-<verb>
-typedef struct {
- struct in_addr ip; /* 32 bit IP */
- unsigned short port; /* 16 bit port */
- unsigned short rnd; /* 16 bit random number */
-} SilcChannelID;
-</verb>
-<descrip><quote>
-Defines the Channel ID structure. This is used to distinguish a channel in
-SILC network.
-</quote></descrip>
-
-<sect2>Public Interface
-
-<p>
-<verb>
-unsigned char *silc_id_id2str(void *id, SilcIdType type);
-</verb>
-<descrip><quote>
-Converts ID to unsigned char string. First argument is a pointer of the
-ID to be converted, second argument is the of the ID. Returns the converted
-ID.
-</quote></descrip>
-
-<p>
-<verb>
-void *silc_id_str2id(unsigned char *id, SilcIdType type);
-</verb>
-<descrip><quote>
-Converts string to ID. First argument is the string ID seconf is the type
-of the ID. Returns the converted ID.
-</quote></descrip>
-
-<p>
-<verb>
-unsigned int silc_id_get_len(SilcIdType type);
-</verb>
-<descrip><quote>
-Returns length of a type of an ID.
-</quote></descrip>
-
-
-<sect1>lib/silccore/idcache.h
-<sect1>lib/silccore/silcbuffer.h
-<sect1>lib/silccore/silcbuffmt.h
-<sect1>lib/silccore/silcbufutil.h
-<sect1>lib/silccore/silcchannel.h
-<sect1>lib/silccore/silccommand.h
-<sect1>lib/silccore/silcconfig.h
-<sect1>lib/silccore/silclog.h
-<sect1>lib/silccore/silcmemory.h
-<sect1>lib/silccore/silcnet.h
-<sect1>lib/silccore/silcpacket.h
-<sect1>lib/silccore/silcprotocol.h
-<sect1>lib/silccore/silcschedule.h
-<sect1>lib/silccore/silcsockconn.h
-<sect1>lib/silccore/silctask.h
-<sect1>lib/silccore/silcutil.h
-
-
-<sect>Crypto Library
-
-<sect>Math Library
-
-<sect>SIM Library
-
-<sect>SKE library
-
-<p>
-All right, so you're typing along, and you want to show some example code,
-or example I/O with a program, whatever. Use the <tt/code/ or <tt/verb/
-``environments'' for this, wrapped in a <tt/tscreen/ environment, as so:
-<tscreen><verb>
-This is an example verb environment.
-</verb></tscreen>
-As well as:
-<tscreen><code>
-This is an example code environment.
-</code></tscreen>
-The <tt/tscreen/ environment just sets the font to small type and
-indents it nicely. It's not required for using <tt/verb/ or <tt/code/,
-but I suggest that you do.
-
-The <em/Linuxdoc-SGML User's Guide/ explains what special characters you
-can and can't use in the <tt/verb/ and <tt/code/ environments.
-
-<sect1><heading><label id="test-ref">Cross references</>
-
-<p>
-What about cross-references? This section has been marked with the
-<tt>label</> command; using <tt>ref</> will provide a cross reference,
-as in ``See Section <ref id="test-ref">'' for more.
-
-Right now cross-references don't work in the <tt/groff/ translation for
-plain ASCII. They do work when generating LaTeX or HTML output.
-
-<sect1>Using fonts
-
-<p>
-You want fonts, we got fonts. Of course these won't show up in the
-plain ASCII text, but they all map into the various output formats:
-<bf/boldface/, <em/emphasis/, <sf/sans serif/, <sl/slanted/,
-<tt/typewriter/, and <it/italics/.
-
-<sect1>Lists
-
-<p>
-Lists are easy as well. Just use the <tt/itemize/ element with the
-<tt/item/ commands, seen here:
-<itemize>
-<item> This is a list.
-<item> Nothing exciting about that.
- <itemize>
- <item> Multiple levels are supported as well.
- <item> Again, that's no surprise.
- </itemize>
- <enum>
- <item> Enumerated lists using <tt>enum</> also work.
- <item> Description environments using <tt>descrip</> along
- with <tt>tag</> are also available, as seen here.
- </enum>
- <descrip>
- <tag/First item./ Here's one item.
- <tag/Second item./ Here's another.
- <tag/Third item./ Can we go for three?
- </descrip>
-<item> A final item to top it all off.
-</itemize>
-
-This is just about everything that you need to get started with
-writing SGML docs using the <tt/linuxdoc-sgml/ DTD. Please let me know
-if you think something should be changed or added to this document.
-
-</article>