diff options
30 files changed, 71 insertions, 86 deletions
diff --git a/.travis.yml b/.travis.yml index 2cf2f98f7..81ef10638 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,14 +4,14 @@ before_install: # Install base Android SDK - sudo apt-get update -qq - if [ `uname -m` = x86_64 ]; then sudo apt-get install -qq --force-yes libgd2-xpm lib32z1 lib32stdc++6; fi - - wget http://dl.google.com/android/android-sdk_r23-linux.tgz - - tar xzf android-sdk_r23-linux.tgz + - wget http://dl.google.com/android/android-sdk_r23.0.2-linux.tgz + - tar xzf android-sdk_r23.0.2-linux.tgz - export ANDROID_HOME=$PWD/android-sdk-linux - export PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools # Install required Android components. #- echo "y" | android update sdk -a --filter build-tools-19.1.0,android-19,platform-tools,extra-android-support,extra-android-m2repository --no-ui --force - - ( sleep 5 && while [ 1 ]; do sleep 1; echo y; done ) | android update sdk --no-ui --all --force --filter build-tools-19.1.0,android-19,platform-tools,extra-android-support,extra-android-m2repository + - ( sleep 5 && while [ 1 ]; do sleep 1; echo y; done ) | android update sdk --no-ui --all --force --filter build-tools-21.1.1,build-tools-19.1.0,android-21,android-19,platform-tools,extra-android-support,extra-android-m2repository - ./prepare-tests.sh install: echo "Installation done" script: diff --git a/OpenKeychain-Test/build.gradle b/OpenKeychain-Test/build.gradle index bb6c3d181..f621428ed 100644 --- a/OpenKeychain-Test/build.gradle +++ b/OpenKeychain-Test/build.gradle @@ -1,14 +1,11 @@ buildscript { repositories { - mavenCentral() - // need this for com.novoda:gradle-android-test-plugin:0.9.9-SNAPSHOT below (0.9.3 in repos doesn't work!) - // run ./install-custom-gradle-test-plugin.sh to pull the thing into the local repository - mavenLocal() + jcenter() } dependencies { // NOTE: Always use fixed version codes not dynamic ones, e.g. 0.7.3 instead of 0.7.+, see README for more information - classpath 'com.novoda:gradle-android-test-plugin:0.9.9-SNAPSHOT' + classpath 'com.novoda:gradle-android-test-plugin:0.10.0' } } @@ -51,16 +48,17 @@ android { } jacoco { - toolVersion = "0.7.0.201403182114" + toolVersion = "0.7.2.201409121644" } -coverageSourceDirs = [ + +def coverageSourceDirs = [ '../OpenKeychain/src/main/java', '../OpenKeychain/src/gen', '../OpenKeychain/build/source/apt/debug', '../OpenKeychain/build/source/generated/buildConfig/debug', '../OpenKeychain/build/source/generated/r/debug' - ] + ] jacocoTestReport { reports { diff --git a/OpenKeychain/build.gradle b/OpenKeychain/build.gradle index 6b957b622..6bea6954e 100644 --- a/OpenKeychain/build.gradle +++ b/OpenKeychain/build.gradle @@ -3,8 +3,8 @@ apply plugin: 'com.android.application' dependencies { // NOTE: Always use fixed version codes not dynamic ones, e.g. 0.7.3 instead of 0.7.+, see README for more information - compile 'com.android.support:support-v4:19.1.0' - compile 'com.android.support:appcompat-v7:19.1.0' + compile 'com.android.support:support-v4:21.0.2' + compile 'com.android.support:appcompat-v7:21.0.2' compile project(':extern:openpgp-api-lib') compile project(':extern:openkeychain-api-lib') compile project(':extern:html-textview') @@ -23,12 +23,12 @@ dependencies { } android { - compileSdkVersion 19 - buildToolsVersion '19.1' + compileSdkVersion 21 + buildToolsVersion '21.1.1' defaultConfig { minSdkVersion 9 - targetSdkVersion 19 + targetSdkVersion 21 } /* diff --git a/OpenKeychain/src/main/AndroidManifest.xml b/OpenKeychain/src/main/AndroidManifest.xml index 18fcc4b42..100f584c1 100644 --- a/OpenKeychain/src/main/AndroidManifest.xml +++ b/OpenKeychain/src/main/AndroidManifest.xml @@ -3,8 +3,8 @@ xmlns:tools="http://schemas.android.com/tools" package="org.sufficientlysecure.keychain" android:installLocation="auto" - android:versionCode="31200" - android:versionName="3.1.2"> + android:versionCode="31201" + android:versionName="3.2beta1"> <!-- General remarks @@ -15,7 +15,7 @@ Association of file types to Keychain ===================================== General remarks about file ending conventions: - - *.gpg for binary files + - *.gpg for binary files - *.asc for ascii armored files The actual content can be anything. The file ending only shows if it is binary or ascii encoded. diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainApplication.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainApplication.java index cacceb5d0..446699a81 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainApplication.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainApplication.java @@ -77,7 +77,7 @@ public class KeychainApplication extends Application { } */ - // Create APG directory on sdcard if not existing + // Create OpenKeychain directory on sdcard if not existing if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { if (!Constants.Path.APP_DIR.exists() && !Constants.Path.APP_DIR.mkdirs()) { // ignore this for now, it's not crucial diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/UncachedKeyRing.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/UncachedKeyRing.java index 8856da8b0..d05ce3d5c 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/UncachedKeyRing.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/UncachedKeyRing.java @@ -330,7 +330,7 @@ public class UncachedKeyRing { } if (cert.isLocal()) { - // Creation date in the future? No way! + // Remove revocation certs with "local" flag log.add(LogType.MSG_KC_REVOKE_BAD_LOCAL, indent); modified = PGPPublicKey.removeCertification(modified, zert); badCerts += 1; diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java index a2988f2b2..8c5050fdf 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java @@ -78,7 +78,7 @@ import java.util.Iterator; import java.util.concurrent.atomic.AtomicBoolean; /** - * This Service contains all important long lasting operations for APG. It receives Intents with + * This Service contains all important long lasting operations for OpenKeychain. It receives Intents with * data from the activities or other apps, queues these intents, executes them, and stops itself * after doing them. */ @@ -155,7 +155,6 @@ public class KeychainIntentService extends IntentService implements Progressable public static final String IMPORT_KEY_SERVER = "import_key_server"; // export key - public static final String EXPORT_OUTPUT_STREAM = "export_output_stream"; public static final String EXPORT_FILENAME = "export_filename"; public static final String EXPORT_URI = "export_uri"; public static final String EXPORT_SECRET = "export_secret"; @@ -181,10 +180,6 @@ public class KeychainIntentService extends IntentService implements Progressable // decrypt/verify public static final String RESULT_DECRYPTED_BYTES = "decrypted_data"; - public static final String RESULT_DECRYPT_VERIFY_RESULT = "signature"; - - // export - public static final String RESULT_EXPORT = "exported"; Messenger mMessenger; @@ -712,15 +707,6 @@ public class KeychainIntentService extends IntentService implements Progressable } } - @Override - public int onStartCommand(Intent intent, int flags, int startId) { - if (ACTION_CANCEL.equals(intent.getAction())) { - mActionCanceled.set(true); - return START_NOT_STICKY; - } - return super.onStartCommand(intent, flags, startId); - } - private String getOriginalFilename(Bundle data) throws PgpGeneralException, FileNotFoundException { int target = data.getInt(TARGET); switch (target) { @@ -785,4 +771,13 @@ public class KeychainIntentService extends IntentService implements Progressable break; } } + + @Override + public int onStartCommand(Intent intent, int flags, int startId) { + if (ACTION_CANCEL.equals(intent.getAction())) { + mActionCanceled.set(true); + return START_NOT_STICKY; + } + return super.onStartCommand(intent, flags, startId); + } } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/PassphraseCacheService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/PassphraseCacheService.java index 63cb6494d..869d2e71b 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/PassphraseCacheService.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/PassphraseCacheService.java @@ -456,7 +456,7 @@ public class PassphraseCacheService extends Service { Intent intent = new Intent(getApplicationContext(), PassphraseCacheService.class); intent.setAction(ACTION_PASSPHRASE_CACHE_CLEAR); builder.addAction( - R.drawable.abc_ic_clear_normal, + R.drawable.abc_ic_clear_mtrl_alpha, getString(R.string.passp_cache_notif_clear), PendingIntent.getService( getApplicationContext(), diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ShareHelper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ShareHelper.java index 27f026f80..51e58565f 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ShareHelper.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ShareHelper.java @@ -1,10 +1,3 @@ -package org.sufficientlysecure.keychain.util; - -import android.content.Context; -import android.content.Intent; -import android.content.pm.LabeledIntent; -import android.content.pm.ResolveInfo; -import android.os.Build; /* * Copyright (C) 2014 Dominik Schürmann <dominik@dominikschuermann.de> * @@ -22,6 +15,13 @@ import android.os.Build; * along with this program. If not, see <http://www.gnu.org/licenses/>. */ +package org.sufficientlysecure.keychain.util; + +import android.content.Context; +import android.content.Intent; +import android.content.pm.LabeledIntent; +import android.content.pm.ResolveInfo; +import android.os.Build; import android.os.Parcelable; import java.util.ArrayList; @@ -38,7 +38,7 @@ public class ShareHelper { } /** - * Create Intent Chooser but exclude OK's EncryptActivity. + * Create Intent Chooser but exclude specific activites, e.g., EncryptActivity to prevent encrypting again * <p/> * Put together from some stackoverflow posts... */ diff --git a/OpenKeychain/src/main/res/drawable/yubikey_neo.png b/OpenKeychain/src/main/res/drawable/yubikey_neo.png Binary files differdeleted file mode 100644 index d4156eb5e..000000000 --- a/OpenKeychain/src/main/res/drawable/yubikey_neo.png +++ /dev/null diff --git a/OpenKeychain/src/main/res/drawable/yubikey_phone.png b/OpenKeychain/src/main/res/drawable/yubikey_phone.png Binary files differnew file mode 100644 index 000000000..6a03501c6 --- /dev/null +++ b/OpenKeychain/src/main/res/drawable/yubikey_phone.png diff --git a/OpenKeychain/src/main/res/layout/actionbar_custom_view_done.xml b/OpenKeychain/src/main/res/layout/actionbar_custom_view_done.xml index 50134f4e7..b219038b2 100644 --- a/OpenKeychain/src/main/res/layout/actionbar_custom_view_done.xml +++ b/OpenKeychain/src/main/res/layout/actionbar_custom_view_done.xml @@ -19,7 +19,6 @@ android:layout_height="match_parent" android:dividerPadding="12dp" android:orientation="horizontal" - android:divider="@drawable/abc_list_divider_holo_light" android:showDividers="end" > <include layout="@layout/actionbar_include_done_button" /> diff --git a/OpenKeychain/src/main/res/layout/actionbar_custom_view_done_cancel.xml b/OpenKeychain/src/main/res/layout/actionbar_custom_view_done_cancel.xml index 1d0476361..e9047e759 100644 --- a/OpenKeychain/src/main/res/layout/actionbar_custom_view_done_cancel.xml +++ b/OpenKeychain/src/main/res/layout/actionbar_custom_view_done_cancel.xml @@ -18,7 +18,6 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:dividerPadding="12dp" - android:divider="@drawable/abc_list_divider_holo_light" android:orientation="horizontal" android:showDividers="middle"> diff --git a/OpenKeychain/src/main/res/layout/nfc_activity.xml b/OpenKeychain/src/main/res/layout/nfc_activity.xml index e78fa7c87..034b74a35 100644 --- a/OpenKeychain/src/main/res/layout/nfc_activity.xml +++ b/OpenKeychain/src/main/res/layout/nfc_activity.xml @@ -1,30 +1,24 @@ -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" + android:orientation="vertical" android:paddingLeft="16dp" android:paddingRight="16dp" - android:paddingTop="8dp" - android:paddingBottom="8dp" - android:background="#FFFFFFFF" - tools:context="org.sufficientlysecure.keychain.nfc.NfcActivityFull"> + android:paddingTop="16dp" + android:paddingBottom="16dp"> <TextView - android:text="Hold Yubikey against the back of your device!" + android:text="@string/nfc_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="@android:style/TextAppearance.Large" - android:id="@+id/textView" + android:id="@+id/nfc_text" android:gravity="center" android:layout_gravity="center" /> <ImageView - android:layout_width="wrap_content" + android:layout_width="match_parent" android:layout_height="wrap_content" - android:id="@+id/imageView" - android:src="@drawable/yubikey_neo" - android:layout_alignParentRight="true" - android:layout_alignParentEnd="true" - android:layout_below="@+id/textView" /> + android:src="@drawable/yubikey_phone" /> -</RelativeLayout> +</LinearLayout> diff --git a/OpenKeychain/src/main/res/raw/help_faq.html b/OpenKeychain/src/main/res/raw/help_faq.html index 6f8763f36..094065909 100644 --- a/OpenKeychain/src/main/res/raw/help_faq.html +++ b/OpenKeychain/src/main/res/raw/help_faq.html @@ -12,10 +12,10 @@ And don't add newlines before or after p tags because of transifex --> <h2>A wrong primary user id is shown when searching on a Keyserver</h2> <p>Unfortunately, this is a bug in the SKS Keyserver software. Its machine-readable output returns the user ids in an arbitrary order. Read the <a href="https://bitbucket.org/skskeyserver/sks-keyserver/issue/28/primary-uid-in-machine-readable-index">related bug report</a> for more information.</p> -<h2>How do I activate OpenKeychain in K9-Mail?</h2> -<p>To use OpenKeychain with K9-Mail, you want to follow these steps:</p> +<h2>How do I activate OpenKeychain in K-9 Mail?</h2> +<p>To use OpenKeychain with K-9 Mail, you want to follow these steps:</p> <ol> - <li>Open K9-Mail and long-tap on the account you want to use OpenKeychain with.</li> + <li>Open K-9 Mail and long-tap on the account you want to use OpenKeychain with.</li> <li>Select "Account settings" and scroll to the very bottom and click "Cryptography".</li> <li>Click on "OpenPGP Provider" and select OpenKeychain from the list.</li> </ol> diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml index e2b92d875..9ea16a0ab 100644 --- a/OpenKeychain/src/main/res/values/strings.xml +++ b/OpenKeychain/src/main/res/values/strings.xml @@ -115,9 +115,9 @@ <string name="label_file_ascii_armor">"Enable ASCII Armor"</string> <string name="label_write_version_header">"Let others know that you're using OpenKeychain"</string> <string name="label_write_version_header_summary">"Writes 'OpenKeychain v2.7' to OpenPGP signatures, ciphertext, and exported keys"</string> - <string name="label_use_default_yubikey_pin">"Use default Yubikey PIN"</string> - <string name="label_use_num_keypad_for_yubikey_pin">Use number keypad for Yubikey PIN</string> - <string name="label_label_use_default_yubikey_pin_summary">"Uses default PIN (123456) to access Yubikeys over NFC"</string> + <string name="label_use_default_yubikey_pin">"Use default YubiKey PIN"</string> + <string name="label_use_num_keypad_for_yubikey_pin">Use number keypad for YubiKey PIN</string> + <string name="label_label_use_default_yubikey_pin_summary">"Uses default PIN (123456) to access YubiKeys over NFC"</string> <string name="label_asymmetric_from">"Signed by:"</string> <string name="label_to">"Encrypt to:"</string> <string name="label_delete_after_encryption">"Delete file after encryption"</string> @@ -205,7 +205,8 @@ <string name="passphrase_must_not_be_empty">"Please enter a passphrase."</string> <string name="passphrase_for_symmetric_encryption">"Symmetric encryption."</string> <string name="passphrase_for">"Enter passphrase for '%s'"</string> - <string name="yubikey_pin">"Enter PIN to access Yubikey for '%s'"</string> + <string name="yubikey_pin">"Enter PIN to access YubiKey for '%s'"</string> + <string name="nfc_text">"Hold YubiKey against the back of your device."</string> <string name="file_delete_confirmation">"Are you sure you want to delete\n%s?"</string> <string name="file_delete_successful">"Successfully deleted."</string> <string name="no_file_selected">"Select a file first."</string> diff --git a/build.gradle b/build.gradle index 2e7ab3d86..17e112d68 100644 --- a/build.gradle +++ b/build.gradle @@ -1,22 +1,22 @@ buildscript { repositories { - mavenCentral() + jcenter() } dependencies { // NOTE: Always use fixed version codes not dynamic ones, e.g. 0.7.3 instead of 0.7.+, see README for more information - classpath 'com.android.tools.build:gradle:0.12.2' + classpath 'com.android.tools.build:gradle:1.0.0-rc3' } } allprojects { repositories { - mavenCentral() + jcenter() } } task wrapper(type: Wrapper) { - gradleVersion = '1.12' + gradleVersion = '2.2.1' } subprojects { diff --git a/extern/KeybaseLib b/extern/KeybaseLib -Subproject 981cfe4029319b2b1828f320775f8bed334c865 +Subproject 2b26d163df84a3d26c1c8da088ed3811b5ca6ec diff --git a/extern/StickyListHeaders b/extern/StickyListHeaders -Subproject 911f8ddfd007ce65aededae7e7b79e5a8d903a4 +Subproject 62cc58c12d0c09b50984caf26e5afceda887378 diff --git a/extern/SuperToasts b/extern/SuperToasts -Subproject 8578cfe6917cf16a9f123c1964e4bbff2a15be5 +Subproject 77042d633f4dd430bcc86101e31dda52433db9c diff --git a/extern/TokenAutoComplete b/extern/TokenAutoComplete -Subproject 000fa65390b98106201a0ffaad76c5d85a35396 +Subproject ca46b4261c97221ddd4db135e7838d6fa145adf diff --git a/extern/minidns b/extern/minidns -Subproject dcf62a8ac59d84072e66e71ec8a5d137784e760 +Subproject f3a19080f15e220fbacab5045c1f15fd12513b3 diff --git a/extern/openkeychain-api-lib b/extern/openkeychain-api-lib -Subproject 57e58e7f7f51c4eecd7ee4b0f22c856485a243b +Subproject 0cdbf32231739eac47999be71d6d01fc2837518 diff --git a/extern/openpgp-api-lib b/extern/openpgp-api-lib -Subproject 0be263d5d3effd2df5f976fa4a127017268749c +Subproject e0ad1086a55eab66d963b4d5c6ca5544b454ef2 diff --git a/extern/zxing-android-integration b/extern/zxing-android-integration -Subproject 1d787845663fd232f98f5e8e0923733c1a188f2 +Subproject e2d0064bd3171b7333af044bb30c25c85ee993d diff --git a/extern/zxing-qr-code b/extern/zxing-qr-code -Subproject 9ef2f3b66ea7cc283e865ec39434d023a18d17f +Subproject 8fd0657d33d8277aadbdc1604fd3aaa2e8d4b48 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar Binary files differindex 583859812..c97a8bdb9 100644 --- a/gradle/wrapper/gradle-wrapper.jar +++ b/gradle/wrapper/gradle-wrapper.jar diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index cc3d5d9a3..120a028f4 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon Jun 09 22:04:23 CEST 2014 +#Thu Dec 04 18:50:40 CET 2014 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-bin.zip diff --git a/prepare-tests.sh b/prepare-tests.sh index 027c76f84..623c4a233 100755 --- a/prepare-tests.sh +++ b/prepare-tests.sh @@ -10,16 +10,16 @@ if ! java -version 2>&1 | grep OpenJDK; then return fi -tmpdir="$(mktemp -d)" -( - cd "$tmpdir"; - git clone https://github.com/nenick/gradle-android-test-plugin.git - cd gradle-android-test-plugin - echo "rootProject.name = 'gradle-android-test-plugin-parent'" > settings.gradle - echo "include ':gradle-android-test-plugin'" >> settings.gradle - ./gradlew :gradle-android-test-plugin:install -) -rm -rf "$tmpdir" +#tmpdir="$(mktemp -d)" +#( +# cd "$tmpdir"; +# git clone https://github.com/nenick/gradle-android-test-plugin.git +# cd gradle-android-test-plugin +# echo "rootProject.name = 'gradle-android-test-plugin-parent'" > settings.gradle +# echo "include ':gradle-android-test-plugin'" >> settings.gradle +# ./gradlew :gradle-android-test-plugin:install +#) +#rm -rf "$tmpdir" echo -n "ok, adding tests to include list.. " if grep OpenKeychain-Test settings.gradle >/dev/null ; then diff --git a/tools/suppressions.xml b/tools/suppressions.xml index 9173d3a5e..4d8fe5717 100644 --- a/tools/suppressions.xml +++ b/tools/suppressions.xml @@ -6,7 +6,6 @@ <suppressions> <suppress files="(Constants|Id|R|PgpConversionHelper)\.java" checks=".*NameCheck"/> - <suppress files="Apg.java" checks="LineLength"/> <suppress files="FileDialog.java" checks="StaticVariableNameCheck"/> <suppress files="PRNGFixes.java" checks=".*"/> </suppressions> |