Added SILC Thread Queue API
[runtime.git] / lib / silccore / silcattrs.h
index 2c578dbfda27d67cad736ebd8ed93a630cdaea8a..0a804f2fc0c70a258e7bdb08588f97b73d280b00 100644 (file)
@@ -4,7 +4,7 @@
 
   Author: Pekka Riikonen <priikone@silcnet.org>
 
-  Copyright (C) 2002 - 2003 Pekka Riikonen
+  Copyright (C) 2002 - 2007 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
@@ -67,21 +67,23 @@ typedef SilcUInt8 SilcAttribute;
    comment is the structure or data type that must be used with the
    silc_attribute_get_object function to fetch parsed attribute. */
 #define SILC_ATTRIBUTE_NONE                   0
-#define SILC_ATTRIBUTE_USER_INFO              1 /* SilcVCard */
-#define SILC_ATTRIBUTE_SERVICE                2 /* SilcAttributeObjService */
-#define SILC_ATTRIBUTE_STATUS_MOOD            3 /* SilcAttributeMood */
-#define SILC_ATTRIBUTE_STATUS_FREETEXT        4 /* char * (UTF-8 string) */
-#define SILC_ATTRIBUTE_STATUS_MESSAGE         5 /* SilcAttributeObjMime */
-#define SILC_ATTRIBUTE_PREFERRED_LANGUAGE     6 /* char * (UTF-8 string) */
-#define SILC_ATTRIBUTE_PREFERRED_CONTACT      7 /* SilcAttributeContact */
-#define SILC_ATTRIBUTE_TIMEZONE               8 /* char * (UTF-8 string) */
-#define SILC_ATTRIBUTE_GEOLOCATION            9 /* SilcAttributeObjGeo */
-#define SILC_ATTRIBUTE_DEVICE_INFO            10 /* SilcAttributeObjDevice */
-#define SILC_ATTRIBUTE_EXTENSION              11 /* SilcAttributeObjMime */
-#define SILC_ATTRIBUTE_USER_PUBLIC_KEY        12 /* SilcAttributeObjPk */
-#define SILC_ATTRIBUTE_SERVER_PUBLIC_KEY      13 /* SilcAttributeObjPk */
-#define SILC_ATTRIBUTE_USER_DIGITAL_SIGNATURE 14 /* SilcAttributeObjPk */
+#define SILC_ATTRIBUTE_USER_INFO              1   /* SilcVCard */
+#define SILC_ATTRIBUTE_SERVICE                2   /* SilcAttributeObjService */
+#define SILC_ATTRIBUTE_STATUS_MOOD            3   /* SilcAttributeMood */
+#define SILC_ATTRIBUTE_STATUS_FREETEXT        4   /* char * (UTF-8 string) */
+#define SILC_ATTRIBUTE_STATUS_MESSAGE         5   /* SilcMime */
+#define SILC_ATTRIBUTE_PREFERRED_LANGUAGE     6   /* char * (UTF-8 string) */
+#define SILC_ATTRIBUTE_PREFERRED_CONTACT      7   /* SilcAttributeContact */
+#define SILC_ATTRIBUTE_TIMEZONE               8   /* char * (UTF-8 string) */
+#define SILC_ATTRIBUTE_GEOLOCATION            9   /* SilcAttributeObjGeo */
+#define SILC_ATTRIBUTE_DEVICE_INFO            10  /* SilcAttributeObjDevice */
+#define SILC_ATTRIBUTE_EXTENSION              11  /* SilcMime */
+#define SILC_ATTRIBUTE_USER_PUBLIC_KEY        12  /* SilcAttributeObjPk */
+#define SILC_ATTRIBUTE_SERVER_PUBLIC_KEY      13  /* SilcAttributeObjPk */
+#define SILC_ATTRIBUTE_USER_DIGITAL_SIGNATURE 14  /* SilcAttributeObjPk */
 #define SILC_ATTRIBUTE_SERVER_DIGITAL_SIGNATURE 15 /* SilcAttributeObjPk */
+#define SILC_ATTRIBUTE_USER_ICON             16  /* SilcMime */
+#define SILC_ATTRIBUTE_PHONE_NUMBER          17  /* SilcAttributeObjPN */
 /***/
 
 /* Maximum length of attribute request packet */
@@ -181,6 +183,25 @@ typedef enum {
 } SilcAttributeDevice;
 /***/
 
