void
empathy_tls_certificate_reject_async (EmpathyTLSCertificate *self,
    EmpTLSCertificateRejectReason reason,
    GHashTable *details,
    GAsyncReadyCallback callback,
    gpointer user_data)
{
  GPtrArray *rejections;
  GSimpleAsyncResult *reject_result;

  g_assert (EMPATHY_IS_TLS_CERTIFICATE (self));

  DEBUG ("Rejecting TLS certificate with reason %u", reason);

  rejections = build_rejections_array (reason, details);
  reject_result = g_simple_async_result_new (G_OBJECT (self),
      callback, user_data, empathy_tls_certificate_reject_async);

  emp_cli_authentication_tls_certificate_call_reject (TP_PROXY (self),
      -1, rejections, cert_proxy_reject_cb,
      reject_result, g_object_unref, G_OBJECT (self));

  tp_clear_boxed (EMP_ARRAY_TYPE_TLS_CERTIFICATE_REJECTION_LIST,
      &rejections);
}
static void hev_impathy_tls_verifier_finalize(GObject * obj)
{
	HevImpathyTLSVerifier * self = HEV_IMPATHY_TLS_VERIFIER(obj);
	HevImpathyTLSVerifierPrivate * priv = HEV_IMPATHY_TLS_VERIFIER_GET_PRIVATE(self);

	g_debug("%s:%d[%s]", __FILE__, __LINE__, __FUNCTION__);

	if(priv->cert_chain)
	{
		tp_clear_pointer(&priv->cert_chain, g_ptr_array_unref);
		priv->cert_chain = NULL;
	}

	if(priv->trusted_ca_list)
	{
		tp_clear_pointer(&priv->trusted_ca_list, g_ptr_array_unref);
		priv->trusted_ca_list = NULL;
	}

	if(priv->details)
	{
		tp_clear_boxed(G_TYPE_HASH_TABLE, &priv->details);
		priv->details = NULL;
	}

	if(priv->hostname)
	{
		g_free(priv->hostname);
		priv->hostname = NULL;
	}

	G_OBJECT_CLASS(hev_impathy_tls_verifier_parent_class)->finalize(obj);
}
static void
empathy_tls_dialog_finalize (GObject *object)
{
  EmpathyTLSDialogPriv *priv = GET_PRIV (object);

  tp_clear_boxed (G_TYPE_HASH_TABLE, &priv->details);

  G_OBJECT_CLASS (empathy_tls_dialog_parent_class)->finalize (object);
}
static void
empathy_tls_certificate_finalize (GObject *object)
{
  EmpathyTLSCertificatePriv *priv = GET_PRIV (object);

  DEBUG ("%p", object);

  g_free (priv->cert_type);
  tp_clear_boxed (TP_ARRAY_TYPE_UCHAR_ARRAY_LIST, &priv->cert_data);

  G_OBJECT_CLASS (empathy_tls_certificate_parent_class)->finalize (object);
}
static void
empathy_tls_verifier_finalize (GObject *object)
{
  EmpathyTLSVerifierPriv *priv = GET_PRIV (object);

  DEBUG ("%p", object);

  tp_clear_boxed (G_TYPE_HASH_TABLE, &priv->details);
  g_free (priv->hostname);
  g_strfreev (priv->reference_identities);

  G_OBJECT_CLASS (empathy_tls_verifier_parent_class)->finalize (object);
}
static void hev_impathy_tls_certificate_finalize(GObject * obj)
{
	HevImpathyTLSCertificate * self = HEV_IMPATHY_TLS_CERTIFICATE(obj);
	HevImpathyTLSCertificatePrivate * priv = HEV_IMPATHY_TLS_CERTIFICATE_GET_PRIVATE(self);

	g_debug("%s:%d[%s]", __FILE__, __LINE__, __FUNCTION__);

	if(priv->cert_type)
	{
		g_free(priv->cert_type);
		priv->cert_type = NULL;
	}

	if(priv->cert_data)
	{
		tp_clear_boxed(TP_ARRAY_TYPE_UCHAR_ARRAY_LIST, &priv->cert_data);
		priv->cert_data = NULL;
	}

	G_OBJECT_CLASS(hev_impathy_tls_certificate_parent_class)->finalize(obj);
}
void hev_impathy_tls_certificate_reject_async(HevImpathyTLSCertificate *self,
			TpTLSCertificateRejectReason reason, GHashTable *details,
			GAsyncReadyCallback callback, gpointer user_data)
{
	GPtrArray *rejections = NULL;
	GSimpleAsyncResult *reject_result = NULL;

	g_debug("%s:%d[%s]", __FILE__, __LINE__, __FUNCTION__);

	g_return_if_fail(HEV_IS_IMPATHY_TLS_CERTIFICATE(self));

	rejections = build_rejections_array(reason, details);
	reject_result = g_simple_async_result_new(G_OBJECT(self),
				callback, user_data,
				hev_impathy_tls_certificate_reject_async);

	hev_cli_authentication_tls_certificate_call_reject(TP_PROXY(self),
				-1, rejections, cert_proxy_reject_handler,
				reject_result, g_object_unref, G_OBJECT(self));
	
	tp_clear_boxed(TP_ARRAY_TYPE_TLS_CERTIFICATE_REJECTION_LIST,
				&rejections);
}