Compare commits
14 Commits
42e7a4ef75
...
pvabel
| Author | SHA1 | Date | |
|---|---|---|---|
|
93e226f0b7
|
|||
|
e9af366986
|
|||
|
b0f0417d43
|
|||
|
|
8d0bd1f853 | ||
|
|
8322027cd7 | ||
|
|
f0f35c6a66 | ||
|
|
901a7a73bc | ||
|
|
4cf23609db | ||
|
|
2addbf07fe | ||
|
|
30aec855e2 | ||
|
|
095f0ba09c | ||
|
|
9c94fc1f4d | ||
|
|
9bf87cd816 | ||
|
|
65b94aa77e |
64
.tx/config
@@ -1,34 +1,46 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
lang_map = he: iw, zh_TW: zh-rTW, es_MX: es-rMX, pt_BR: pt-rBR, nl_BE: nl-rBE
|
||||
host = https://www.transifex.com
|
||||
lang_map = nl_BE: nl-rBE, he: iw, zh_TW: zh-rTW, es_MX: es-rMX, pt_BR: pt-rBR, pt_PT: pt-rPT
|
||||
|
||||
[open-keychain.strings]
|
||||
file_filter = OpenKeychain/src/main/res/values-<lang>/strings.xml
|
||||
source_file = OpenKeychain/src/main/res/values/strings.xml
|
||||
source_lang = en
|
||||
[o:otf:p:open-keychain:r:advanced]
|
||||
file_filter = OpenKeychain/src/main/res/raw-<lang>/advanced.md
|
||||
source_file = OpenKeychain/src/main/res/raw/advanced.md
|
||||
source_lang = en
|
||||
replace_edited_strings = false
|
||||
keep_translations = false
|
||||
|
||||
[open-keychain.advanced]
|
||||
file_filter = OpenKeychain/src/main/res/raw-<lang>/advanced.md
|
||||
source_file = OpenKeychain/src/main/res/raw/advanced.md
|
||||
source_lang = en
|
||||
[o:otf:p:open-keychain:r:help-about]
|
||||
file_filter = OpenKeychain/src/main/res/raw-<lang>/help_about.md
|
||||
source_file = OpenKeychain/src/main/res/raw/help_about.md
|
||||
source_lang = en
|
||||
replace_edited_strings = false
|
||||
keep_translations = false
|
||||
|
||||
[open-keychain.help-about]
|
||||
file_filter = OpenKeychain/src/main/res/raw-<lang>/help_about.md
|
||||
source_file = OpenKeychain/src/main/res/raw/help_about.md
|
||||
source_lang = en
|
||||
[o:otf:p:open-keychain:r:help-certification]
|
||||
file_filter = OpenKeychain/src/main/res/raw-<lang>/help_certification.md
|
||||
source_file = OpenKeychain/src/main/res/raw/help_certification.md
|
||||
source_lang = en
|
||||
replace_edited_strings = false
|
||||
keep_translations = false
|
||||
|
||||
[open-keychain.help-changelog]
|
||||
file_filter = OpenKeychain/src/main/res/raw-<lang>/help_changelog.md
|
||||
source_file = OpenKeychain/src/main/res/raw/help_changelog.md
|
||||
source_lang = en
|
||||
[o:otf:p:open-keychain:r:help-changelog]
|
||||
file_filter = OpenKeychain/src/main/res/raw-<lang>/help_changelog.md
|
||||
source_file = OpenKeychain/src/main/res/raw/help_changelog.md
|
||||
source_lang = en
|
||||
replace_edited_strings = false
|
||||
keep_translations = false
|
||||
|
||||
[open-keychain.help-certification]
|
||||
file_filter = OpenKeychain/src/main/res/raw-<lang>/help_certification.md
|
||||
source_file = OpenKeychain/src/main/res/raw/help_certification.md
|
||||
source_lang = en
|
||||
[o:otf:p:open-keychain:r:help-start]
|
||||
file_filter = OpenKeychain/src/main/res/raw-<lang>/help_start.md
|
||||
source_file = OpenKeychain/src/main/res/raw/help_start.md
|
||||
source_lang = en
|
||||
replace_edited_strings = false
|
||||
keep_translations = false
|
||||
|
||||
[open-keychain.help-start]
|
||||
file_filter = OpenKeychain/src/main/res/raw-<lang>/help_start.md
|
||||
source_file = OpenKeychain/src/main/res/raw/help_start.md
|
||||
source_lang = en
|
||||
[o:otf:p:open-keychain:r:strings]
|
||||
file_filter = OpenKeychain/src/main/res/values-<lang>/strings.xml
|
||||
source_file = OpenKeychain/src/main/res/values/strings.xml
|
||||
source_lang = en
|
||||
replace_edited_strings = false
|
||||
keep_translations = false
|
||||
|
||||
|
||||
@@ -95,8 +95,8 @@ android {
|
||||
defaultConfig {
|
||||
minSdkVersion 15
|
||||
targetSdkVersion 34
|
||||
versionCode 60300
|
||||
versionName "6.0.3"
|
||||
versionCode 60400
|
||||
versionName "6.0.4"
|
||||
applicationId "org.sufficientlysecure.keychain"
|
||||
// the androidjunitrunner is broken regarding coverage, see here:
|
||||
// https://code.google.com/p/android/issues/detail?id=170607
|
||||
@@ -111,6 +111,12 @@ android {
|
||||
sourceCompatibility JavaVersion.VERSION_17
|
||||
targetCompatibility JavaVersion.VERSION_17
|
||||
}
|
||||
kotlinOptions {
|
||||
jvmTarget = "17"
|
||||
}
|
||||
kotlin {
|
||||
jvmToolchain(17)
|
||||
}
|
||||
|
||||
testOptions.unitTests.all {
|
||||
// log results of tests to console, useful for travis
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@drawable/ic_launcher_background"/>
|
||||
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
|
||||
</adaptive-icon>
|
||||
|
Before Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 5.5 KiB |
|
Before Width: | Height: | Size: 8.4 KiB |
|
Before Width: | Height: | Size: 12 KiB |
@@ -11,7 +11,6 @@ import androidx.annotation.StringRes;
|
||||
|
||||
|
||||
public class NotificationChannelManager {
|
||||
public static final String KEYSERVER_SYNC = "keyserverSync";
|
||||
public static final String PERMISSION_REQUESTS = "permissionRequests";
|
||||
public static final String PASSPHRASE_CACHE = "passphraseCache";
|
||||
public static final String ORBOT = "orbot";
|
||||
@@ -37,7 +36,6 @@ public class NotificationChannelManager {
|
||||
return;
|
||||
}
|
||||
|
||||
createNotificationChannel(KEYSERVER_SYNC, R.string.notify_channel_keysync, NotificationManager.IMPORTANCE_MIN);
|
||||
createNotificationChannel(PERMISSION_REQUESTS, R.string.notify_channel_permission, NotificationManager.IMPORTANCE_MIN);
|
||||
createNotificationChannel(PASSPHRASE_CACHE, R.string.notify_channel_passcache, NotificationManager.IMPORTANCE_NONE);
|
||||
createNotificationChannel(ORBOT, R.string.notify_channel_orbot, NotificationManager.IMPORTANCE_DEFAULT);
|
||||
|
||||
@@ -21,6 +21,8 @@ import org.sufficientlysecure.keychain.operations.results.ImportKeyResult;
|
||||
import org.sufficientlysecure.keychain.service.ImportKeyringParcel;
|
||||
import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper;
|
||||
|
||||
import timber.log.Timber;
|
||||
|
||||
public class ImportKeysOperationCallback implements
|
||||
CryptoOperationHelper.Callback<ImportKeyringParcel, ImportKeyResult> {
|
||||
|
||||
@@ -45,6 +47,7 @@ public class ImportKeysOperationCallback implements
|
||||
|
||||
@Override
|
||||
public void onCryptoOperationSuccess(ImportKeyResult result) {
|
||||
Timber.d("+onCryptoOperationSuccess");
|
||||
mResultListener.handleResult(result, mPosition);
|
||||
}
|
||||
|
||||
@@ -55,6 +58,7 @@ public class ImportKeysOperationCallback implements
|
||||
|
||||
@Override
|
||||
public void onCryptoOperationError(ImportKeyResult result) {
|
||||
Timber.d("+onCryptoOperationError");
|
||||
mResultListener.handleResult(result, mPosition);
|
||||
}
|
||||
|
||||
|
||||
@@ -50,9 +50,12 @@ import org.sufficientlysecure.keychain.pgp.Progressable;
|
||||
import org.sufficientlysecure.keychain.pgp.SignEncryptParcel;
|
||||
import org.sufficientlysecure.keychain.service.input.CryptoInputParcel;
|
||||
|
||||
import timber.log.Timber;
|
||||
|
||||
|
||||
public class KeychainServiceTask {
|
||||
public static KeychainServiceTask create(Activity activity) {
|
||||
Timber.d("+create#1");
|
||||
Context context = activity.getApplicationContext();
|
||||
KeyWritableRepository keyRepository = KeyWritableRepository.create(context);
|
||||
return new KeychainServiceTask(context, keyRepository);
|
||||
|
||||
@@ -46,11 +46,14 @@ import org.sufficientlysecure.keychain.operations.ImportOperation;
|
||||
import org.sufficientlysecure.keychain.operations.results.ImportKeyResult;
|
||||
import org.sufficientlysecure.keychain.pgp.CanonicalizedKeyRing;
|
||||
import org.sufficientlysecure.keychain.pgp.CanonicalizedKeyRing.VerificationStatus;
|
||||
import org.sufficientlysecure.keychain.pgp.CanonicalizedPublicKey;
|
||||
import org.sufficientlysecure.keychain.pgp.exception.PgpKeyNotFoundException;
|
||||
import org.sufficientlysecure.keychain.service.ImportKeyringParcel;
|
||||
import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper;
|
||||
import org.sufficientlysecure.keychain.ui.keyview.ViewKeyActivity;
|
||||
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
|
||||
import org.sufficientlysecure.keychain.ui.util.Notify;
|
||||
import org.sufficientlysecure.keychain.util.IterableIterator;
|
||||
import org.sufficientlysecure.keychain.util.ParcelableFileCache;
|
||||
import timber.log.Timber;
|
||||
|
||||
@@ -209,11 +212,17 @@ public class ImportKeysAdapter extends RecyclerView.Adapter<ImportKeysAdapter.Vi
|
||||
}
|
||||
|
||||
private void getKey(int position, ImportKeysListEntry entry, boolean skipSave) {
|
||||
Timber.d("+getKey position %d, entry %s, skipSave %s", position, entry.getKeyIdHex(), skipSave ? "true" : "false");
|
||||
Timber.d("getKey => prepareKeyOperation");
|
||||
ImportKeyringParcel inputParcel = prepareKeyOperation(entry, skipSave);
|
||||
ImportKeysResultListener listener = skipSave ? this : mListener;
|
||||
Timber.d("getKey => new ImportKeysOperationCallback");
|
||||
ImportKeysOperationCallback cb = new ImportKeysOperationCallback(listener, inputParcel, position);
|
||||
Timber.d("getKey => new CryptoOperationHelper");
|
||||
CryptoOperationHelper opHelper = new CryptoOperationHelper<>(1, mActivity, cb, null);
|
||||
Timber.d("getKey => opHelper.cryptoOperation");
|
||||
opHelper.cryptoOperation();
|
||||
Timber.d("-getKey");
|
||||
}
|
||||
|
||||
private ImportKeyringParcel prepareKeyOperation(ImportKeysListEntry entry, boolean skipSave) {
|
||||
@@ -264,9 +273,18 @@ public class ImportKeysAdapter extends RecyclerView.Adapter<ImportKeysAdapter.Vi
|
||||
ArrayList<CanonicalizedKeyRing> canKeyRings = result.mCanonicalizedKeyRings;
|
||||
if (canKeyRings.size() == 1) {
|
||||
CanonicalizedKeyRing keyRing = canKeyRings.get(0);
|
||||
Timber.e("Key ID: " + keyRing.getMasterKeyId() +
|
||||
"| isRev: " + keyRing.isRevoked() + "| isExp: " + keyRing.isExpired()
|
||||
+ "| isSec: " + keyRing.isSecure());
|
||||
Timber.e("Key ID: %016X| isRev: " + keyRing.isRevoked() + " | isExp: " + keyRing.isExpired()
|
||||
+ " | isSec: " + keyRing.isSecure(), keyRing.getMasterKeyId());
|
||||
try {
|
||||
Timber.e("[E]: %016X", keyRing.getEncryptId());
|
||||
} catch (PgpKeyNotFoundException ignored) {}
|
||||
try {
|
||||
Timber.e("[S]: %016X", keyRing.getSigningId());
|
||||
} catch (PgpKeyNotFoundException ignored) {}
|
||||
|
||||
for (CanonicalizedPublicKey val : keyRing.publicKeyIterator()) {
|
||||
Timber.e("KEY %016X; [%s%s%s%s]", val.getKeyId(), val.canAuthenticate() ? "A" : "", val.canCertify() ? "C" : "", val.canEncrypt() ? "E" : "", val.canSign() ? "S" : "");
|
||||
}
|
||||
|
||||
ImportKeysListEntry entry = mData.get(position);
|
||||
entry.setUpdated(result.isOkUpdated());
|
||||
|
||||
@@ -264,6 +264,7 @@ public class CryptoOperationHelper<T extends Parcelable, S extends OperationResu
|
||||
}
|
||||
|
||||
public void cryptoOperation(final CryptoInputParcel cryptoInput) {
|
||||
Timber.d("+cryptoOperation#1");
|
||||
T operationInput = mCallback.createOperationInput();
|
||||
if (operationInput == null) {
|
||||
return;
|
||||
@@ -320,8 +321,12 @@ public class CryptoOperationHelper<T extends Parcelable, S extends OperationResu
|
||||
}
|
||||
|
||||
public void cryptoOperation() {
|
||||
Timber.d("+cryptoOperation");
|
||||
operationStartTime = SystemClock.elapsedRealtime();
|
||||
cryptoOperation(CryptoInputParcel.createCryptoInputParcel(new Date()));
|
||||
Timber.d("cryptoOperation => CryptoInputParcel.createCryptoInputParcel");
|
||||
CryptoInputParcel tmp = CryptoInputParcel.createCryptoInputParcel(new Date());
|
||||
Timber.d("cryptoOperation => cryptoOperation#1");
|
||||
cryptoOperation(tmp);
|
||||
}
|
||||
|
||||
@UiThread
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<set xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<translate android:fromYDelta="-10" android:toYDelta="0"
|
||||
android:interpolator="@android:anim/decelerate_interpolator"
|
||||
android:duration="200"
|
||||
/>
|
||||
<alpha android:fromAlpha="0.0" android:toAlpha="1.0"
|
||||
android:interpolator="@android:anim/accelerate_interpolator"
|
||||
android:duration="200"
|
||||
/>
|
||||
</set>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<set xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<translate android:fromYDelta="10" android:toYDelta="0"
|
||||
android:interpolator="@android:anim/decelerate_interpolator"
|
||||
android:duration="200"
|
||||
/>
|
||||
<alpha android:fromAlpha="0.0" android:toAlpha="1.0"
|
||||
android:interpolator="@android:anim/accelerate_interpolator"
|
||||
android:duration="200"
|
||||
/>
|
||||
</set>
|
||||
@@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<set xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<alpha android:fromAlpha="1.0" android:toAlpha="0.0"
|
||||
android:interpolator="@android:anim/accelerate_interpolator"
|
||||
android:duration="300"
|
||||
android:startOffset="400"
|
||||
/>
|
||||
</set>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<set xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<translate android:fromYDelta="0.0" android:toYDelta="10"
|
||||
android:interpolator="@android:anim/decelerate_interpolator"
|
||||
android:duration="200"
|
||||
/>
|
||||
<alpha android:fromAlpha="1.0" android:toAlpha="0.0"
|
||||
android:interpolator="@android:anim/decelerate_interpolator"
|
||||
android:duration="150"
|
||||
/>
|
||||
</set>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<set xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<translate android:fromYDelta="0.0" android:toYDelta="-10"
|
||||
android:interpolator="@android:anim/decelerate_interpolator"
|
||||
android:duration="200"
|
||||
/>
|
||||
<alpha android:fromAlpha="1.0" android:toAlpha="0.0"
|
||||
android:interpolator="@android:anim/decelerate_interpolator"
|
||||
android:duration="150"
|
||||
/>
|
||||
</set>
|
||||
@@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<set xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:interpolator="@android:anim/decelerate_interpolator">
|
||||
<scale
|
||||
android:fromXScale="0.5"
|
||||
android:toXScale="1.0"
|
||||
android:fromYScale="0.5"
|
||||
android:toYScale="1.0"
|
||||
android:pivotX="50%p"
|
||||
android:pivotY="50%p"
|
||||
android:duration="@android:integer/config_mediumAnimTime" />
|
||||
<alpha
|
||||
android:fromAlpha="0"
|
||||
android:toAlpha="1.0"
|
||||
android:duration="@android:integer/config_mediumAnimTime" />
|
||||
</set>
|
||||
@@ -1,17 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<set xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:interpolator="@android:anim/decelerate_interpolator"
|
||||
android:zAdjustment="top">
|
||||
<scale
|
||||
android:fromXScale="1.0"
|
||||
android:toXScale="0.5"
|
||||
android:fromYScale="1.0"
|
||||
android:toYScale="0.5"
|
||||
android:pivotX="50%p"
|
||||
android:pivotY="50%p"
|
||||
android:duration="@android:integer/config_mediumAnimTime" />
|
||||
<alpha
|
||||
android:fromAlpha="1.0"
|
||||
android:toAlpha="0"
|
||||
android:duration="@android:integer/config_mediumAnimTime" />
|
||||
</set>
|
||||
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 161 B |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 923 B |
|
Before Width: | Height: | Size: 416 B |
|
Before Width: | Height: | Size: 227 B |
|
Before Width: | Height: | Size: 1018 B |
|
Before Width: | Height: | Size: 326 B |
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 381 B |
|
Before Width: | Height: | Size: 588 B |
|
Before Width: | Height: | Size: 920 B |
|
Before Width: | Height: | Size: 300 B |
|
Before Width: | Height: | Size: 551 B |
|
Before Width: | Height: | Size: 409 B |
|
Before Width: | Height: | Size: 408 B |
|
Before Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 740 B |
|
Before Width: | Height: | Size: 381 B |
|
Before Width: | Height: | Size: 576 B |
|
Before Width: | Height: | Size: 301 B |
|
Before Width: | Height: | Size: 183 B |
|
Before Width: | Height: | Size: 198 B |
|
Before Width: | Height: | Size: 247 B |
|
Before Width: | Height: | Size: 522 B |
|
Before Width: | Height: | Size: 314 B |
|
Before Width: | Height: | Size: 386 B |
|
Before Width: | Height: | Size: 453 B |
|
Before Width: | Height: | Size: 350 B |
|
Before Width: | Height: | Size: 572 B |
|
Before Width: | Height: | Size: 942 B |
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 282 B |
|
Before Width: | Height: | Size: 443 B |
|
Before Width: | Height: | Size: 614 B |
|
Before Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 792 B |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 806 B |
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 544 B |
|
Before Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 678 B |
|
Before Width: | Height: | Size: 142 B |
|
Before Width: | Height: | Size: 913 B |
|
Before Width: | Height: | Size: 751 B |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 623 B |
|
Before Width: | Height: | Size: 307 B |
|
Before Width: | Height: | Size: 157 B |
|
Before Width: | Height: | Size: 770 B |
|
Before Width: | Height: | Size: 244 B |
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 288 B |
|
Before Width: | Height: | Size: 406 B |
|
Before Width: | Height: | Size: 540 B |
|
Before Width: | Height: | Size: 230 B |
|
Before Width: | Height: | Size: 370 B |
|
Before Width: | Height: | Size: 305 B |
|
Before Width: | Height: | Size: 298 B |
|
Before Width: | Height: | Size: 701 B |
|
Before Width: | Height: | Size: 485 B |
|
Before Width: | Height: | Size: 288 B |
|
Before Width: | Height: | Size: 431 B |
|
Before Width: | Height: | Size: 248 B |
|
Before Width: | Height: | Size: 122 B |
|
Before Width: | Height: | Size: 133 B |
|
Before Width: | Height: | Size: 168 B |
|
Before Width: | Height: | Size: 356 B |
|
Before Width: | Height: | Size: 224 B |
|
Before Width: | Height: | Size: 317 B |
|
Before Width: | Height: | Size: 322 B |
|
Before Width: | Height: | Size: 253 B |
|
Before Width: | Height: | Size: 423 B |
|
Before Width: | Height: | Size: 647 B |