mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-21 07:09:56 +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