#include "dazuko_events.h"Go to the source code of this file.
Functions | |
| int | dazukoRegisterTrusted (const char *groupName, const char *token, int flags) |
| int | dazukoUnregisterTrusted (void) |
|
||||||||||||||||
|
Definition at line 42 of file dazukoio_trusted_core.c. References dazuko_request::buffer, dazuko_request::buffer_size, dazuko_get_value(), DAZUKO_TRUST_CHILDREN, ITOA_SIZE, NULL, REGISTER_TRUSTED, dazuko_request::reply_buffer, dazuko_request::reply_buffer_size, dazuko_request::type, xp_connection_close(), xp_connection_open(), and xp_process_request(). 00043 {
00044 struct dazuko_request *request;
00045 char buffer[ITOA_SIZE];
00046 dazuko_id_t *temp_id;
00047 size_t size;
00048
00049 if (groupName == NULL || token == NULL)
00050 return -1;
00051
00052 /* create temporary id */
00053 temp_id = (dazuko_id_t *)malloc(sizeof(dazuko_id_t));
00054 if (temp_id == NULL)
00055 return -1;
00056
00057 memset(temp_id, 0, sizeof(dazuko_id_t));
00058
00059 /* open device */
00060 if (xp_connection_open(temp_id) != 0)
00061 {
00062 free(temp_id);
00063 return -1;
00064 }
00065
00066 request = (struct dazuko_request *)malloc(sizeof(struct dazuko_request));
00067 if (request == NULL)
00068 {
00069 xp_connection_close(temp_id);
00070 free(temp_id);
00071 return -1;
00072 }
00073
00074 memset(request, 0, sizeof(struct dazuko_request));
00075
00076 request->type[0] = REGISTER_TRUSTED;
00077
00078 size = 1 + 2 + 1 + strlen(groupName); /* \nGN=groupName */
00079 size += 1 + 2 + 1 + strlen(token); /* \nTT=token */
00080 if (flags & DAZUKO_TRUST_CHILDREN)
00081 {
00082 size += 1 + 2 + 1 + 1; /* \nTF=C */
00083 }
00084 size += 1; /* \0 */
00085
00086 request->buffer = (char *)malloc(size);
00087 if (request->buffer == NULL)
00088 {
00089 xp_connection_close(temp_id);
00090 free(temp_id);
00091 free(request);
00092 return -1;
00093 }
00094 snprintf(request->buffer, size, "\nGN=%s\nTT=%s%s", groupName, token, (flags & DAZUKO_TRUST_CHILDREN) ? "\nTF=C" : "");
00095 request->buffer[size - 1] = 0;
00096
00097 request->buffer_size = strlen(request->buffer) + 1;
00098
00099 size = 4096;
00100 request->reply_buffer = (char *)malloc(size);
00101 if (request->reply_buffer == NULL)
00102 {
00103 xp_connection_close(temp_id);
00104 free(temp_id);
00105 free(request->buffer);
00106 free(request);
00107 return -1;
00108 }
00109 memset(request->reply_buffer, 0, size);
00110 request->reply_buffer_size = size;
00111
00112 snprintf(buffer, sizeof(buffer), "\nRA=%lu", (unsigned long)request);
00113 buffer[sizeof(buffer)-1] = 0;
00114 size = strlen(buffer) + 1;
00115
00116 if (xp_process_request(temp_id, buffer, size) != 0)
00117 {
00118 xp_connection_close(temp_id);
00119 free(temp_id);
00120 free(request->buffer);
00121 free(request->reply_buffer);
00122 free(request);
00123
00124 return -1;
00125 }
00126
00127 if (dazuko_get_value("\nDN=", request->reply_buffer, buffer, sizeof(buffer)) != 0)
00128 {
00129 xp_connection_close(temp_id);
00130 free(temp_id);
00131 free(request->buffer);
00132 free(request->reply_buffer);
00133 free(request);
00134
00135 return -1;
00136 }
00137
00138 xp_connection_close(temp_id);
00139 free(temp_id);
00140 free(request->buffer);
00141 free(request->reply_buffer);
00142 free(request);
00143
00144 if (atoi(buffer) != 0)
00145 return -1;
00146
00147 return 0;
00148 }
|
|
|
Definition at line 150 of file dazukoio_trusted_core.c. References dazuko_request::buffer, ITOA_SIZE, NULL, dazuko_request::type, UNREGISTER_TRUSTED, xp_connection_close(), xp_connection_open(), and xp_process_request(). 00151 {
00152 struct dazuko_request *request;
00153 char buffer[ITOA_SIZE];
00154 dazuko_id_t *temp_id;
00155 size_t size;
00156 int error = 0;
00157
00158 /* create temporary id */
00159 temp_id = (dazuko_id_t *)malloc(sizeof(dazuko_id_t));
00160 if (temp_id == NULL)
00161 return -1;
00162
00163 memset(temp_id, 0, sizeof(dazuko_id_t));
00164
00165 /* open device */
00166 if (xp_connection_open(temp_id) != 0)
00167 {
00168 free(temp_id);
00169 return -1;
00170 }
00171
00172 request = (struct dazuko_request *)malloc(sizeof(struct dazuko_request));
00173 if (request == NULL)
00174 {
00175 free(temp_id);
00176 return -1;
00177 }
00178
00179 memset(request, 0, sizeof(struct dazuko_request));
00180
00181 request->type[0] = UNREGISTER_TRUSTED;
00182
00183 snprintf(buffer, sizeof(buffer), "\nRA=%lu", (unsigned long)request);
00184 buffer[sizeof(buffer)-1] = 0;
00185 size = strlen(buffer) + 1;
00186
00187 if (xp_process_request(temp_id, buffer, size) != 0)
00188 {
00189 error = -1;
00190 }
00191
00192 xp_connection_close(temp_id);
00193 free(temp_id);
00194 free(request);
00195
00196 return error;
00197 }
|
1.4.2