Mercurial > pidgin
diff 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 |
line wrap: on
line diff
--- a/libpurple/certificate.c Fri Jun 22 23:30:26 2007 +0000 +++ b/libpurple/certificate.c Sat Jun 23 00:04:49 2007 +0000 @@ -37,30 +37,35 @@ static GList *cert_verifiers = NULL; void -purple_certificate_verify (PurpleCertificateVerificationRequest *vrq, - gchar *scheme_name, gchar *ver_name, - gchar *subject_name, GList *cert_chain, +purple_certificate_verify (PurpleCertificateVerifier *verifier, + const gchar *subject_name, GList *cert_chain, PurpleCertificateVerifiedCallback cb, gpointer cb_data) { + PurpleCertificateVerificationRequest *vrq; PurpleCertificateScheme *scheme; - PurpleCertificateVerifier *verifier; - g_return_val_if_fail(ver_name != NULL, NULL); - g_return_val_if_fail(subject_name != NULL, NULL); + g_return_if_fail(subject_name != NULL); /* If you don't have a cert to check, why are you requesting that it be verified? */ - g_return_val_if_fail(cert_chain != NULL, NULL); - g_return_val_if_fail(cb != NULL, NULL); + g_return_if_fail(cert_chain != NULL); + g_return_if_fail(cb != NULL); - /* Locate the verifier, first */ + /* Look up the CertificateScheme */ + scheme = purple_certificate_find_scheme(verifier->scheme_name); + g_return_if_fail(scheme); /* Construct and fill in the request fields */ vrq = g_new(PurpleCertificateVerificationRequest, 1); + vrq->verifier = verifier; + vrq->scheme = scheme; + vrq->subject_name = g_strdup(subject_name); vrq->cert_chain = cert_chain; vrq->cb = cb; vrq->cb_data = cb_data; - vrq->subject_name = g_strdup(subject_name); + + /* Initiate verification */ + (verifier->start_verification)(vrq); } PurpleCertificateScheme *
