#if IPC_DBUS [DBus (name = "org.janet.Moonshot")] public class MoonshotServer : Object { private MainWindow main_window; public MoonshotServer (Gtk.Window window) { this.main_window = (MainWindow) window; } public async bool get_identity (string nai, string password, string service, out string nai_out, out string password_out, out string server_certificate_hash, out string ca_certificate, out string subject_name_constraint, out string subject_alt_name_constraint) { var request = new IdentityRequest (main_window, nai, password, service); request.set_callback ((IdentityRequest) => get_identity.callback()); request.execute (); yield; nai_out = ""; password_out = ""; server_certificate_hash = ""; ca_certificate = ""; subject_name_constraint = ""; subject_alt_name_constraint = ""; var id_card = request.id_card; if (id_card != null) { nai_out = id_card.nai; password_out = id_card.password; server_certificate_hash = "certificate"; // User should have been prompted if there was no p/w. return_if_fail (nai_out != null); return_if_fail (password_out != null); return true; } return false; } public async bool get_default_identity (out string nai_out, out string password_out, out string server_certificate_hash, out string ca_certificate, out string subject_name_constraint, out string subject_alt_name_constraint) { var request = new IdentityRequest.default (main_window); request.set_callback ((IdentityRequest) => get_default_identity.callback()); request.execute (); yield; nai_out = ""; password_out = ""; server_certificate_hash = ""; ca_certificate = ""; subject_name_constraint = ""; subject_alt_name_constraint = ""; if (request.id_card != null) { nai_out = request.id_card.nai; password_out = request.id_card.password; server_certificate_hash = "certificate"; // User should have been prompted if there was no p/w. return_val_if_fail (nai_out != null, false); return_val_if_fail (password_out != null, false); return true; } return false; } public async bool install_id_card (string display_name, string user_name, string password, string realm, string[] rules_patterns, string[] rules_always_confirm, string[] services, string ca_cert, string subject, string subject_alt, string server_cert) { IdCard idcard = new IdCard (); idcard.display_name = display_name; idcard.username = user_name; idcard.password = password; idcard.issuer = realm; idcard.services = services; idcard.trust_anchor.ca_cert = ca_cert; idcard.trust_anchor.subject = subject; idcard.trust_anchor.subject_alt = subject_alt; idcard.trust_anchor.server_cert = server_cert; if (rules_patterns.length == rules_always_confirm.length) { idcard.rules = new Rule[rules_patterns.length]; for (int i=0; i