gboolean gkd_pkcs11_startup_ssh (void) { GIOChannel *channel; const gchar *base_dir; int sock; base_dir = gkd_util_get_master_directory (); g_return_val_if_fail (base_dir, FALSE); sock = gkd_ssh_agent_startup (base_dir); if (sock == -1) return FALSE; channel = g_io_channel_unix_new (sock); g_io_add_watch (channel, G_IO_IN | G_IO_HUP, accept_ssh_client, NULL); g_io_channel_unref (channel); /* gkm-ssh-agent sets the environment variable */ gkd_util_push_environment ("SSH_AUTH_SOCK", g_getenv ("SSH_AUTH_SOCK")); egg_cleanup_register (pkcs11_ssh_cleanup, NULL); return TRUE; }
gboolean gkd_daemon_startup_ssh (void) { const gchar *base_dir; GTlsInteraction *interaction; GkdSshAgentPreload *preload; GkdSshAgentService *service; base_dir = gkd_util_get_master_directory (); g_return_val_if_fail (base_dir, FALSE); interaction = gkd_ssh_agent_interaction_new (NULL); preload = gkd_ssh_agent_preload_new ("~/.ssh"); service = gkd_ssh_agent_service_new (base_dir, interaction, preload); g_object_unref (interaction); g_object_unref (preload); if (!gkd_ssh_agent_service_start (service)) return FALSE; /* ssh-agent sets the environment variable */ gkd_util_push_environment ("SSH_AUTH_SOCK", g_getenv ("SSH_AUTH_SOCK")); egg_cleanup_register (pkcs11_ssh_cleanup, service); return TRUE; }