public boolean importKeyStore( String filePath, String password, boolean overWriteExisting, boolean deleteImportedFile) throws IOException { SimplePropertiesStore storeNew = null; File fileOtrKeystore = new File(filePath); if (fileOtrKeystore.getName().endsWith(".ofcaes")) { // TODO implement GUI to get password via QR Code, and handle wrong password storeNew = new SimplePropertiesStore(fileOtrKeystore, password, true); deleteImportedFile = true; // once its imported, its no longer needed } else { return false; } Enumeration<Object> enumKeys = storeNew.getKeys(); String key; while (enumKeys.hasMoreElements()) { key = (String) enumKeys.nextElement(); boolean hasKey = store.hasProperty(key); if (!hasKey || overWriteExisting) store.setProperty(key, storeNew.getPropertyString(key)); } store.save(); if (deleteImportedFile) fileOtrKeystore.delete(); return true; }
public String[] getRemoteFingerprints(String userId) { Enumeration<Object> keys = store.getKeys(); ArrayList<String> results = new ArrayList<String>(); while (keys.hasMoreElements()) { String key = (String) keys.nextElement(); if (key.startsWith(userId + '/') && key.endsWith(".fingerprint")) { byte[] fingerprint = this.store.getPropertyHexBytes(userId + ".fingerprint"); if (fingerprint != null) { // If we have a fingerprint stashed, assume it is correct. results.add(new String(Hex.encode(fingerprint, 0, fingerprint.length))); } } } String[] resultsString = new String[results.size()]; return results.toArray(resultsString); }