Author: Pekka Riikonen <priikone@silcnet.org>
- Copyright (C) 2002 - 2006 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
}
break;
+ case SILC_ATTRIBUTE_PHONE_NUMBER:
+ {
+ SilcAttributeObjPN *pn = object;
+ if (object_size != sizeof(*pn))
+ return NULL;
+ if (!pn->number || strlen(pn->number) < 5)
+ return NULL;
+ tmpbuf = silc_buffer_alloc(0);
+ if (!tmpbuf)
+ return NULL;
+ if (silc_buffer_format(tmpbuf,
+ SILC_STR_UI_INT(pn->format),
+ SILC_STR_UI_SHORT(strlen(pn->number)),
+ SILC_STR_UI16_STRING(pn->number),
+ SILC_STR_END) < 0)
+ return NULL;
+ object = tmpbuf->data;
+ object_size = silc_buffer_len(tmpbuf);
+ }
+ break;
+
case SILC_ATTRIBUTE_USER_PUBLIC_KEY:
case SILC_ATTRIBUTE_SERVER_PUBLIC_KEY:
{
len = 4 + (SilcUInt16)data_len;
buffer = silc_buffer_realloc(buffer,
- (buffer ? silc_buffer_truelen(buffer) + len : len));
+ (buffer ? silc_buffer_truelen(buffer) +
+ len : len));
if (!buffer)
return NULL;
silc_buffer_pull(buffer, silc_buffer_len(buffer));
}
break;
+ case SILC_ATTRIBUTE_PHONE_NUMBER:
+ {
+ SilcAttributeObjPN *pn = object;
+ SilcBufferStruct buffer;
+ SilcUInt32 pn_format;
+ int res;
+ if (object_size != sizeof(*pn))
+ break;
+ silc_buffer_set(&buffer, (unsigned char *)payload->data,
+ payload->data_len);
+ res =
+ silc_buffer_unformat(&buffer,
+ SILC_STR_UI_INT(&pn_format),
+ SILC_STR_UI16_STRING_ALLOC(&pn->number),
+ SILC_STR_END);
+ if (res == -1)
+ break;
+ pn->format = pn_format;
+ ret = TRUE;
+ }
+ break;
+
case SILC_ATTRIBUTE_USER_PUBLIC_KEY:
case SILC_ATTRIBUTE_SERVER_PUBLIC_KEY:
{
Author: Pekka Riikonen <priikone@silcnet.org>
- Copyright (C) 2002 - 2006 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
#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 */
} 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_PHONE = 1, /* ITU E.123 */
+ SILC_ATTRIBUTE_NUMBER_ENUM = 2, /* ENUM, RFC 3761 */
+} SilcAttributePNFormat;
+/***/
+
/****f* silccore/SilcAttributesAPI/silc_attribute_payload_alloc
*
* SYNOPSIS
} 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