X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=lib%2Fsilccore%2Fsilcattrs.h;h=2c578dbfda27d67cad736ebd8ed93a630cdaea8a;hp=afcc019405b55bd3dac9492718a921c380ad1ed4;hb=c257b555225193e54d85daf541d29578b3c93882;hpb=f658940d02cf2fd893296b6a7825b42502573668 diff --git a/lib/silccore/silcattrs.h b/lib/silccore/silcattrs.h index afcc0194..2c578dbf 100644 --- a/lib/silccore/silcattrs.h +++ b/lib/silccore/silcattrs.h @@ -1,10 +1,10 @@ /* - silcattrs.h + silcattrs.h Author: Pekka Riikonen - Copyright (C) 2002 Pekka Riikonen + Copyright (C) 2002 - 2003 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 @@ -33,7 +33,7 @@ /****s* silccore/SilcAttributesAPI/SilcAttributePayload * * NAME - * + * * typedef struct SilcAttributePayloadStruct *SilcAttributePayload; * * DESCRIPTION @@ -49,7 +49,7 @@ typedef struct SilcAttributePayloadStruct *SilcAttributePayload; /****d* silccore/SilcAttributesAPI/SilcAttribute * * NAME - * + * * typedef SilcUInt8 SilcAttribute; * * DESCRIPTION @@ -90,7 +90,7 @@ typedef SilcUInt8 SilcAttribute; /****d* silccore/SilcAttributesAPI/SilcAttributeFlags * * NAME - * + * * typedef SilcUInt8 SilcAttributeFlags; * * DESCRIPTION @@ -110,7 +110,7 @@ typedef SilcUInt8 SilcAttributeFlags; /****d* silccore/SilcAttributesAPI/SilcAttributeMood * * NAME - * + * * typedef enum { ... } SilcAttributeMood; * * DESCRIPTION @@ -139,7 +139,7 @@ typedef enum { /****d* silccore/SilcAttributesAPI/SilcAttributeContact * * NAME - * + * * typedef enum { ... } SilcAttributeContact; * * DESCRIPTION @@ -157,13 +157,14 @@ typedef enum { SILC_ATTRIBUTE_CONTACT_SMS = 0x00000008, /* SMS preferred */ SILC_ATTRIBUTE_CONTACT_MMS = 0x00000010, /* MMS preferred */ SILC_ATTRIBUTE_CONTACT_CHAT = 0x00000020, /* chatting preferred */ + SILC_ATTRIBUTE_CONTACT_VIDEO = 0x00000040, /* video conferencing */ } SilcAttributeContact; /***/ /****d* silccore/SilcAttributesAPI/SilcAttributeDevice * * NAME - * + * * typedef enum { ... } SilcAttributeDevice; * * DESCRIPTION @@ -379,7 +380,7 @@ unsigned char *silc_attribute_get_verify_data(SilcDList attrs, /****s* silccore/SilcAttributesAPI/SilcAttributeObjService * * NAME - * + * * typedef struct { ... } SilcAttributeObjService; * * DESCRIPTION @@ -388,7 +389,7 @@ unsigned char *silc_attribute_get_verify_data(SilcDList attrs, * * SOURCE */ -typedef struct { +typedef struct SilcAttributeObjServiceStruct { SilcUInt32 port; /* IANA specified service port */ SilcUInt32 idle; /* Idle time in the service */ char signon[64]; /* Signon date and time (UTC) */ @@ -400,7 +401,7 @@ typedef struct { /****s* silccore/SilcAttributesAPI/SilcAttributeObjMime * * NAME - * + * * typedef struct { ... } SilcAttributeObjMime; * * DESCRIPTION @@ -410,7 +411,7 @@ typedef struct { * * SOURCE */ -typedef struct { +typedef struct SilcAttributeObjMimeStruct { const unsigned char *mime; /* MIME buffer */ SilcUInt32 mime_len; /* length of the MIME buffer */ } SilcAttributeObjMime; @@ -419,7 +420,7 @@ typedef struct { /****s* silccore/SilcAttributesAPI/SilcAttributeObjGeo * * NAME - * + * * typedef struct { ... } SilcAttributeObjGeo; * * DESCRIPTION @@ -429,7 +430,7 @@ typedef struct { * * SOURCE */ -typedef struct { +typedef struct SilcAttributeObjGeoStruct { char *longitude; /* Longitude */ char *latitude; /* Latitude */ char *altitude; /* Altitude */ @@ -440,7 +441,7 @@ typedef struct { /****s* silccore/SilcAttributesAPI/SilcAttributeObjDevice * * NAME - * + * * typedef struct { ... } SilcAttributeObjDevice; * * DESCRIPTION @@ -450,7 +451,7 @@ typedef struct { * * SOURCE */ -typedef struct { +typedef struct SilcAttributeObjDeviceStruct { SilcAttributeDevice type; /* device type */ char *manufacturer; /* manufacturer of the device */ char *version; /* device version string */ @@ -462,17 +463,30 @@ typedef struct { /****s* silccore/SilcAttributesAPI/SilcAttributeObjPk * * NAME - * + * * typedef struct { ... } SilcAttributeObjPk; * * DESCRIPTION * * Data type for public key, certificate or digital signatures. The - * caller must free the data inside the structure. + * 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. + * + * 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 + * SILC Public key, construct the signature data with the + * silc_attribute_get_verify_data and verify the signature with + * for example silc_pkcs_verify_with_hash function. The public key + * to the verification is the `data' and `data_len', and can be decoded + * with silc_pkcs_public_key_decode function. * * SOURCE */ -typedef struct { +typedef struct SilcAttributeObjPkStruct { char *type; /* public key/certificate type, NULL when contains digital signature. */ unsigned char *data; /* public key/cert/signature data. The @@ -502,6 +516,17 @@ typedef struct { * You can use silc_attribute_get_attribute to get the SilcAttribute * type from the `payload'. * + * EXAMPLE + * + * SilcAttributeObjDevice dev; + * + * ... + * case SILC_ATTRIBUTE_DEVICE_INFO: + * memset(&dev, 0, sizeof(dev)); + * if (!silc_attribute_get_object(payload, (void *)&dev, sizeof(dev))) + * error(); + * ... + * ***/ bool silc_attribute_get_object(SilcAttributePayload payload, void *object, SilcUInt32 object_size);