mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-11 18:29:05 +01:00
PacketWriterFactory.
This commit is contained in:
12
api/net/sf/briar/api/transport/PacketWriterFactory.java
Normal file
12
api/net/sf/briar/api/transport/PacketWriterFactory.java
Normal 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);
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
13
components/net/sf/briar/transport/TransportModule.java
Normal file
13
components/net/sf/briar/transport/TransportModule.java
Normal 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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user