comparison libpurple/certificate.c @ 18942:02102eccc4be

- purple_certificate_verify now takes a Verifier argument, creates its own VerificationRequest, amd may callback immediately
author William Ehlhardt <williamehlhardt@gmail.com>
date Sat, 23 Jun 2007 00:04:49 +0000
parents 425f494bd1ec
children c519ff185569
comparison
equal deleted inserted replaced
18941:425f494bd1ec 18942:02102eccc4be
35 static GList *cert_schemes = NULL; 35 static GList *cert_schemes = NULL;
36 /** List of registered Verifiers */ 36 /** List of registered Verifiers */
37 static GList *cert_verifiers = NULL; 37 static GList *cert_verifiers = NULL;
38 38
39 void 39 void
40 purple_certificate_verify (PurpleCertificateVerificationRequest *vrq, 40 purple_certificate_verify (PurpleCertificateVerifier *verifier,
41 gchar *scheme_name, gchar *ver_name, 41 const gchar *subject_name, GList *cert_chain,
42 gchar *subject_name, GList *cert_chain,
43 PurpleCertificateVerifiedCallback cb, 42 PurpleCertificateVerifiedCallback cb,
44 gpointer cb_data) 43 gpointer cb_data)
45 { 44 {
45 PurpleCertificateVerificationRequest *vrq;
46 PurpleCertificateScheme *scheme; 46 PurpleCertificateScheme *scheme;
47 PurpleCertificateVerifier *verifier;
48 47
49 g_return_val_if_fail(ver_name != NULL, NULL); 48 g_return_if_fail(subject_name != NULL);
50 g_return_val_if_fail(subject_name != NULL, NULL);
51 /* If you don't have a cert to check, why are you requesting that it 49 /* If you don't have a cert to check, why are you requesting that it
52 be verified? */ 50 be verified? */
53 g_return_val_if_fail(cert_chain != NULL, NULL); 51 g_return_if_fail(cert_chain != NULL);
54 g_return_val_if_fail(cb != NULL, NULL); 52 g_return_if_fail(cb != NULL);
55 53
56 /* Locate the verifier, first */ 54 /* Look up the CertificateScheme */
55 scheme = purple_certificate_find_scheme(verifier->scheme_name);
56 g_return_if_fail(scheme);
57 57
58 /* Construct and fill in the request fields */ 58 /* Construct and fill in the request fields */
59 vrq = g_new(PurpleCertificateVerificationRequest, 1); 59 vrq = g_new(PurpleCertificateVerificationRequest, 1);
60 vrq->verifier = verifier;
61 vrq->scheme = scheme;
62 vrq->subject_name = g_strdup(subject_name);
60 vrq->cert_chain = cert_chain; 63 vrq->cert_chain = cert_chain;
61 vrq->cb = cb; 64 vrq->cb = cb;
62 vrq->cb_data = cb_data; 65 vrq->cb_data = cb_data;
63 vrq->subject_name = g_strdup(subject_name); 66
67 /* Initiate verification */
68 (verifier->start_verification)(vrq);
64 } 69 }
65 70
66 PurpleCertificateScheme * 71 PurpleCertificateScheme *
67 purple_certificate_find_scheme(const gchar *name) 72 purple_certificate_find_scheme(const gchar *name)
68 { 73 {