static void writeFingerprintsAndDates(Map<OpenPgpV4Fingerprint, Date> data, File destination) throws IOException { if (data == null || data.isEmpty()) { FileUtils.maybeDeleteFileOrThrow(destination); return; } FileUtils.maybeCreateFileWithParentDirectories(destination); BufferedWriter writer = null; try { OutputStream outputStream = FileUtils.prepareFileOutputStream(destination); OutputStreamWriter osw = new OutputStreamWriter(outputStream, Util.UTF8); writer = new BufferedWriter(osw); for (OpenPgpV4Fingerprint fingerprint : data.keySet()) { Date date = data.get(fingerprint); String line = fingerprint.toString() + " " + (date != null ? XmppDateTime.formatXEP0082Date(date) : XmppDateTime.formatXEP0082Date(new Date())); writer.write(line); writer.newLine(); } } finally { CloseableUtil.maybeClose(writer, LOGGER); } }
@Override protected void writeTrust(BareJid owner, OpenPgpV4Fingerprint fingerprint, Trust trust) throws IOException { File file = getTrustPath(owner, fingerprint); if (trust == null || trust == Trust.undecided) { FileUtils.maybeDeleteFileOrThrow(file); } FileUtils.maybeCreateFileWithParentDirectories(file); BufferedWriter writer = null; try { OutputStream outputStream = FileUtils.prepareFileOutputStream(file); OutputStreamWriter osw = new OutputStreamWriter(outputStream, Util.UTF8); writer = new BufferedWriter(osw); writer.write(trust.toString()); } finally { CloseableUtil.maybeClose(writer, LOGGER); } }
@Override public void writePublicKeysOf(BareJid owner, PGPPublicKeyRingCollection publicKeys) throws IOException { File file = getPublicKeyRingPath(owner); if (publicKeys == null) { FileUtils.maybeDeleteFileOrThrow(file); return; } OutputStream outputStream = null; try { outputStream = FileUtils.prepareFileOutputStream(file); publicKeys.encode(outputStream); } finally { CloseableUtil.maybeClose(outputStream, LOGGER); } }
@Override public void writeSecretKeysOf(BareJid owner, PGPSecretKeyRingCollection secretKeys) throws IOException { File file = getSecretKeyRingPath(owner); if (secretKeys == null) { FileUtils.maybeDeleteFileOrThrow(file); return; } OutputStream outputStream = null; try { outputStream = FileUtils.prepareFileOutputStream(file); secretKeys.encode(outputStream); } finally { CloseableUtil.maybeClose(outputStream, LOGGER); } }