+
+ public 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,
+ int force_flat_file_store)
+ {
+ IdCard idcard = new IdCard ();
+
+ idcard.display_name = display_name;
+ idcard.username = user_name;
+ idcard.password = password;
+ if ((password != null) && (password != ""))
+ idcard.store_password = true;
+ 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)
+ {
+ /* workaround Centos vala array property bug: use temp array */
+ Rule[] rules = new Rule[rules_patterns.length];
+
+ for (int i=0; i<rules.length; i++)
+ {
+ rules[i].pattern = rules_patterns[i];
+ rules[i].always_confirm = rules_always_confirm[i];
+ }
+ idcard.rules = rules;
+ }
+
+ return parent_app.add_identity (idcard, force_flat_file_store!=0);
+ }
+
+
+ public int install_from_file (string file_name)
+ {
+ var webp = new WebProvisioning.Parser (file_name);
+
+ webp.parse();
+ bool result = false;
+ int installed_cards = 0;
+ foreach (IdCard card in WebProvisioning.cards)
+ {
+ string[] rules_patterns = {};
+ string[] rules_always_confirm = {};
+
+ if (card.rules.length > 0)
+ {
+ int i = 0;
+ rules_patterns = new string[card.rules.length];
+ rules_always_confirm = new string[card.rules.length];
+ foreach (Rule r in card.rules)
+ {
+ rules_patterns[i] = r.pattern;
+ rules_always_confirm[i] = r.always_confirm;
+ i++;
+ }
+ }
+
+ result = install_id_card (card.display_name,
+ card.username,
+ card.password,
+ card.issuer,
+ rules_patterns,
+ rules_always_confirm,
+ card.services,
+ card.trust_anchor.ca_cert,
+ card.trust_anchor.subject,
+ card.trust_anchor.subject_alt,
+ card.trust_anchor.server_cert,
+ 0);
+ if (result) {
+ installed_cards++;
+ }
+ }
+ return installed_cards;
+ }