From 3e913118f25b6434319a5e27e79f0a0cc1a5159e Mon Sep 17 00:00:00 2001 From: akwizgran <akwizgran@users.sourceforge.net> Date: Tue, 9 Aug 2011 18:23:27 +0100 Subject: [PATCH] PacketWriterFactory. --- .../api/transport/PacketWriterFactory.java | 12 ++++++ .../transport/PacketWriterFactoryImpl.java | 38 +++++++++++++++++++ .../sf/briar/transport/TransportModule.java | 13 +++++++ 3 files changed, 63 insertions(+) create mode 100644 api/net/sf/briar/api/transport/PacketWriterFactory.java create mode 100644 components/net/sf/briar/transport/PacketWriterFactoryImpl.java create mode 100644 components/net/sf/briar/transport/TransportModule.java diff --git a/api/net/sf/briar/api/transport/PacketWriterFactory.java b/api/net/sf/briar/api/transport/PacketWriterFactory.java new file mode 100644 index 0000000000..fdb79b0ebd --- /dev/null +++ b/api/net/sf/briar/api/transport/PacketWriterFactory.java @@ -0,0 +1,12 @@ +package net.sf.briar.api.transport; + +import java.io.OutputStream; + +import javax.crypto.SecretKey; + +public interface PacketWriterFactory { + + PacketWriter createPacketWriter(OutputStream out, int transportIdentifier, + long connectionNumber, SecretKey macKey, SecretKey tagKey, + SecretKey packetKey); +} diff --git a/components/net/sf/briar/transport/PacketWriterFactoryImpl.java b/components/net/sf/briar/transport/PacketWriterFactoryImpl.java new file mode 100644 index 0000000000..92ea6ded20 --- /dev/null +++ b/components/net/sf/briar/transport/PacketWriterFactoryImpl.java @@ -0,0 +1,38 @@ +package net.sf.briar.transport; + +import java.io.OutputStream; +import java.security.InvalidKeyException; + +import javax.crypto.Mac; +import javax.crypto.SecretKey; + +import net.sf.briar.api.crypto.CryptoComponent; +import net.sf.briar.api.transport.PacketWriter; +import net.sf.briar.api.transport.PacketWriterFactory; + +import com.google.inject.Inject; + +class PacketWriterFactoryImpl implements PacketWriterFactory { + + private final CryptoComponent crypto; + + @Inject + public PacketWriterFactoryImpl(CryptoComponent crypto) { + this.crypto = crypto; + } + + public PacketWriter createPacketWriter(OutputStream out, + int transportIdentifier, long connectionNumber, SecretKey macKey, + SecretKey tagKey, SecretKey packetKey) { + Mac mac = crypto.getMac(); + try { + mac.init(macKey); + } catch(InvalidKeyException e) { + throw new IllegalArgumentException(e); + } + PacketEncrypter e = new PacketEncrypterImpl(out, crypto.getTagCipher(), + crypto.getPacketCipher(), tagKey, packetKey); + return new PacketWriterImpl(e, mac, transportIdentifier, + connectionNumber); + } +} diff --git a/components/net/sf/briar/transport/TransportModule.java b/components/net/sf/briar/transport/TransportModule.java new file mode 100644 index 0000000000..8a138334df --- /dev/null +++ b/components/net/sf/briar/transport/TransportModule.java @@ -0,0 +1,13 @@ +package net.sf.briar.transport; + +import net.sf.briar.api.transport.PacketWriter; + +import com.google.inject.AbstractModule; + +public class TransportModule extends AbstractModule { + + @Override + protected void configure() { + bind(PacketWriter.class).to(PacketWriterImpl.class); + } +} -- GitLab