From 700ea2b387a37ea760b434ea06e9afca8401c9c1 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Fri, 5 Feb 2021 17:02:28 -0300 Subject: [PATCH] Add support for logs to StreamReader and StreamWriter Shamelessly stolen from d9b4c013 --- .../api/crypto/StreamDecrypterFactory.java | 6 ++++++ .../api/crypto/StreamEncrypterFactory.java | 8 +++++++- .../api/transport/StreamReaderFactory.java | 7 ++++++- .../api/transport/StreamWriterFactory.java | 12 +++++++----- .../crypto/StreamDecrypterFactoryImpl.java | 6 ++++++ .../crypto/StreamEncrypterFactoryImpl.java | 8 +++++++- .../transport/StreamReaderFactoryImpl.java | 16 +++++++++++----- .../transport/StreamWriterFactoryImpl.java | 18 ++++++++++++------ 8 files changed, 62 insertions(+), 19 deletions(-) diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/StreamDecrypterFactory.java b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/StreamDecrypterFactory.java index beecd1789..47e97ae00 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/StreamDecrypterFactory.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/StreamDecrypterFactory.java @@ -19,4 +19,10 @@ public interface StreamDecrypterFactory { */ StreamDecrypter createContactExchangeStreamDecrypter(InputStream in, SecretKey headerKey); + + /** + * Creates a {@link StreamDecrypter} for decrypting a log stream. + */ + StreamDecrypter createLogStreamDecrypter(InputStream in, + SecretKey headerKey); } diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/StreamEncrypterFactory.java b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/StreamEncrypterFactory.java index 03ad5e143..4b68c0441 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/StreamEncrypterFactory.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/StreamEncrypterFactory.java @@ -17,6 +17,12 @@ public interface StreamEncrypterFactory { * Creates a {@link StreamEncrypter} for encrypting a contact exchange * stream. */ - StreamEncrypter createContactExchangeStreamDecrypter(OutputStream out, + StreamEncrypter createContactExchangeStreamEncrypter(OutputStream out, + SecretKey headerKey); + + /** + * Creates a {@link StreamEncrypter} for encrypting a log stream. + */ + StreamEncrypter createLogStreamEncrypter(OutputStream out, SecretKey headerKey); } diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/transport/StreamReaderFactory.java b/bramble-api/src/main/java/org/briarproject/bramble/api/transport/StreamReaderFactory.java index 87823679b..dc60242f8 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/transport/StreamReaderFactory.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/transport/StreamReaderFactory.java @@ -16,8 +16,13 @@ public interface StreamReaderFactory { /** * Creates an {@link InputStream InputStream} for reading from a contact - * exchangestream. + * exchange stream. */ InputStream createContactExchangeStreamReader(InputStream in, SecretKey headerKey); + + /** + * Creates an {@link InputStream} for reading from a log stream. + */ + InputStream createLogStreamReader(InputStream in, SecretKey headerKey); } diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/transport/StreamWriterFactory.java b/bramble-api/src/main/java/org/briarproject/bramble/api/transport/StreamWriterFactory.java index 1ddde0c0a..6090a7d14 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/transport/StreamWriterFactory.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/transport/StreamWriterFactory.java @@ -7,17 +7,19 @@ import java.io.OutputStream; @NotNullByDefault public interface StreamWriterFactory { - /** - * Creates an {@link OutputStream OutputStream} for writing to a - * transport stream + * Creates a {@link StreamWriter} for writing to a transport stream. */ StreamWriter createStreamWriter(OutputStream out, StreamContext ctx); /** - * Creates an {@link OutputStream OutputStream} for writing to a contact - * exchange stream. + * Creates a {@link StreamWriter} for writing to a contact exchange stream. */ StreamWriter createContactExchangeStreamWriter(OutputStream out, SecretKey headerKey); + + /** + * Creates a {@link StreamWriter} for writing to a log stream. + */ + StreamWriter createLogStreamWriter(OutputStream out, SecretKey headerKey); } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/crypto/StreamDecrypterFactoryImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/crypto/StreamDecrypterFactoryImpl.java index aac3e504e..093136662 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/crypto/StreamDecrypterFactoryImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/crypto/StreamDecrypterFactoryImpl.java @@ -36,4 +36,10 @@ class StreamDecrypterFactoryImpl implements StreamDecrypterFactory { SecretKey headerKey) { return new StreamDecrypterImpl(in, cipherProvider.get(), 0, headerKey); } + + @Override + public StreamDecrypter createLogStreamDecrypter(InputStream in, + SecretKey headerKey) { + return createContactExchangeStreamDecrypter(in, headerKey); + } } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/crypto/StreamEncrypterFactoryImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/crypto/StreamEncrypterFactoryImpl.java index 984d5e826..ae8db9fb7 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/crypto/StreamEncrypterFactoryImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/crypto/StreamEncrypterFactoryImpl.java @@ -51,7 +51,7 @@ class StreamEncrypterFactoryImpl implements StreamEncrypterFactory { } @Override - public StreamEncrypter createContactExchangeStreamDecrypter( + public StreamEncrypter createContactExchangeStreamEncrypter( OutputStream out, SecretKey headerKey) { AuthenticatedCipher cipher = cipherProvider.get(); byte[] streamHeaderNonce = new byte[STREAM_HEADER_NONCE_LENGTH]; @@ -60,4 +60,10 @@ class StreamEncrypterFactoryImpl implements StreamEncrypterFactory { return new StreamEncrypterImpl(out, cipher, 0, null, streamHeaderNonce, headerKey, frameKey); } + + @Override + public StreamEncrypter createLogStreamEncrypter(OutputStream out, + SecretKey headerKey) { + return createContactExchangeStreamEncrypter(out, headerKey); + } } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/transport/StreamReaderFactoryImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/transport/StreamReaderFactoryImpl.java index 4d6475b23..2b8596047 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/transport/StreamReaderFactoryImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/transport/StreamReaderFactoryImpl.java @@ -24,15 +24,21 @@ class StreamReaderFactoryImpl implements StreamReaderFactory { @Override public InputStream createStreamReader(InputStream in, StreamContext ctx) { - return new StreamReaderImpl( - streamDecrypterFactory.createStreamDecrypter(in, ctx)); + return new StreamReaderImpl(streamDecrypterFactory + .createStreamDecrypter(in, ctx)); } @Override public InputStream createContactExchangeStreamReader(InputStream in, SecretKey headerKey) { - return new StreamReaderImpl( - streamDecrypterFactory.createContactExchangeStreamDecrypter(in, - headerKey)); + return new StreamReaderImpl(streamDecrypterFactory + .createContactExchangeStreamDecrypter(in, headerKey)); + } + + @Override + public InputStream createLogStreamReader(InputStream in, + SecretKey headerKey) { + return new StreamReaderImpl(streamDecrypterFactory + .createLogStreamDecrypter(in, headerKey)); } } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/transport/StreamWriterFactoryImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/transport/StreamWriterFactoryImpl.java index 3410e8446..38262fc99 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/transport/StreamWriterFactoryImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/transport/StreamWriterFactoryImpl.java @@ -26,15 +26,21 @@ class StreamWriterFactoryImpl implements StreamWriterFactory { @Override public StreamWriter createStreamWriter(OutputStream out, StreamContext ctx) { - return new StreamWriterImpl( - streamEncrypterFactory.createStreamEncrypter(out, ctx)); + return new StreamWriterImpl(streamEncrypterFactory + .createStreamEncrypter(out, ctx)); } @Override public StreamWriter createContactExchangeStreamWriter(OutputStream out, SecretKey headerKey) { - return new StreamWriterImpl( - streamEncrypterFactory.createContactExchangeStreamDecrypter(out, - headerKey)); + return new StreamWriterImpl(streamEncrypterFactory + .createContactExchangeStreamEncrypter(out, headerKey)); } -} \ No newline at end of file + + @Override + public StreamWriter createLogStreamWriter(OutputStream out, + SecretKey headerKey) { + return new StreamWriterImpl(streamEncrypterFactory + .createLogStreamEncrypter(out, headerKey)); + } +}