+/****d* silccore/SilcAttributesAPI/SilcAttributePNFormat
+ *
+ * NAME
+ *
+ *    typedef enum { ... } SilcAttributePNFormat;
+ *
+ * DESCRIPTION
+ *
+ *    The defined phone number formats.
+ *
+ * SOURCE
+ */
+typedef enum {
+  SILC_ATTRIBUTE_NUMBER_ITU_E164        = 0,     /* ITU E.164 */
+  SILC_ATTRIBUTE_NUMBER_ITU_E123        = 1,     /* ITU E.123 */
+  SILC_ATTRIBUTE_NUMBER_ENUM            = 2,     /* ENUM, RFC 3761 */
+} SilcAttributePNFormat;
+/***/
+
 /****f* silccore/SilcAttributesAPI/silc_attribute_payload_alloc
  *
  * SYNOPSIS
@@ -357,7 +378,7 @@ const unsigned char *silc_attribute_get_data(SilcAttributePayload payload,
  *
  *    unsigned char *
  *    silc_attribute_get_verify_data(SilcDList attrs,
- *                                   bool server_verification,
+ *                                   SilcBool server_verification,
  *                                   SilcUInt32 *data_len);
  *
  * DESCRIPTION
@@ -372,7 +393,7 @@ const unsigned char *silc_attribute_get_data(SilcAttributePayload payload,
  *
  ***/
 unsigned char *silc_attribute_get_verify_data(SilcDList attrs,
-                                             bool server_verification,
+                                             SilcBool server_verification,
                                              SilcUInt32 *data_len);
 
 /* Object structures */
@@ -394,29 +415,10 @@ typedef struct SilcAttributeObjServiceStruct {
   SilcUInt32 idle;             /* Idle time in the service */
   char signon[64];             /* Signon date and time (UTC) */
   char address[256];           /* service address */
-  bool status;                 /* online status (TRUE present in service) */
+  SilcBool status;             /* online status (TRUE present in service) */
 } SilcAttributeObjService;
 /***/
 
-/****s* silccore/SilcAttributesAPI/SilcAttributeObjMime
- *
- * NAME
- *
- *    typedef struct { ... } SilcAttributeObjMime;
- *
- * DESCRIPTION
- *
- *    Data type for MIME object as attribute.  The data in the structure
- *    is valid as long as the payload structure is valid.
- *
- * SOURCE
- */
-typedef struct SilcAttributeObjMimeStruct {
-  const unsigned char *mime;   /* MIME buffer */
-  SilcUInt32 mime_len;         /* length of the MIME buffer */
-} SilcAttributeObjMime;
-/***/
-
 /****s* silccore/SilcAttributesAPI/SilcAttributeObjGeo
  *
  * NAME
@@ -472,9 +474,7 @@ typedef struct SilcAttributeObjDeviceStruct {
  *    caller must free the data inside the structure.  The 'type' is one
  *    of following: "silc-rsa", "silc-dss, "ssh-rsa", "ssh-dss",
  *    "pgp-sign-rsa", "pgp-sign-dss", "x509v3-sign-rsa", "x509v3-sign-dss".
- *    See the draft-riikonen-precense-attrs draft for more detailed
- *    information.  The 'type' is NULL when this structure includes a
- *    digital signature.
+ *    The 'type' is NULL when this structure includes a digital signature.
  *
  *    In SILC, at least the "silc-rsa" must be supported.  In this case
  *    the key is normal SILC Public key.  To verify a signature with the
@@ -495,13 +495,32 @@ typedef struct SilcAttributeObjPkStruct {
 } SilcAttributeObjPk;
 /***/
 
+/****s* silccore/SilcAttributesAPI/SilcAttributeObjPN
+ *
+ * NAME
+ *
+ *    typedef struct { ... } SilcAttributeObjPN;
+ *
+ * DESCRIPTION
+ *
+ *    SILC_ATTRIBUTE_PHONE_NUMBER type object.  The caller must free the
+ *    phone number string inside the structure.
+ *
+ * SOURCE
+ */
+typedef struct SilcAttributeObjPNStruct {
+  SilcAttributePNFormat format;        /* Phone number format */
+  char *number;                        /* Phone number */
+} SilcAttributeObjPN;
+/***/
+
 /****f* silccore/SilcAttributesAPI/silc_attribute_get_object
  *
  * SYNOPSIS
  *
- *    bool silc_attribute_get_object(SilcAttributePayload payload,
- *                                   void *object,
- *                                   SilcUInt32 object_size);
+ *    SilcBool silc_attribute_get_object(SilcAttributePayload payload,
+ *                                       void *object,
+ *                                       SilcUInt32 object_size);
  *
  * DESCRIPTION
  *
@@ -525,10 +544,15 @@ typedef struct SilcAttributeObjPkStruct {
  *    memset(&dev, 0, sizeof(dev));
  *    if (!silc_attribute_get_object(payload, (void *)&dev, sizeof(dev)))
  *      error();
+ *
+ *    case SILC_ATTRIBUTE_USER_ICON:
+ *    mime = silc_mime_alloc();
+ *    if (!silc_attribute_get_object(payload, (void *)mime, sizeof(*mime)))
+ *      error();
  *    ...
  *
  ***/
-bool silc_attribute_get_object(SilcAttributePayload payload,
-                              void *object, SilcUInt32 object_size);
+SilcBool silc_attribute_get_object(SilcAttributePayload payload,
+                                  void *object, SilcUInt32 object_size);
 
 #endif /* SILCATTRS_H */