PacketWriterFactory.

This commit is contained in:
akwizgran
2011-08-09 18:23:27 +01:00
parent f3f0c223c4
commit 3e913118f2
3 changed files with 63 additions and 0 deletions

View File

@@ -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);
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}