+ List<GroupInfo> groups = m.getGroups();
+ boolean detailed = ns.getBoolean("detailed");
+
+ for (GroupInfo group : groups) {
+ printGroup(group, detailed);
+ }
+ break;
+ case "listIdentities":
+ if (dBusConn != null) {
+ System.err.println("listIdentities is not yet implemented via dbus");
+ return 1;
+ }
+ if (!m.isRegistered()) {
+ System.err.println("User is not registered.");
+ return 1;
+ }
+ if (ns.get("number") == null) {
+ for (Map.Entry<String, List<JsonIdentityKeyStore.Identity>> keys : m.getIdentities().entrySet()) {
+ for (JsonIdentityKeyStore.Identity id : keys.getValue()) {
+ printIdentityFingerprint(m, keys.getKey(), id);
+ }
+ }
+ } else {
+ String number = ns.getString("number");
+ for (JsonIdentityKeyStore.Identity id : m.getIdentities(number)) {
+ printIdentityFingerprint(m, number, id);
+ }
+ }
+ break;
+ case "trust":
+ if (dBusConn != null) {
+ System.err.println("trust is not yet implemented via dbus");
+ return 1;
+ }
+ if (!m.isRegistered()) {
+ System.err.println("User is not registered.");
+ return 1;
+ }
+ String number = ns.getString("number");
+ if (ns.getBoolean("trust_all_known_keys")) {
+ boolean res = m.trustIdentityAllKeys(number);
+ if (!res) {
+ System.err.println("Failed to set the trust for this number, make sure the number is correct.");
+ return 1;
+ }
+ } else {
+ String fingerprint = ns.getString("verified_fingerprint");
+ if (fingerprint != null) {
+ fingerprint = fingerprint.replaceAll(" ", "");
+ if (fingerprint.length() == 66) {
+ byte[] fingerprintBytes;
+ try {
+ fingerprintBytes = Hex.toByteArray(fingerprint.toLowerCase(Locale.ROOT));
+ } catch (Exception e) {
+ System.err.println("Failed to parse the fingerprint, make sure the fingerprint is a correctly encoded hex string without additional characters.");
+ return 1;
+ }
+ boolean res = m.trustIdentityVerified(number, fingerprintBytes);
+ if (!res) {
+ System.err.println("Failed to set the trust for the fingerprint of this number, make sure the number and the fingerprint are correct.");
+ return 1;
+ }
+ } else if (fingerprint.length() == 60) {
+ boolean res = m.trustIdentityVerifiedSafetyNumber(number, fingerprint);
+ if (!res) {
+ System.err.println("Failed to set the trust for the safety number of this phone number, make sure the phone number and the safety number are correct.");
+ return 1;
+ }
+ } else {
+ System.err.println("Fingerprint has invalid format, either specify the old hex fingerprint or the new safety number");
+ return 1;
+ }
+ } else {
+ System.err.println("You need to specify the fingerprint you have verified with -v FINGERPRINT");
+ return 1;
+ }
+ }