diff --git a/briar-android/src/org/briarproject/android/AppModule.java b/briar-android/src/org/briarproject/android/AppModule.java index 22d59c206cced7be93fcdc15a98c8519cf0b7b11..0b5b031b92f9ed23e4293f214ab0ebb250364c8a 100644 --- a/briar-android/src/org/briarproject/android/AppModule.java +++ b/briar-android/src/org/briarproject/android/AppModule.java @@ -24,6 +24,8 @@ import dagger.Module; import dagger.Provides; import static android.content.Context.MODE_PRIVATE; +import static org.briarproject.api.reporting.ReportingConstants.DEV_ONION_ADDRESS; +import static org.briarproject.api.reporting.ReportingConstants.DEV_PUBLIC_KEY_HEX; @Module public class AppModule { @@ -97,36 +99,22 @@ public class AppModule { @Provides @Singleton - public DevConfig provideDevConfig(CryptoComponent crypto) { - final PublicKey pub; - try { - // TODO fill in - pub = crypto.getMessageKeyParser() - .parsePublicKey(StringUtils.fromHexString("")); - } catch (GeneralSecurityException e) { - throw new RuntimeException(e); - } - + public DevConfig provideDevConfig(final CryptoComponent crypto) { return new DevConfig() { - private final PublicKey DEV_PUB_KEY = pub; - // TODO fill in - private final String DEV_ONION = ""; - private final int DEV_REPORT_PORT = 8080; - @Override public PublicKey getDevPublicKey() { - return DEV_PUB_KEY; + try { + return crypto.getMessageKeyParser().parsePublicKey( + StringUtils.fromHexString(DEV_PUBLIC_KEY_HEX)); + } catch (GeneralSecurityException e) { + throw new RuntimeException(e); + } } @Override public String getDevOnionAddress() { - return DEV_ONION; - } - - @Override - public int getDevReportPort() { - return DEV_REPORT_PORT; + return DEV_ONION_ADDRESS; } }; } diff --git a/briar-api/src/org/briarproject/api/reporting/DevConfig.java b/briar-api/src/org/briarproject/api/reporting/DevConfig.java index f82e8131804943dbdd00fdada5360eef1bad2166..b6f4ccbf898a8795e95cd8d93065ad317ab026cc 100644 --- a/briar-api/src/org/briarproject/api/reporting/DevConfig.java +++ b/briar-api/src/org/briarproject/api/reporting/DevConfig.java @@ -7,6 +7,4 @@ public interface DevConfig { PublicKey getDevPublicKey(); String getDevOnionAddress(); - - int getDevReportPort(); } diff --git a/briar-api/src/org/briarproject/api/reporting/ReportingConstants.java b/briar-api/src/org/briarproject/api/reporting/ReportingConstants.java new file mode 100644 index 0000000000000000000000000000000000000000..f1d69a1a1981430e0e23b3934a60168eb858285f --- /dev/null +++ b/briar-api/src/org/briarproject/api/reporting/ReportingConstants.java @@ -0,0 +1,25 @@ +package org.briarproject.api.reporting; + +public interface ReportingConstants { + + /** + * Public key for reporting crashes and feedback to the developers. This + * is an ECIES key on the brainpoolp512r1 curve, encoded in SEC 1 format + * without point compression. + */ + String DEV_PUBLIC_KEY_HEX = + "0457AD1619FBD433D5E13D5560697054" + + "6E8FC5F4EF83A8C18718E8BF59BB601F" + + "E20CCB233F06714A1BED370141A04C81" + + "808CF2EE95C7323CDEE5999670BD1174" + + "1F65ED691F355518E1A7E5E54BDDCA4C" + + "B86BD8DB8842BBFD706EBD9708DB8C04" + + "4FF006F215D83A66B3AEBAD674C4C1C4" + + "218121A38FA1FDD4A51E77588D90BD9652"; + + /** + * Hidden service address for reporting crashes and feedback to the + * developers. TODO: Replace this with a real address. + */ + String DEV_ONION_ADDRESS = "aaaaaaaaaaaaaaaa.onion"; +} diff --git a/briar-core/src/org/briarproject/reporting/DevReporterImpl.java b/briar-core/src/org/briarproject/reporting/DevReporterImpl.java index d34bbeeeffe577125fba20749b282b33dcc787ed..192f10beec4e0f3e6ae5a6d08bb57d2c0fb096cd 100644 --- a/briar-core/src/org/briarproject/reporting/DevReporterImpl.java +++ b/briar-core/src/org/briarproject/reporting/DevReporterImpl.java @@ -22,7 +22,6 @@ import java.net.Socket; import java.net.SocketException; import java.net.UnknownHostException; import java.nio.charset.Charset; -import java.util.Date; import java.util.List; import java.util.logging.Logger; @@ -33,7 +32,7 @@ class DevReporterImpl implements DevReporter { private static final Logger LOG = Logger.getLogger(DevReporterImpl.class.getName()); - private static final int TIMEOUT = 30 * 1000; // 30 seconds + private static final int SOCKET_TIMEOUT = 30 * 1000; // 30 seconds private static final String PREFIX = "briar-"; private static final String REPORT_EXT = ".report"; private static final String CRLF = "\r\n"; @@ -46,13 +45,12 @@ class DevReporterImpl implements DevReporter { this.devConfig = devConfig; } - private Socket connectToDevelopers(int socksPort, int devPort) + private Socket connectToDevelopers(int socksPort) throws UnknownHostException, SocksException, SocketException { Socks5Proxy proxy = new Socks5Proxy("127.0.0.1", socksPort); proxy.resolveAddrLocally(false); - Socket s = - new SocksSocket(proxy, devConfig.getDevOnionAddress(), devPort); - s.setSoTimeout(TIMEOUT); + Socket s = new SocksSocket(proxy, devConfig.getDevOnionAddress(), 80); + s.setSoTimeout(SOCKET_TIMEOUT); return s; } @@ -63,7 +61,7 @@ class DevReporterImpl implements DevReporter { crypto.encryptToKey(devConfig.getDevPublicKey(), StringUtils.toUtf8(crashReport)); - String filename = PREFIX + new Date().getTime() + REPORT_EXT; + String filename = PREFIX + System.currentTimeMillis() + REPORT_EXT; File report = new File(crashReportDir, filename); PrintWriter writer = null; try { @@ -83,14 +81,13 @@ class DevReporterImpl implements DevReporter { if (reports == null || reports.length == 0) return; // No crash reports to send - LOG.info("Connecting to developers' Hidden Service"); + LOG.info("Connecting to developers"); Socket s; try { - s = connectToDevelopers(socksPort, - devConfig.getDevReportPort()); + s = connectToDevelopers(socksPort); } catch (IOException e) { if (LOG.isLoggable(WARNING)) - LOG.log(WARNING, "Tor SOCKS proxy failed", e); + LOG.log(WARNING, "Could not connect to developers", e); return; } @@ -109,9 +106,9 @@ class DevReporterImpl implements DevReporter { writer.append(line).append(CRLF); } writer.append(CRLF); + writer.flush(); f.delete(); } - writer.flush(); LOG.info("Crash reports sent"); } catch (IOException e) { if (LOG.isLoggable(WARNING))