#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 }
|