From: David ‘Bombe’ Roden Date: Thu, 19 Mar 2009 22:40:09 +0000 (+0100) Subject: Add generateKeyPair(). X-Git-Tag: v0.1.1~75 X-Git-Url: https://git.pterodactylus.net/?p=jFCPlib.git;a=commitdiff_plain;h=af286d4d2254fe092f2f5170183575a89b95f307 Add generateKeyPair(). --- diff --git a/src/net/pterodactylus/fcp/highlevel/FcpClient.java b/src/net/pterodactylus/fcp/highlevel/FcpClient.java index d33105c..2bdcf73 100644 --- a/src/net/pterodactylus/fcp/highlevel/FcpClient.java +++ b/src/net/pterodactylus/fcp/highlevel/FcpClient.java @@ -36,6 +36,7 @@ import net.pterodactylus.fcp.EndListPeers; import net.pterodactylus.fcp.FcpAdapter; import net.pterodactylus.fcp.FcpConnection; import net.pterodactylus.fcp.FcpListener; +import net.pterodactylus.fcp.GenerateSSK; import net.pterodactylus.fcp.ListPeerNotes; import net.pterodactylus.fcp.ListPeers; import net.pterodactylus.fcp.ModifyPeer; @@ -47,6 +48,7 @@ import net.pterodactylus.fcp.PeerNote; import net.pterodactylus.fcp.PeerRemoved; import net.pterodactylus.fcp.ProtocolError; import net.pterodactylus.fcp.RemovePeer; +import net.pterodactylus.fcp.SSKKeypair; import net.pterodactylus.util.thread.ObjectWrapper; /** @@ -493,6 +495,44 @@ public class FcpClient { }.execute(); } + // + // KEY GENERATION + // + + /** + * Generates a new SSK key pair. + * + * @return The generated key pair + * @throws IOException + * if an I/O error occurs + * @throws FcpException + * if an FCP error occurs + */ + public SSKKeypair generateKeyPair() throws IOException, FcpException { + final ObjectWrapper sskKeypairWrapper = new ObjectWrapper(); + new ExtendedFcpAdapter() { + + /** + * {@inheritDoc} + */ + @Override + @SuppressWarnings("synthetic-access") + public void run() throws IOException { + fcpConnection.sendMessage(new GenerateSSK()); + } + + /** + * {@inheritDoc} + */ + @Override + public void receivedSSKKeypair(FcpConnection fcpConnection, SSKKeypair sskKeypair) { + sskKeypairWrapper.set(sskKeypair); + completionLatch.countDown(); + } + }.execute(); + return sskKeypairWrapper.get(); + } + /** * Implementation of an {@link FcpListener} that can store an * {@link FcpException} and wait for the arrival of a certain command.