diff options
author | Cosimo Cecchi <cosimo.cecchi@collabora.co.uk> | 2010-08-09 18:27:47 +0800 |
---|---|---|
committer | Cosimo Cecchi <cosimoc@gnome.org> | 2010-08-13 22:22:22 +0800 |
commit | 2f63c0828065d86239a6ff6ebbb8b07ddc929046 (patch) | |
tree | c5debed3a230136c17064599e87f1279c69cf3a6 /libempathy | |
parent | ce6b6bc1f8662ff24ec44fb76e869394b3f64328 (diff) | |
download | gsoc2013-empathy-2f63c0828065d86239a6ff6ebbb8b07ddc929046.tar gsoc2013-empathy-2f63c0828065d86239a6ff6ebbb8b07ddc929046.tar.gz gsoc2013-empathy-2f63c0828065d86239a6ff6ebbb8b07ddc929046.tar.bz2 gsoc2013-empathy-2f63c0828065d86239a6ff6ebbb8b07ddc929046.tar.lz gsoc2013-empathy-2f63c0828065d86239a6ff6ebbb8b07ddc929046.tar.xz gsoc2013-empathy-2f63c0828065d86239a6ff6ebbb8b07ddc929046.tar.zst gsoc2013-empathy-2f63c0828065d86239a6ff6ebbb8b07ddc929046.zip |
Update for the new tp-spec API
Diffstat (limited to 'libempathy')
-rw-r--r-- | libempathy/empathy-tls-certificate.c | 70 | ||||
-rw-r--r-- | libempathy/empathy-tls-certificate.h | 3 |
2 files changed, 66 insertions, 7 deletions
diff --git a/libempathy/empathy-tls-certificate.c b/libempathy/empathy-tls-certificate.c index 84103fc29..01ae25cd6 100644 --- a/libempathy/empathy-tls-certificate.c +++ b/libempathy/empathy-tls-certificate.c @@ -295,16 +295,16 @@ empathy_tls_certificate_class_init (EmpathyTLSCertificateClass *klass) pspec = g_param_spec_uint ("state", "State", "The state of this certificate.", - EMP_TLS_CERTIFICATE_STATE_NONE, NUM_EMP_TLS_CERTIFICATE_STATES -1, - EMP_TLS_CERTIFICATE_STATE_NONE, + EMP_TLS_CERTIFICATE_STATE_PENDING, NUM_EMP_TLS_CERTIFICATE_STATES -1, + EMP_TLS_CERTIFICATE_STATE_PENDING, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (oclass, PROP_STATE, pspec); pspec = g_param_spec_uint ("reject-reason", "Reject reason", "The reason why this certificate was rejected.", - EMP_TLS_CERTIFICATE_REJECT_REASON_NONE, + EMP_TLS_CERTIFICATE_REJECT_REASON_UNKNOWN, NUM_EMP_TLS_CERTIFICATE_REJECT_REASONS -1, - EMP_TLS_CERTIFICATE_REJECT_REASON_NONE, + EMP_TLS_CERTIFICATE_REJECT_REASON_UNKNOWN, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (oclass, PROP_REJECT_REASON, pspec); } @@ -333,6 +333,54 @@ cert_proxy_reject_cb (TpProxy *proxy, DEBUG ("Error was %s", error->message); } +static const gchar * +reject_reason_get_dbus_error (EmpTLSCertificateRejectReason reason) +{ + const gchar *retval = NULL; + + switch (reason) + { + case EMP_TLS_CERTIFICATE_REJECT_REASON_UNKNOWN: + retval = tp_error_get_dbus_name (TP_ERROR_CERT_INVALID); + break; + case EMP_TLS_CERTIFICATE_REJECT_REASON_UNTRUSTED: + retval = tp_error_get_dbus_name (TP_ERROR_CERT_UNTRUSTED); + break; + case EMP_TLS_CERTIFICATE_REJECT_REASON_EXPIRED: + retval = tp_error_get_dbus_name (TP_ERROR_CERT_EXPIRED); + break; + case EMP_TLS_CERTIFICATE_REJECT_REASON_NOT_ACTIVATED: + retval = tp_error_get_dbus_name (TP_ERROR_CERT_NOT_ACTIVATED); + break; + case EMP_TLS_CERTIFICATE_REJECT_REASON_FINGERPRINT_MISMATCH: + retval = tp_error_get_dbus_name (TP_ERROR_CERT_FINGERPRINT_MISMATCH); + break; + case EMP_TLS_CERTIFICATE_REJECT_REASON_HOSTNAME_MISMATCH: + retval = tp_error_get_dbus_name (TP_ERROR_CERT_HOSTNAME_MISMATCH); + break; + case EMP_TLS_CERTIFICATE_REJECT_REASON_SELF_SIGNED: + retval = tp_error_get_dbus_name (TP_ERROR_CERT_SELF_SIGNED); + break; + case EMP_TLS_CERTIFICATE_REJECT_REASON_REVOKED: + /* FIXME */ + retval = "org.freedesktop.Telepathy.Error.Cert.Revoked"; + break; + case EMP_TLS_CERTIFICATE_REJECT_REASON_INSECURE: + /* FIXME */ + retval = "org.freedesktop.Telepathy.Error.Cert.Insecure"; + break; + case EMP_TLS_CERTIFICATE_REJECT_REASON_LIMIT_EXCEEDED: + /* FIXME */ + retval = "org.freedesktop.Telepathy.Error.Cert.LimitExceeded"; + break; + default: + g_assert_not_reached (); + break; + } + + return retval; +} + void empathy_tls_certificate_new_async (const gchar *bus_name, const gchar *object_path, @@ -380,14 +428,24 @@ empathy_tls_certificate_accept (EmpathyTLSCertificate *self) void empathy_tls_certificate_reject (EmpathyTLSCertificate *self, - EmpTLSCertificateRejectReason reason) + EmpTLSCertificateRejectReason reason, + gboolean user_requested) { + GHashTable *details; + const gchar *dbus_error; EmpathyTLSCertificatePriv *priv = GET_PRIV (self); g_assert (EMPATHY_IS_TLS_CERTIFICATE (self)); DEBUG ("Rejecting TLS certificate with reason %u", reason); + dbus_error = reject_reason_get_dbus_error (reason); + details = tp_asv_new ("user-requested", G_TYPE_BOOLEAN, user_requested, + NULL); + emp_cli_authentication_tls_certificate_call_reject (priv->proxy, - -1, reason, cert_proxy_reject_cb, NULL, NULL, G_OBJECT (self)); + -1, reason, dbus_error, details, + cert_proxy_reject_cb, NULL, NULL, G_OBJECT (self)); + + g_hash_table_unref (details); } diff --git a/libempathy/empathy-tls-certificate.h b/libempathy/empathy-tls-certificate.h index 473134044..c79c26abd 100644 --- a/libempathy/empathy-tls-certificate.h +++ b/libempathy/empathy-tls-certificate.h @@ -68,7 +68,8 @@ EmpathyTLSCertificate * empathy_tls_certificate_new_finish (GAsyncResult * res, void empathy_tls_certificate_accept (EmpathyTLSCertificate *self); void empathy_tls_certificate_reject (EmpathyTLSCertificate *self, - EmpTLSCertificateRejectReason reason); + EmpTLSCertificateRejectReason reason, + gboolean user_requested); G_END_DECLS |