aboutsummaryrefslogtreecommitdiffstats
path: root/android
diff options
context:
space:
mode:
authorMoxie Marlinspike <moxie@thoughtcrime.org>2015-01-08 13:48:49 -0800
committerMoxie Marlinspike <moxie@thoughtcrime.org>2015-01-08 14:09:01 -0800
commit6445ea5f13850f42c3952bd06a2369317683ed88 (patch)
treef2bb37c8cf4710ff6a6a37a3e7e702c5a21ca504 /android
parenta4d8f7f6a4c4e9e89db35f299e558dceee2362a1 (diff)
Break project up into Java and Android build/test.
Diffstat (limited to 'android')
-rw-r--r--android/build.gradle96
-rw-r--r--android/src/androidTest/java/org/whispersystems/libaxolotl/CurveTest.java26
-rw-r--r--android/src/main/AndroidManifest.xml3
-rw-r--r--android/src/main/java/org/whispersystems/libaxolotl/util/AndroidAxolotlLogger.java24
4 files changed, 149 insertions, 0 deletions
diff --git a/android/build.gradle b/android/build.gradle
new file mode 100644
index 00000000..482532e3
--- /dev/null
+++ b/android/build.gradle
@@ -0,0 +1,96 @@
+buildscript {
+ repositories {
+ mavenCentral()
+ }
+
+ dependencies {
+ classpath 'com.android.tools.build:gradle:1.0.0'
+ }
+}
+
+apply plugin: 'com.android.library'
+apply plugin: 'maven'
+apply plugin: 'signing'
+
+archivesBaseName = "axolotl-android"
+version = version_number
+group = group_info
+
+android {
+ compileSdkVersion 21
+ buildToolsVersion "21.1.2"
+
+ sourceSets {
+ androidTest {
+ java.srcDirs = ['src/androidTest/java', project(':tests').file('src/main/java')]
+ }
+ }
+
+ libraryVariants.all { variant ->
+ variant.outputs.each { output ->
+ def outputFile = output.outputFile
+ if (outputFile != null && outputFile.name.endsWith('.aar')) {
+ def fileName = "${archivesBaseName}-${version}.aar"
+ output.outputFile = new File(outputFile.parent, fileName)
+ }
+ }
+ }
+}
+
+repositories {
+ mavenCentral()
+ mavenLocal()
+}
+
+dependencies {
+ compile "org.whispersystems:curve25519-android:${curve25519_version}"
+ compile (project(':java')) {
+ exclude group: 'org.whispersystems', module: 'curve25519-java'
+ }
+}
+
+signing {
+ required { has("release") && gradle.taskGraph.hasTask("uploadArchives") }
+ sign configurations.archives
+}
+
+uploadArchives {
+ configuration = configurations.archives
+ repositories.mavenDeployer {
+ beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
+
+ repository(url: sonatypeRepo) {
+ authentication(userName: whisperSonatypeUsername, password: whisperSonatypePassword)
+ }
+
+ pom.project {
+ name 'axolotl-android'
+ packaging 'aar'
+ description 'Axolotl library for Android'
+ url 'https://github.com/WhisperSystems/libaxolotl-android'
+
+ scm {
+ url 'scm:git@github.com:WhisperSystems/libaxolotl-android.git'
+ connection 'scm:git@github.com:WhisperSystems/libaxolotl-android.git'
+ developerConnection 'scm:git@github.com:WhisperSystems/libaxolotl-android.git'
+ }
+
+ developers {
+ developer {
+ name 'Moxie Marlinspike'
+ }
+ }
+ }
+ }
+}
+
+task installArchives(type: Upload) {
+ description "Installs the artifacts to the local Maven repository."
+ configuration = configurations['archives']
+ repositories {
+ mavenDeployer {
+ repository url: "file://${System.properties['user.home']}/.m2/repository"
+ }
+ }
+}
+
diff --git a/android/src/androidTest/java/org/whispersystems/libaxolotl/CurveTest.java b/android/src/androidTest/java/org/whispersystems/libaxolotl/CurveTest.java
new file mode 100644
index 00000000..bb539d49
--- /dev/null
+++ b/android/src/androidTest/java/org/whispersystems/libaxolotl/CurveTest.java
@@ -0,0 +1,26 @@
+package org.whispersystems.libaxolotl;
+
+import junit.framework.TestCase;
+
+import org.whispersystems.libaxolotl.ecc.Curve;
+import org.whispersystems.libaxolotl.ecc.ECKeyPair;
+
+public class CurveTest extends TestCase {
+
+ public void testPureJava() {
+ assertTrue(Curve.isNative());
+ }
+
+ public void testSignatureOverflow() throws InvalidKeyException {
+ ECKeyPair keys = Curve.generateKeyPair();
+ byte[] message = new byte[4096];
+
+ try {
+ byte[] signature = Curve.calculateSignature(keys.getPrivateKey(), message);
+ throw new InvalidKeyException("Should have asserted!");
+ } catch (AssertionError e) {
+ // Success!
+ }
+ }
+
+}
diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..85f0fe6b
--- /dev/null
+++ b/android/src/main/AndroidManifest.xml
@@ -0,0 +1,3 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="org.whispersystems.libaxolotl">
+</manifest>
diff --git a/android/src/main/java/org/whispersystems/libaxolotl/util/AndroidAxolotlLogger.java b/android/src/main/java/org/whispersystems/libaxolotl/util/AndroidAxolotlLogger.java
new file mode 100644
index 00000000..302c08a4
--- /dev/null
+++ b/android/src/main/java/org/whispersystems/libaxolotl/util/AndroidAxolotlLogger.java
@@ -0,0 +1,24 @@
+package org.whispersystems.libaxolotl.util;
+
+import android.util.Log;
+import android.util.SparseIntArray;
+
+import org.whispersystems.libaxolotl.logging.AxolotlLogger;
+
+public class AndroidAxolotlLogger implements AxolotlLogger {
+
+ private static final SparseIntArray PRIORITY_MAP = new SparseIntArray(5) {{
+ put(AxolotlLogger.INFO, Log.INFO);
+ put(AxolotlLogger.ASSERT, Log.ASSERT);
+ put(AxolotlLogger.DEBUG, Log.DEBUG);
+ put(AxolotlLogger.VERBOSE, Log.VERBOSE);
+ put(AxolotlLogger.WARN, Log.WARN);
+
+ }};
+
+ @Override
+ public void log(int priority, String tag, String message) {
+ int androidPriority = PRIORITY_MAP.get(priority, Log.WARN);
+ Log.println(androidPriority, tag, message);
+ }
+}