/*
-
+
silcid.h
-
+
Author: Pekka Riikonen <priikone@silcnet.org>
-
- Copyright (C) 1997 - 2000 Pekka Riikonen
-
+
+ Copyright (C) 1997 - 2005 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.
-
+ the Free Software Foundation; version 2 of the License.
+
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
/****d* silccore/SilcIDAPI/SilcIdType
*
* NAME
- *
+ *
* typedef SilcUInt16 SilcIdType;
*
* DESCRIPTION
/****s* silccore/SilcIDAPI/SilcIDPayload
*
* NAME
- *
+ *
* typedef struct SilcIDPayloadStruct *SilcIDPayload;
*
* DESCRIPTION
***/
typedef struct SilcIDPayloadStruct *SilcIDPayload;
-/****s* silccore/SilcIDAPI/SilcArgumentPayload
- *
- * NAME
- *
- * typedef struct SilcArgumentPayloadStruct *SilcArgumentPayload;
- *
- * DESCRIPTION
- *
- * This context is the actual Argument Payload and is allocated
- * by silc_argument_payload_parse and given as argument usually to
- * all silc_argument_payload_* functions. It is freed by the
- * silc_argument_payload_free function.
- *
- ***/
-typedef struct SilcArgumentPayloadStruct *SilcArgumentPayload;
-
/* Prototypes */
/****f* silccore/SilcIDAPI/silc_id_payload_parse
* DESCRIPTION
*
* Parses buffer and return ID payload into payload structure. The
- * `buffer' is raw payload buffer.
+ * `buffer' is raw payload buffer. The caller must free the returned
+ * payload.
*
***/
SilcIDPayload silc_id_payload_parse(const unsigned char *payload,
*
* SYNOPSIS
*
- * void *silc_id_payload_parse_id(const unsigned char *data,
+ * void *silc_id_payload_parse_id(const unsigned char *data,
* SilcUInt32 len,
* SilcIdType *type);
*
/****s* silccore/SilcIDAPI/SilcIDIP
*
* NAME
- *
+ *
* typedef struct { ... } SilcIDIP;
*
* DESCRIPTION
/****s* silccore/SilcIDAPI/SilcServerID
*
* NAME
- *
+ *
* typedef struct { ... } SilcServerID;
*
* DESCRIPTION
*
* 64 or 160 bit SilcServerID structure:
- *
+ *
* n bit IP address
* 16 bit port
* 16 bit random number
*/
typedef struct {
SilcIDIP ip; /* n bit IP address */
- SilcUInt16 port; /* 16 bit port */
- SilcUInt16 rnd; /* 16 bit random number */
+ SilcUInt16 port; /* 16 bit port */
+ SilcUInt16 rnd; /* 16 bit random number */
} SilcServerID;
/***/
/****s* silccore/SilcIDAPI/SilcClientID
*
* NAME
- *
+ *
* typedef struct { ... } SilcClientID;
*
* DESCRIPTION
*
* n bit ServerID IP address [bits 1-32 or bits 1-128]
* 8 bit random number
- * 88 bit hash value from nickname
+ * 88 bit hash value from lowercase nickname
*
* SOURCE
*/
/****s* silccore/SilcIDAPI/SilcChannelID
*
* NAME
- *
+ *
* typedef struct { ... } SilcChannelID;
*
* DESCRIPTION
* SOURCE
*/
typedef struct {
- SilcIDIP ip; /* n bit IP address */
- SilcUInt16 port; /* 16 bit port */
- SilcUInt16 rnd; /* 16 bit random number */
+ SilcIDIP ip; /* n bit IP address */
+ SilcUInt16 port; /* 16 bit port */
+ SilcUInt16 rnd; /* 16 bit random number */
} SilcChannelID;
/***/
/****d* silccore/SilcIDAPI/SILC_ID_COMPARE
*
* NAME
- *
+ *
* #define SILC_ID_COMPARE ...
*
* DESCRIPTION
/****d* silccore/SilcIDAPI/SILC_ID_CLIENT_COMPARE
*
* NAME
- *
+ *
* #define SILC_ID_CLIENT_COMPARE ...
*
* DESCRIPTION
/****d* silccore/SilcIDAPI/SILC_ID_SERVER_COMPARE
*
* NAME
- *
+ *
* #define SILC_ID_SERVER_COMPARE ...
*
* DESCRIPTION
/****d* silccore/SilcIDAPI/SILC_ID_CHANNEL_COMPARE
*
* NAME
- *
+ *
* #define SILC_ID_CHANNEL_COMPARE ...
*
* DESCRIPTION
/****d* silccore/SilcIDAPI/SILC_ID_COMPARE_TYPE
*
* NAME
- *
+ *
* #define SILC_ID_COMPARE_TYPE ...
*
* DESCRIPTION
/****d* silccore/SilcIDAPI/SILC_ID_COMPARE_HASH
*
* NAME
- *
+ *
* #define SILC_ID_COMPARE_HASH ...
*
* DESCRIPTION
*
* SYNOPSIS
*
- * unsigned char *silc_id_id2str(const void *id, SilcIdType type);
+ * unsigned char *silc_id_id2str(const void *id, SilcIdType type,
+ * SilcUInt32 *ret_id_len);
*
* DESCRIPTION
*
* Converts an ID of type `type' to data. This can be used to
- * convert the ID's to data for inclusion in the packets.
+ * convert the ID's to data for inclusion in the packets. Use the
+ * silc_id_get_len to get the length of the ID.
*
***/
-unsigned char *silc_id_id2str(const void *id, SilcIdType type);
+unsigned char *silc_id_id2str(const void *id, SilcIdType type,
+ SilcUInt32 *ret_id_len);
/****f* silccore/SilcIDAPI/silc_id_str2id
*
* SYNOPSIS
*
- * void *silc_id_str2id(const unsigned char *id, SilcUInt32 id_len,
- * SilcIdType type);
+ * bool silc_id_str2id(const unsigned char *id, SilcUInt32 id_len,
+ * SilcIdType type, void *ret_id);
*
* DESCRIPTION
*
* ID out of data that has been taken for example from packet.
*
***/
-void *silc_id_str2id(const unsigned char *id, SilcUInt32 id_len,
- SilcIdType type);
+bool silc_id_str2id(const unsigned char *id, SilcUInt32 id_len,
+ SilcIdType type, void *ret_id);
/****f* silccore/SilcIDAPI/silc_id_get_len
*