コード例 #1
0
  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;
  }
コード例 #2
0
  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);
  }