107
async_verify_chain_thread (GSimpleAsyncResult *res,
109
GCancellable *cancellable)
106
async_verify_chain_thread (GTask *task,
109
GCancellable *cancellable)
111
AsyncVerifyChain *args = g_simple_async_result_get_op_res_gpointer (res);
111
AsyncVerifyChain *args = task_data;
112
GTlsCertificateFlags verify_result;
112
113
GError *error = NULL;
114
args->verify_result = g_tls_database_verify_chain (G_TLS_DATABASE (object),
115
verify_result = g_tls_database_verify_chain (G_TLS_DATABASE (object),
124
g_simple_async_result_take_error (res, error);
124
g_task_return_error (task, error);
126
g_task_return_int (task, (gssize)verify_result);
145
147
args->interaction = interaction ? g_object_ref (interaction) : NULL;
146
148
args->flags = flags;
148
res = g_simple_async_result_new (G_OBJECT (self), callback, user_data,
149
g_tls_database_real_verify_chain_async);
150
g_simple_async_result_set_op_res_gpointer (res, args, async_verify_chain_free);
151
g_simple_async_result_run_in_thread (res, async_verify_chain_thread,
152
G_PRIORITY_DEFAULT, cancellable);
153
g_object_unref (res);
150
task = g_task_new (self, cancellable, callback, user_data);
151
g_task_set_task_data (task, args, async_verify_chain_free);
152
g_task_run_in_thread (task, async_verify_chain_thread);
153
g_object_unref (task);
156
156
static GTlsCertificateFlags
158
158
GAsyncResult *result,
161
AsyncVerifyChain *args;
163
g_return_val_if_fail (G_IS_SIMPLE_ASYNC_RESULT (result), G_TLS_CERTIFICATE_GENERIC_ERROR);
164
g_return_val_if_fail (g_simple_async_result_is_valid (result, G_OBJECT (self),
165
g_tls_database_real_verify_chain_async), FALSE);
167
if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (result), error))
161
GTlsCertificateFlags ret;
163
g_return_val_if_fail (g_task_is_valid (result, self), G_TLS_CERTIFICATE_GENERIC_ERROR);
165
ret = (GTlsCertificateFlags)g_task_propagate_int (G_TASK (result), error);
166
if (ret == (GTlsCertificateFlags)-1)
168
167
return G_TLS_CERTIFICATE_GENERIC_ERROR;
170
args = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (result));
171
return args->verify_result;
176
174
GTlsInteraction *interaction;
177
175
GTlsDatabaseLookupFlags flags;
178
GTlsCertificate *result;
179
176
} AsyncLookupCertificateForHandle;
186
183
g_free (args->handle);
187
184
g_clear_object (&args->interaction);
188
g_clear_object (&args->result);
189
185
g_slice_free (AsyncLookupCertificateForHandle, args);
193
async_lookup_certificate_for_handle_thread (GSimpleAsyncResult *res,
195
GCancellable *cancellable)
189
async_lookup_certificate_for_handle_thread (GTask *task,
192
GCancellable *cancellable)
197
AsyncLookupCertificateForHandle *args = g_simple_async_result_get_op_res_gpointer (res);
194
AsyncLookupCertificateForHandle *args = task_data;
195
GTlsCertificate *result;
198
196
GError *error = NULL;
200
args->result = g_tls_database_lookup_certificate_for_handle (G_TLS_DATABASE (object),
208
g_simple_async_result_take_error (res, error);
198
result = g_tls_database_lookup_certificate_for_handle (G_TLS_DATABASE (object),
205
g_task_return_pointer (task, result, g_object_unref);
207
g_task_return_error (task, error);
217
216
GAsyncReadyCallback callback,
218
217
gpointer user_data)
220
GSimpleAsyncResult *res;
221
220
AsyncLookupCertificateForHandle *args;
223
g_return_if_fail (callback != NULL);
225
222
args = g_slice_new0 (AsyncLookupCertificateForHandle);
226
223
args->handle = g_strdup (handle);
227
224
args->interaction = interaction ? g_object_ref (interaction) : NULL;
229
res = g_simple_async_result_new (G_OBJECT (self), callback, user_data,
230
g_tls_database_real_lookup_certificate_for_handle_async);
231
g_simple_async_result_set_op_res_gpointer (res, args, async_lookup_certificate_for_handle_free);
232
g_simple_async_result_run_in_thread (res, async_lookup_certificate_for_handle_thread,
233
G_PRIORITY_DEFAULT, cancellable);
234
g_object_unref (res);
226
task = g_task_new (self, cancellable, callback, user_data);
227
g_task_set_task_data (task, args, async_lookup_certificate_for_handle_free);
228
g_task_run_in_thread (task, async_lookup_certificate_for_handle_thread);
229
g_object_unref (task);
237
232
static GTlsCertificate*
239
234
GAsyncResult *result,
242
AsyncLookupCertificateForHandle *args;
243
GTlsCertificate *certificate;
245
g_return_val_if_fail (G_IS_SIMPLE_ASYNC_RESULT (result), NULL);
246
g_return_val_if_fail (g_simple_async_result_is_valid (result, G_OBJECT (self),
247
g_tls_database_real_lookup_certificate_for_handle_async), FALSE);
249
if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (result), error))
252
args = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (result));
253
certificate = args->result;
237
g_return_val_if_fail (g_task_is_valid (result, self), NULL);
239
return g_task_propagate_pointer (G_TASK (result), error);
271
254
g_clear_object (&args->certificate);
272
255
g_clear_object (&args->interaction);
273
g_clear_object (&args->issuer);
274
256
g_slice_free (AsyncLookupCertificateIssuer, args);
278
async_lookup_certificate_issuer_thread (GSimpleAsyncResult *res,
280
GCancellable *cancellable)
260
async_lookup_certificate_issuer_thread (GTask *task,
263
GCancellable *cancellable)
282
AsyncLookupCertificateIssuer *args = g_simple_async_result_get_op_res_gpointer (res);
265
AsyncLookupCertificateIssuer *args = task_data;
266
GTlsCertificate *issuer;
283
267
GError *error = NULL;
285
args->issuer = g_tls_database_lookup_certificate_issuer (G_TLS_DATABASE (object),
293
g_simple_async_result_take_error (res, error);
269
issuer = g_tls_database_lookup_certificate_issuer (G_TLS_DATABASE (object),
276
g_task_return_pointer (task, issuer, g_object_unref);
278
g_task_return_error (task, error);
302
287
GAsyncReadyCallback callback,
303
288
gpointer user_data)
305
GSimpleAsyncResult *res;
306
291
AsyncLookupCertificateIssuer *args;
308
g_return_if_fail (G_IS_TLS_CERTIFICATE (certificate));
309
g_return_if_fail (callback != NULL);
311
293
args = g_slice_new0 (AsyncLookupCertificateIssuer);
312
294
args->certificate = g_object_ref (certificate);
313
295
args->flags = flags;
314
296
args->interaction = interaction ? g_object_ref (interaction) : NULL;
316
res = g_simple_async_result_new (G_OBJECT (self), callback, user_data,
317
g_tls_database_real_lookup_certificate_issuer_async);
318
g_simple_async_result_set_op_res_gpointer (res, args, async_lookup_certificate_issuer_free);
319
g_simple_async_result_run_in_thread (res, async_lookup_certificate_issuer_thread,
320
G_PRIORITY_DEFAULT, cancellable);
321
g_object_unref (res);
298
task = g_task_new (self, cancellable, callback, user_data);
299
g_task_set_task_data (task, args, async_lookup_certificate_issuer_free);
300
g_task_run_in_thread (task, async_lookup_certificate_issuer_thread);
301
g_object_unref (task);
324
static GTlsCertificate*
304
static GTlsCertificate *
325
305
g_tls_database_real_lookup_certificate_issuer_finish (GTlsDatabase *self,
326
306
GAsyncResult *result,
329
AsyncLookupCertificateIssuer *args;
330
GTlsCertificate *issuer;
332
g_return_val_if_fail (G_IS_SIMPLE_ASYNC_RESULT (result), NULL);
333
g_return_val_if_fail (g_simple_async_result_is_valid (result, G_OBJECT (self),
334
g_tls_database_real_lookup_certificate_issuer_async), FALSE);
336
if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (result), error))
339
args = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (result));
340
issuer = args->issuer;
309
g_return_val_if_fail (g_task_is_valid (result, self), NULL);
311
return g_task_propagate_pointer (G_TASK (result), error);
346
315
GByteArray *issuer;
347
316
GTlsInteraction *interaction;
348
317
GTlsDatabaseLookupFlags flags;
350
318
} AsyncLookupCertificatesIssuedBy;
353
321
async_lookup_certificates_issued_by_free (gpointer data)
355
323
AsyncLookupCertificatesIssuedBy *args = data;
358
325
g_byte_array_unref (args->issuer);
359
326
g_clear_object (&args->interaction);
360
for (l = args->results; l; l = g_list_next (l))
361
g_object_unref (l->data);
362
g_list_free (args->results);
363
327
g_slice_free (AsyncLookupCertificatesIssuedBy, args);
367
async_lookup_certificates_issued_by_thread (GSimpleAsyncResult *res,
369
GCancellable *cancellable)
371
AsyncLookupCertificatesIssuedBy *args = g_simple_async_result_get_op_res_gpointer (res);
331
async_lookup_certificates_free_certificates (gpointer data)
335
g_list_free_full (list, g_object_unref);
339
async_lookup_certificates_issued_by_thread (GTask *task,
342
GCancellable *cancellable)
344
AsyncLookupCertificatesIssuedBy *args = task_data;
372
346
GError *error = NULL;
374
args->results = g_tls_database_lookup_certificates_issued_by (G_TLS_DATABASE (object),
382
g_simple_async_result_take_error (res, error);
348
results = g_tls_database_lookup_certificates_issued_by (G_TLS_DATABASE (object),
355
g_task_return_pointer (task, results, async_lookup_certificates_free_certificates);
357
g_task_return_error (task, error);
391
366
GAsyncReadyCallback callback,
392
367
gpointer user_data)
394
GSimpleAsyncResult *res;
395
370
AsyncLookupCertificatesIssuedBy *args;
397
g_return_if_fail (callback);
399
372
args = g_slice_new0 (AsyncLookupCertificatesIssuedBy);
400
373
args->issuer = g_byte_array_ref (issuer);
401
374
args->flags = flags;
402
375
args->interaction = interaction ? g_object_ref (interaction) : NULL;
404
res = g_simple_async_result_new (G_OBJECT (self), callback, user_data,
405
g_tls_database_real_lookup_certificates_issued_by_async);
406
g_simple_async_result_set_op_res_gpointer (res, args, async_lookup_certificates_issued_by_free);
407
g_simple_async_result_run_in_thread (res, async_lookup_certificates_issued_by_thread,
408
G_PRIORITY_DEFAULT, cancellable);
409
g_object_unref (res);
377
task = g_task_new (self, cancellable, callback, user_data);
378
g_task_set_task_data (task, args, async_lookup_certificates_issued_by_free);
379
g_task_run_in_thread (task, async_lookup_certificates_issued_by_thread);
380
g_object_unref (task);
413
384
g_tls_database_real_lookup_certificates_issued_by_finish (GTlsDatabase *self,
414
385
GAsyncResult *result,
417
AsyncLookupCertificatesIssuedBy *args;
420
g_return_val_if_fail (G_IS_SIMPLE_ASYNC_RESULT (result), NULL);
421
g_return_val_if_fail (g_simple_async_result_is_valid (result, G_OBJECT (self),
422
g_tls_database_real_lookup_certificates_issued_by_async), FALSE);
424
if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (result), error))
427
args = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (result));
428
results = args->results;
429
args->results = NULL;
388
g_return_val_if_fail (g_task_is_valid (result, self), NULL);
390
return g_task_propagate_pointer (G_TASK (result), error);