/* All defined attributes. See the specs for detailed information. The
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_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_SERVER_DIGITAL_SIGNATURE 15 /* SilcAttributeObjPk */
/***/
const unsigned char *silc_attribute_get_data(SilcAttributePayload payload,
SilcUInt32 *data_len);
+/****f* silccore/SilcAttributesAPI/silc_attribute_get_verify_data
+ *
+ * SYNOPSIS
+ *
+ * unsigned char *
+ * silc_attribute_get_verify_data(SilcDList attrs,
+ * bool server_verification,
+ * SilcUInt32 *data_len);
+ *
+ * DESCRIPTION
+ *
+ * Constructs the data to be verified with the sender's digital
+ * signature and sender's public key. This allocates the data from
+ * the list of attribute payloads and returns the buffer. The caller
+ * must free it. If `server_verification' is FALSE then data is
+ * constructed for user's digital signature verification, if it is
+ * TRUE then it is constructed for server's digital signature
+ * verification.
+ *
+ ***/
+unsigned char *silc_attribute_get_verify_data(SilcDList attrs,
+ bool server_verification,
+ SilcUInt32 *data_len);
+
/* Object structures */
-/****s* silccore/SilcAttributesAPI/SilcAttributesObjService
+/****s* silccore/SilcAttributesAPI/SilcAttributeObjService
*
* NAME
*
- * typedef struct { ... } SilcAttributesObjService;
+ * typedef struct { ... } SilcAttributeObjService;
*
* DESCRIPTION
*
*/
typedef struct {
SilcUInt32 port; /* IANA specified service port */
+ 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) */
} SilcAttributeObjService;
/***/
-/****s* silccore/SilcAttributesAPI/SilcAttributesObjMime
+/****s* silccore/SilcAttributesAPI/SilcAttributeObjMime
*
* NAME
*
- * typedef struct { ... } SilcAttributesObjMime;
+ * typedef struct { ... } SilcAttributeObjMime;
*
* DESCRIPTION
*
} SilcAttributeObjMime;
/***/
-/****s* silccore/SilcAttributesAPI/SilcAttributesObjGeo
+/****s* silccore/SilcAttributesAPI/SilcAttributeObjGeo
*
* NAME
*
- * typedef struct { ... } SilcAttributesObjGeo;
+ * typedef struct { ... } SilcAttributeObjGeo;
*
* DESCRIPTION
*
} SilcAttributeObjGeo;
/***/
-/****s* silccore/SilcAttributesAPI/SilcAttributesObjDevice
+/****s* silccore/SilcAttributesAPI/SilcAttributeObjDevice
*
* NAME
*
- * typedef struct { ... } SilcAttributesObjDevice;
+ * typedef struct { ... } SilcAttributeObjDevice;
*
* DESCRIPTION
*
} SilcAttributeObjDevice;
/***/
-/****s* silccore/SilcAttributesAPI/SilcAttributesObjPk
+/****s* silccore/SilcAttributesAPI/SilcAttributeObjPk
*
* NAME
*
- * typedef struct { ... } SilcAttributesObjPk;
+ * typedef struct { ... } SilcAttributeObjPk;
*
* DESCRIPTION
*