aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src
diff options
context:
space:
mode:
Diffstat (limited to 'OpenKeychain/src')
-rw-r--r--OpenKeychain/src/main/AndroidManifest.xml4
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainApplication.java1
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/helper/ContactHelper.java10
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/UncachedKeyRing.java60
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java20
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/RemoteService.java5
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/OperationResultParcel.java6
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java2
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java4
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/FoldableLinearLayout.java10
-rw-r--r--OpenKeychain/src/main/res/layout-large/api_apps_list_activity.xml22
-rw-r--r--OpenKeychain/src/main/res/layout-large/decrypt_activity.xml19
-rw-r--r--OpenKeychain/src/main/res/layout-large/encrypt_activity.xml16
-rw-r--r--OpenKeychain/src/main/res/layout-large/key_list_activity.xml14
-rw-r--r--OpenKeychain/src/main/res/layout/api_account_settings_fragment.xml4
-rw-r--r--OpenKeychain/src/main/res/layout/api_app_settings_fragment.xml6
-rw-r--r--OpenKeychain/src/main/res/layout/foldable_linearlayout.xml5
-rw-r--r--OpenKeychain/src/main/res/layout/key_list_activity.xml11
-rw-r--r--OpenKeychain/src/main/res/layout/key_list_content.xml18
-rw-r--r--OpenKeychain/src/main/res/raw-cs/help_changelog.html1
-rw-r--r--OpenKeychain/src/main/res/raw-de/help_changelog.html1
-rw-r--r--OpenKeychain/src/main/res/raw-es/help_changelog.html1
-rw-r--r--OpenKeychain/src/main/res/raw-et/help_changelog.html1
-rw-r--r--OpenKeychain/src/main/res/raw-fr/help_changelog.html1
-rw-r--r--OpenKeychain/src/main/res/raw-it/help_changelog.html1
-rw-r--r--OpenKeychain/src/main/res/raw-ja/help_changelog.html1
-rw-r--r--OpenKeychain/src/main/res/raw-nl/help_changelog.html1
-rw-r--r--OpenKeychain/src/main/res/raw-pl/help_changelog.html1
-rw-r--r--OpenKeychain/src/main/res/raw-pt/help_changelog.html1
-rw-r--r--OpenKeychain/src/main/res/raw-ru/help_changelog.html1
-rw-r--r--OpenKeychain/src/main/res/raw-sl/help_changelog.html1
-rw-r--r--OpenKeychain/src/main/res/raw-tr/help_changelog.html1
-rw-r--r--OpenKeychain/src/main/res/raw-uk/help_changelog.html1
-rw-r--r--OpenKeychain/src/main/res/raw-zh/help_changelog.html1
-rw-r--r--OpenKeychain/src/main/res/values-de/strings.xml20
-rw-r--r--OpenKeychain/src/main/res/values-es/strings.xml19
-rw-r--r--OpenKeychain/src/main/res/values-fr/strings.xml17
-rw-r--r--OpenKeychain/src/main/res/values-it/strings.xml60
-rw-r--r--OpenKeychain/src/main/res/values-ja/strings.xml6
-rw-r--r--OpenKeychain/src/main/res/values-uk/strings.xml4
-rw-r--r--OpenKeychain/src/main/res/values/attr.xml2
-rw-r--r--OpenKeychain/src/main/res/values/strings.xml10
42 files changed, 256 insertions, 134 deletions
diff --git a/OpenKeychain/src/main/AndroidManifest.xml b/OpenKeychain/src/main/AndroidManifest.xml
index 672b3e2bf..e14fb44ba 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="27003"
- android:versionName="2.8 beta3">
+ android:versionCode="28000"
+ android:versionName="2.8">
<!--
General remarks
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainApplication.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainApplication.java
index 37af95e28..57d74967b 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainApplication.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainApplication.java
@@ -120,6 +120,7 @@ public class KeychainApplication extends Application {
Account account = new Account(Constants.ACCOUNT_NAME, Constants.ACCOUNT_TYPE);
if (manager.addAccountExplicitly(account, null, null)) {
ContentResolver.setIsSyncable(account, ContactsContract.AUTHORITY, 1);
+ ContentResolver.setSyncAutomatically(account, ContactsContract.AUTHORITY, true);
} else {
Log.e(Constants.TAG, "Adding account failed!");
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/helper/ContactHelper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/helper/ContactHelper.java
index b7c4dcb80..016d6dc14 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/helper/ContactHelper.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/helper/ContactHelper.java
@@ -343,7 +343,7 @@ public class ContactHelper {
// Delete fingerprints that are no longer present in OK
for (String fingerprint : contactFingerprints) {
resolver.delete(ContactsContract.RawContacts.CONTENT_URI, ACCOUNT_TYPE_AND_SOURCE_ID_SELECTION,
- new String[]{Constants.PACKAGE_NAME, fingerprint});
+ new String[]{Constants.ACCOUNT_TYPE, fingerprint});
}
}
@@ -354,7 +354,7 @@ public class ContactHelper {
private static Set<String> getRawContactFingerprints(ContentResolver resolver) {
HashSet<String> result = new HashSet<String>();
Cursor fingerprints = resolver.query(ContactsContract.RawContacts.CONTENT_URI, SOURCE_ID_PROJECTION,
- ACCOUNT_TYPE_SELECTION, new String[]{Constants.PACKAGE_NAME}, null);
+ ACCOUNT_TYPE_SELECTION, new String[]{Constants.ACCOUNT_TYPE}, null);
if (fingerprints != null) {
while (fingerprints.moveToNext()) {
result.add(fingerprints.getString(0));
@@ -373,7 +373,7 @@ public class ContactHelper {
private static int findRawContactId(ContentResolver resolver, String fingerprint) {
int rawContactId = -1;
Cursor raw = resolver.query(ContactsContract.RawContacts.CONTENT_URI, ID_PROJECTION,
- ACCOUNT_TYPE_AND_SOURCE_ID_SELECTION, new String[]{Constants.PACKAGE_NAME, fingerprint}, null, null);
+ ACCOUNT_TYPE_AND_SOURCE_ID_SELECTION, new String[]{Constants.ACCOUNT_TYPE, fingerprint}, null, null);
if (raw != null) {
if (raw.moveToNext()) {
rawContactId = raw.getInt(0);
@@ -388,8 +388,8 @@ public class ContactHelper {
*/
private static void insertContact(ArrayList<ContentProviderOperation> ops, Context context, String fingerprint) {
ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
- .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, context.getString(R.string.app_name))
- .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, Constants.PACKAGE_NAME)
+ .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, Constants.ACCOUNT_NAME)
+ .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, Constants.ACCOUNT_TYPE)
.withValue(ContactsContract.RawContacts.SOURCE_ID, fingerprint)
.build());
}
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 9effe4e67..f00383e0f 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/UncachedKeyRing.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/UncachedKeyRing.java
@@ -45,6 +45,7 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Date;
@@ -339,7 +340,17 @@ public class UncachedKeyRing {
}
}
+ ArrayList<String> processedUserIds = new ArrayList<String>();
for (String userId : new IterableIterator<String>(masterKey.getUserIDs())) {
+ // check for duplicate user ids
+ if (processedUserIds.contains(userId)) {
+ log.add(LogLevel.WARN, LogType.MSG_KC_UID_DUP,
+ indent, userId);
+ // strip out the first found user id with this name
+ modified = PGPPublicKey.removeCertification(modified, userId);
+ }
+ processedUserIds.add(userId);
+
PGPSignature selfCert = null;
revocation = null;
@@ -416,13 +427,13 @@ public class UncachedKeyRing {
if (selfCert == null) {
selfCert = zert;
} else if (selfCert.getCreationTime().before(cert.getCreationTime())) {
- log.add(LogLevel.DEBUG, LogType.MSG_KC_UID_DUP,
+ log.add(LogLevel.DEBUG, LogType.MSG_KC_UID_CERT_DUP,
indent, userId);
modified = PGPPublicKey.removeCertification(modified, userId, selfCert);
redundantCerts += 1;
selfCert = zert;
} else {
- log.add(LogLevel.DEBUG, LogType.MSG_KC_UID_DUP,
+ log.add(LogLevel.DEBUG, LogType.MSG_KC_UID_CERT_DUP,
indent, userId);
modified = PGPPublicKey.removeCertification(modified, userId, zert);
redundantCerts += 1;
@@ -485,6 +496,10 @@ public class UncachedKeyRing {
// Replace modified key in the keyring
ring = replacePublicKey(ring, modified);
+ if (ring == null) {
+ log.add(LogLevel.ERROR, LogType.MSG_MG_ERROR_SECRET_DUMMY, indent);
+ return null;
+ }
indent -= 1;
}
@@ -652,6 +667,10 @@ public class UncachedKeyRing {
}
// replace pubkey in keyring
ring = replacePublicKey(ring, modified);
+ if (ring == null) {
+ log.add(LogLevel.ERROR, LogType.MSG_MG_ERROR_SECRET_DUMMY, indent);
+ return null;
+ }
indent -= 1;
}
@@ -694,7 +713,7 @@ public class UncachedKeyRing {
if (getMasterKeyId() != masterKeyId
|| !Arrays.equals(getFingerprint(), other.getFingerprint())) {
- log.add(LogLevel.ERROR, LogType.MSG_MG_HETEROGENEOUS, indent);
+ log.add(LogLevel.ERROR, LogType.MSG_MG_ERROR_HETEROGENEOUS, indent);
return null;
}
@@ -741,6 +760,10 @@ public class UncachedKeyRing {
} else {
// otherwise, just insert the public key
result = replacePublicKey(result, key);
+ if (result == null) {
+ log.add(LogLevel.ERROR, LogType.MSG_MG_ERROR_SECRET_DUMMY, indent);
+ return null;
+ }
}
continue;
}
@@ -769,6 +792,10 @@ public class UncachedKeyRing {
if (!key.isMasterKey()) {
if (modified != resultKey) {
result = replacePublicKey(result, modified);
+ if (result == null) {
+ log.add(LogLevel.ERROR, LogType.MSG_MG_ERROR_SECRET_DUMMY, indent);
+ return null;
+ }
}
continue;
}
@@ -793,6 +820,10 @@ public class UncachedKeyRing {
// If anything changed, save the updated (sub)key
if (modified != resultKey) {
result = replacePublicKey(result, modified);
+ if (result == null) {
+ log.add(LogLevel.ERROR, LogType.MSG_MG_ERROR_SECRET_DUMMY, indent);
+ return null;
+ }
}
}
@@ -807,7 +838,7 @@ public class UncachedKeyRing {
return new UncachedKeyRing(result);
} catch (IOException e) {
- log.add(LogLevel.ERROR, LogType.MSG_MG_FATAL_ENCODE, indent);
+ log.add(LogLevel.ERROR, LogType.MSG_MG_ERROR_ENCODE, indent);
return null;
}
@@ -838,16 +869,19 @@ public class UncachedKeyRing {
*/
private static PGPKeyRing replacePublicKey(PGPKeyRing ring, PGPPublicKey key) {
if (ring instanceof PGPPublicKeyRing) {
- return PGPPublicKeyRing.insertPublicKey((PGPPublicKeyRing) ring, key);
- }
- PGPSecretKeyRing secRing = (PGPSecretKeyRing) ring;
- PGPSecretKey sKey = secRing.getSecretKey(key.getKeyID());
- // TODO generate secret key with S2K dummy, if none exists! for now, just die.
- if (sKey == null) {
- throw new RuntimeException("dummy secret key generation not yet implemented");
+ PGPPublicKeyRing pubRing = (PGPPublicKeyRing) ring;
+ return PGPPublicKeyRing.insertPublicKey(pubRing, key);
+ } else {
+ PGPSecretKeyRing secRing = (PGPSecretKeyRing) ring;
+ PGPSecretKey sKey = secRing.getSecretKey(key.getKeyID());
+ // TODO generate secret key with S2K dummy, if none exists!
+ if (sKey == null) {
+ Log.e(Constants.TAG, "dummy secret key generation not yet implemented");
+ return null;
+ }
+ sKey = PGPSecretKey.replacePublicKey(sKey, key);
+ return PGPSecretKeyRing.insertSecretKey(secRing, sKey);
}
- sKey = PGPSecretKey.replacePublicKey(sKey, key);
- return PGPSecretKeyRing.insertSecretKey(secRing, sKey);
}
/** This method removes a subkey in a keyring.
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java
index 6e9f2fad6..5340222d3 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java
@@ -23,6 +23,7 @@ import android.database.Cursor;
import android.net.Uri;
import android.os.IBinder;
import android.os.ParcelFileDescriptor;
+import android.text.TextUtils;
import org.openintents.openpgp.IOpenPgpService;
import org.openintents.openpgp.OpenPgpMetadata;
@@ -185,7 +186,7 @@ public class OpenPgpService extends RemoteService {
} catch (PassphraseCacheService.KeyNotFoundException e) {
// secret key that is set for this account is deleted?
// show account config again!
- return getCreateAccountIntent(data, data.getStringExtra(OpenPgpApi.EXTRA_ACCOUNT_NAME));
+ return getCreateAccountIntent(data, getAccountName(data));
}
}
if (passphrase == null) {
@@ -564,6 +565,16 @@ public class OpenPgpService extends RemoteService {
return null;
}
+ private String getAccountName(Intent data) {
+ String accName = data.getStringExtra(OpenPgpApi.EXTRA_ACCOUNT_NAME);
+ // if no account name is given use name "default"
+ if (TextUtils.isEmpty(accName)) {
+ accName = "default";
+ }
+ Log.d(Constants.TAG, "accName: " + accName);
+ return accName;
+ }
+
// TODO: multi-threading
private final IOpenPgpService.Stub mBinder = new IOpenPgpService.Stub() {
@@ -574,12 +585,7 @@ public class OpenPgpService extends RemoteService {
return errorResult;
}
- String accName;
- if (data.getStringExtra(OpenPgpApi.EXTRA_ACCOUNT_NAME) != null) {
- accName = data.getStringExtra(OpenPgpApi.EXTRA_ACCOUNT_NAME);
- } else {
- accName = "default";
- }
+ String accName = getAccountName(data);
final AccountSettings accSettings = getAccSettings(accName);
if (accSettings == null) {
return getCreateAccountIntent(data, accName);
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/RemoteService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/RemoteService.java
index f70324e2c..e71b52ccd 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/RemoteService.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/RemoteService.java
@@ -27,6 +27,7 @@ import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.Signature;
import android.net.Uri;
import android.os.Binder;
+import android.text.TextUtils;
import org.openintents.openpgp.OpenPgpError;
import org.openintents.openpgp.util.OpenPgpApi;
@@ -160,7 +161,7 @@ public abstract class RemoteService extends Service {
*/
protected AccountSettings getAccSettings(String accountName) {
String currentPkg = getCurrentCallingPackage();
- Log.d(Constants.TAG, "accountName: " + accountName);
+ Log.d(Constants.TAG, "getAccSettings accountName: "+ accountName);
Uri uri = KeychainContract.ApiAccounts.buildByPackageAndAccountUri(currentPkg, accountName);
@@ -171,7 +172,7 @@ public abstract class RemoteService extends Service {
protected Intent getCreateAccountIntent(Intent data, String accountName) {
String packageName = getCurrentCallingPackage();
- Log.d(Constants.TAG, "accountName: " + accountName);
+ Log.d(Constants.TAG, "getCreateAccountIntent accountName: " + accountName);
Intent intent = new Intent(getBaseContext(), RemoteServiceActivity.class);
intent.setAction(RemoteServiceActivity.ACTION_CREATE_ACCOUNT);
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/OperationResultParcel.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/OperationResultParcel.java
index b69ecef34..142bf65cc 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/OperationResultParcel.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/OperationResultParcel.java
@@ -323,6 +323,7 @@ public class OperationResultParcel implements Parcelable {
MSG_KC_UID_BAD_TIME (R.string.msg_kc_uid_bad_time),
MSG_KC_UID_BAD_TYPE (R.string.msg_kc_uid_bad_type),
MSG_KC_UID_BAD (R.string.msg_kc_uid_bad),
+ MSG_KC_UID_CERT_DUP (R.string.msg_kc_uid_cert_dup),
MSG_KC_UID_DUP (R.string.msg_kc_uid_dup),
MSG_KC_UID_FOREIGN (R.string.msg_kc_uid_foreign),
MSG_KC_UID_NO_CERT (R.string.msg_kc_uid_no_cert),
@@ -332,10 +333,11 @@ public class OperationResultParcel implements Parcelable {
// keyring consolidation
+ MSG_MG_ERROR_SECRET_DUMMY(R.string.msg_mg_error_secret_dummy),
+ MSG_MG_ERROR_ENCODE(R.string.msg_mg_error_encode),
+ MSG_MG_ERROR_HETEROGENEOUS(R.string.msg_mg_error_heterogeneous),
MSG_MG_PUBLIC (R.string.msg_mg_public),
MSG_MG_SECRET (R.string.msg_mg_secret),
- MSG_MG_FATAL_ENCODE (R.string.msg_mg_fatal_encode),
- MSG_MG_HETEROGENEOUS (R.string.msg_mg_heterogeneous),
MSG_MG_NEW_SUBKEY (R.string.msg_mg_new_subkey),
MSG_MG_FOUND_NEW (R.string.msg_mg_found_new),
MSG_MG_UNCHANGED (R.string.msg_mg_unchanged),
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java
index 26df5cd26..4cd694d48 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java
@@ -309,7 +309,7 @@ public class EncryptActivity extends DrawerActivity implements EncryptActivityIn
String title = isContentMessage() ? getString(R.string.title_share_message)
: getString(R.string.title_share_file);
- // Disabled, produced an empty list on Sony (model will be inserted here)
+ // Disabled, produced an empty list on Huawei U8860 with Android Version 4.0.3
// // fallback on Android 2.3, otherwise we would get weird results
// if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
// return Intent.createChooser(prototype, title);
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java
index 18f805360..96fa11363 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java
@@ -288,7 +288,9 @@ public class ImportKeysActivity extends ActionBarActivity {
@Override
public void onPageSelected(int position) {
// cancel loader and clear list
- mListFragment.destroyLoader();
+ if (mListFragment != null) {
+ mListFragment.destroyLoader();
+ }
}
@Override
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/FoldableLinearLayout.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/FoldableLinearLayout.java
index 31e01a7fb..b456b61ab 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/FoldableLinearLayout.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/FoldableLinearLayout.java
@@ -24,7 +24,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
-import android.widget.ImageButton;
+import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
@@ -38,9 +38,7 @@ import org.sufficientlysecure.keychain.R;
android:layout_width="wrap_content"
android:layout_height="wrap_content"
custom:foldedLabel="@string/TEXT_TO_DISPLAY_WHEN_FOLDED"
- custom:unFoldedLabel="@string/TEXT_TO_DISPLAY_WHEN_UNFOLDED"
- custom:foldedIcon="ICON_NAME_FROM_FontAwesomeText_TO_USE_WHEN_FOLDED"
- custom:unFoldedIcon="ICON_NAME_FROM_FontAwesomeText_TO_USE_WHEN_UNFOLDED">
+ custom:unFoldedLabel="@string/TEXT_TO_DISPLAY_WHEN_UNFOLDED">
<include layout="@layout/ELEMENTS_TO_BE_FOLDED"/>
@@ -49,7 +47,7 @@ import org.sufficientlysecure.keychain.R;
*/
public class FoldableLinearLayout extends LinearLayout {
- private ImageButton mFoldableIcon;
+ private ImageView mFoldableIcon;
private boolean mFolded;
private boolean mHasMigrated = false;
private Integer mShortAnimationDuration = null;
@@ -139,7 +137,7 @@ public class FoldableLinearLayout extends LinearLayout {
}
private void initialiseInnerViews() {
- mFoldableIcon = (ImageButton) mFoldableLayout.findViewById(R.id.foldableIcon);
+ mFoldableIcon = (ImageView) mFoldableLayout.findViewById(R.id.foldableIcon);
mFoldableIcon.setImageResource(R.drawable.ic_action_expand);
mFoldableTextView = (TextView) mFoldableLayout.findViewById(R.id.foldableText);
mFoldableTextView.setText(mFoldedLabel);
diff --git a/OpenKeychain/src/main/res/layout-large/api_apps_list_activity.xml b/OpenKeychain/src/main/res/layout-large/api_apps_list_activity.xml
index 88686bbbc..af06614b9 100644
--- a/OpenKeychain/src/main/res/layout-large/api_apps_list_activity.xml
+++ b/OpenKeychain/src/main/res/layout-large/api_apps_list_activity.xml
@@ -1,20 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
-<FrameLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="horizontal" >
- <android.support.v4.widget.FixedDrawerLayout
- android:id="@+id/drawer_layout"
-
- android:layout_width="match_parent"
- android:layout_height="match_parent">
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="horizontal">
+ <android.support.v4.widget.FixedDrawerLayout
+ android:id="@+id/drawer_layout"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
- <include layout="@layout/drawer_list"/>
+ <include layout="@layout/drawer_list" />
</android.support.v4.widget.FixedDrawerLayout>
- <include layout="@layout/api_apps_list_content"/>
+ <include layout="@layout/api_apps_list_content" />
</FrameLayout> \ No newline at end of file
diff --git a/OpenKeychain/src/main/res/layout-large/decrypt_activity.xml b/OpenKeychain/src/main/res/layout-large/decrypt_activity.xml
index 9e9f37391..06487a982 100644
--- a/OpenKeychain/src/main/res/layout-large/decrypt_activity.xml
+++ b/OpenKeychain/src/main/res/layout-large/decrypt_activity.xml
@@ -1,19 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
-<FrameLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="horizontal"
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="horizontal"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <android.support.v4.widget.FixedDrawerLayout
+ android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
- <android.support.v4.widget.FixedDrawerLayout
- xmlns:bootstrapbutton="http://schemas.android.com/apk/res-auto"
- android:id="@+id/drawer_layout"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
- <include layout="@layout/drawer_list"/>
+ <include layout="@layout/drawer_list" />
</android.support.v4.widget.FixedDrawerLayout>
- <include layout="@layout/decrypt_content"/>
+ <include layout="@layout/decrypt_content" />
</FrameLayout> \ No newline at end of file
diff --git a/OpenKeychain/src/main/res/layout-large/encrypt_activity.xml b/OpenKeychain/src/main/res/layout-large/encrypt_activity.xml
index 355580fad..84b2891e3 100644
--- a/OpenKeychain/src/main/res/layout-large/encrypt_activity.xml
+++ b/OpenKeychain/src/main/res/layout-large/encrypt_activity.xml
@@ -1,19 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
-<FrameLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="horizontal"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="horizontal"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
<android.support.v4.widget.FixedDrawerLayout
- xmlns:bootstrapbutton="http://schemas.android.com/apk/res-auto"
- xmlns:fontawesometext="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
- <include layout="@layout/drawer_list"/>
+ <include layout="@layout/drawer_list" />
</android.support.v4.widget.FixedDrawerLayout>
- <include layout="@layout/encrypt_content"/>
+ <include layout="@layout/encrypt_content" />
</FrameLayout> \ No newline at end of file
diff --git a/OpenKeychain/src/main/res/layout-large/key_list_activity.xml b/OpenKeychain/src/main/res/layout-large/key_list_activity.xml
index 6abbea13f..039081cd7 100644
--- a/OpenKeychain/src/main/res/layout-large/key_list_activity.xml
+++ b/OpenKeychain/src/main/res/layout-large/key_list_activity.xml
@@ -1,18 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
-<FrameLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="horizontal"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="horizontal"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
<android.support.v4.widget.FixedDrawerLayout
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
- <include layout="@layout/drawer_list"/>
+ <include layout="@layout/drawer_list" />
</android.support.v4.widget.FixedDrawerLayout>
- <include layout="@layout/key_list_content"/>
+ <include layout="@layout/key_list_content" />
</FrameLayout> \ No newline at end of file
diff --git a/OpenKeychain/src/main/res/layout/api_account_settings_fragment.xml b/OpenKeychain/src/main/res/layout/api_account_settings_fragment.xml
index aaeae78e0..d8e1d9ad8 100644
--- a/OpenKeychain/src/main/res/layout/api_account_settings_fragment.xml
+++ b/OpenKeychain/src/main/res/layout/api_account_settings_fragment.xml
@@ -59,9 +59,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
custom:foldedLabel="@string/api_settings_show_advanced"
- custom:unFoldedLabel="@string/api_settings_hide_advanced"
- custom:foldedIcon="fa-chevron-right"
- custom:unFoldedIcon="fa-chevron-down">
+ custom:unFoldedLabel="@string/api_settings_hide_advanced">
<TextView
android:layout_width="match_parent"
diff --git a/OpenKeychain/src/main/res/layout/api_app_settings_fragment.xml b/OpenKeychain/src/main/res/layout/api_app_settings_fragment.xml
index ceea1d8a6..6ef31913a 100644
--- a/OpenKeychain/src/main/res/layout/api_app_settings_fragment.xml
+++ b/OpenKeychain/src/main/res/layout/api_app_settings_fragment.xml
@@ -40,9 +40,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
custom:foldedLabel="@string/api_settings_show_info"
- custom:unFoldedLabel="@string/api_settings_hide_info"
- custom:foldedIcon="fa-chevron-right"
- custom:unFoldedIcon="fa-chevron-down">
+ custom:unFoldedLabel="@string/api_settings_hide_info">
<TextView
android:layout_width="match_parent"
@@ -67,7 +65,7 @@
android:id="@+id/api_app_settings_package_signature"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:text="Base64 encoded signature"
+ android:text="Base64 encoded hash of signature"
android:textAppearance="?android:attr/textAppearanceSmall" />
</org.sufficientlysecure.keychain.ui.widget.FoldableLinearLayout>
diff --git a/OpenKeychain/src/main/res/layout/foldable_linearlayout.xml b/OpenKeychain/src/main/res/layout/foldable_linearlayout.xml
index 3d2fb688b..13cf7c225 100644
--- a/OpenKeychain/src/main/res/layout/foldable_linearlayout.xml
+++ b/OpenKeychain/src/main/res/layout/foldable_linearlayout.xml
@@ -11,14 +11,13 @@
android:orientation="horizontal"
android:clickable="true">
- <ImageButton
+ <ImageView
android:id="@+id/foldableIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginRight="10dp"
- android:src="@drawable/ic_action_expand"
- android:background="@drawable/button_no_style"/>
+ android:src="@drawable/ic_action_expand"/>
<TextView
android:id="@+id/foldableText"
diff --git a/OpenKeychain/src/main/res/layout/key_list_activity.xml b/OpenKeychain/src/main/res/layout/key_list_activity.xml
index 297fc526e..03ef85381 100644
--- a/OpenKeychain/src/main/res/layout/key_list_activity.xml
+++ b/OpenKeychain/src/main/res/layout/key_list_activity.xml
@@ -4,16 +4,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
- <LinearLayout
- android:orientation="vertical"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <include layout="@layout/notify_area" />
-
- <include layout="@layout/key_list_content" />
-
- </LinearLayout>
+ <include layout="@layout/key_list_content" />
<include layout="@layout/drawer_list" />
diff --git a/OpenKeychain/src/main/res/layout/key_list_content.xml b/OpenKeychain/src/main/res/layout/key_list_content.xml
index e58e42961..66b009c78 100644
--- a/OpenKeychain/src/main/res/layout/key_list_content.xml
+++ b/OpenKeychain/src/main/res/layout/key_list_content.xml
@@ -1,14 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
-<FrameLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <include layout="@layout/notify_area" />
+
+ <FrameLayout
android:id="@+id/content_frame"
android:layout_marginLeft="@dimen/drawer_content_padding"
android:layout_width="match_parent"
android:layout_height="match_parent">
- <fragment
+ <fragment
android:id="@+id/key_list_fragment"
android:name="org.sufficientlysecure.keychain.ui.KeyListFragment"
android:layout_width="match_parent"
- android:layout_height="match_parent"/>
-</FrameLayout> \ No newline at end of file
+ android:layout_height="match_parent" />
+ </FrameLayout>
+
+</LinearLayout> \ No newline at end of file
diff --git a/OpenKeychain/src/main/res/raw-cs/help_changelog.html b/OpenKeychain/src/main/res/raw-cs/help_changelog.html
index 687fd99b9..41ec2cad6 100644
--- a/OpenKeychain/src/main/res/raw-cs/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw-cs/help_changelog.html
@@ -12,6 +12,7 @@
<li>New icons to show status of key (by Brennan Novak)</li>
<li>Important bug fix: Importing of large key collections from a file is now possible</li>
<li>Notification showing cached passphrases</li>
+<li>Keys are connected to Android's contacts</li>
</ul>
<p>This release wouldn't be possible without the work of Vincent Breitmoser (GSoC 2014), mar-v-in (GSoC 2014), Daniel Albert, Art O Cathain, Daniel Haß, Tim Bray, Thialfihar</p>
diff --git a/OpenKeychain/src/main/res/raw-de/help_changelog.html b/OpenKeychain/src/main/res/raw-de/help_changelog.html
index a706b92d4..0a8f95e83 100644
--- a/OpenKeychain/src/main/res/raw-de/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw-de/help_changelog.html
@@ -12,6 +12,7 @@
<li>Neue Icons zum Anzeigen des Schlüsselstatus' (von Brennan Novak)</li>
<li>Wichtige Ausbesserung eines Bugs: Importieren größerer Schlüsselsammlungen aus einer Datei ist nun möglich </li>
<li>Benachrichtigung, die die Passphrasen im Cache anzeigt </li>
+<li>Keys are connected to Android's contacts</li>
</ul>
<p>Dieser Release wäre ohne die Arbeit von Vincent Breitmoser (GSoC 2014), mar-v-in (GSoC 2014), Daniel Albert, Art O Cathain, Daniel Haß, Tim Bray und Thialfihar nicht möglich </p>
diff --git a/OpenKeychain/src/main/res/raw-es/help_changelog.html b/OpenKeychain/src/main/res/raw-es/help_changelog.html
index 0530f3999..cf778141a 100644
--- a/OpenKeychain/src/main/res/raw-es/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw-es/help_changelog.html
@@ -12,6 +12,7 @@
<li>Nuevos iconos para mostrar el estado de la clave (por Brennan Novak)</li>
<li>Importante reparacion de fallo: Ahora es posible la importación de grandes colecciones de claves desde un fichero</li>
<li>Notificación que muestra las frases contraseña almacenadas en caché</li>
+<li>Las claves están conectadas con los contactos de Android</li>
</ul>
<p>Esta versión no sería posible sin el trabajo de Vincent Breitmoser (GSoC 2014), mar-v-in (GSoC 2014), Daniel Albert, Art O Cathain, Daniel Haß, Tim Bray, Thialfihar</p>
diff --git a/OpenKeychain/src/main/res/raw-et/help_changelog.html b/OpenKeychain/src/main/res/raw-et/help_changelog.html
index 687fd99b9..41ec2cad6 100644
--- a/OpenKeychain/src/main/res/raw-et/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw-et/help_changelog.html
@@ -12,6 +12,7 @@
<li>New icons to show status of key (by Brennan Novak)</li>
<li>Important bug fix: Importing of large key collections from a file is now possible</li>
<li>Notification showing cached passphrases</li>
+<li>Keys are connected to Android's contacts</li>
</ul>
<p>This release wouldn't be possible without the work of Vincent Breitmoser (GSoC 2014), mar-v-in (GSoC 2014), Daniel Albert, Art O Cathain, Daniel Haß, Tim Bray, Thialfihar</p>
diff --git a/OpenKeychain/src/main/res/raw-fr/help_changelog.html b/OpenKeychain/src/main/res/raw-fr/help_changelog.html
index 309d7ce76..9d58256a7 100644
--- a/OpenKeychain/src/main/res/raw-fr/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw-fr/help_changelog.html
@@ -12,6 +12,7 @@
<li>Nouvelles icônes d'état des clefs (par Brennan Novak)</li>
<li>Correctif important de bogue : l'importation de grandes collections de clefs à partir d'un fichier est maintenant possible</li>
<li>Notification montrant les phrases de passe en cache</li>
+<li>Les clefs sont connectées aux contacts d'Android</li>
</ul>
<p>Cette version ne serait pas possible sans le travail de Vincent Breitmoser (GSoC 2014), mar-v-in (GSoC 2014), Daniel Albert, Art O Cathain, Daniel Haß, Tim Bray, Thialfihar</p>
diff --git a/OpenKeychain/src/main/res/raw-it/help_changelog.html b/OpenKeychain/src/main/res/raw-it/help_changelog.html
index 9134bc4a2..c4cae4d47 100644
--- a/OpenKeychain/src/main/res/raw-it/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw-it/help_changelog.html
@@ -12,6 +12,7 @@
<li>Nuove icone per mostrare lo stato delle chiavi (di Brennan Novak)</li>
<li>Correzione bug importante: Importazione di grandi collezioni di chiavi da un file ora è possibile</li>
<li>Notifiche mostrando la frase di accesso nella cache</li>
+<li>Le chiavi sono connesse ai contatti di Android</li>
</ul>
<p>Questo rilascio non sarebbe stato possibile senza il lavoro di Vincent Breitmoser (GSoC 2014), mar-v-in (GSoC 2014), Daniel Albert, Art O Cathain, Daniel Haß, Tim Bray, Thialfihar</p>
diff --git a/OpenKeychain/src/main/res/raw-ja/help_changelog.html b/OpenKeychain/src/main/res/raw-ja/help_changelog.html
index 207c9d895..0f467c407 100644
--- a/OpenKeychain/src/main/res/raw-ja/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw-ja/help_changelog.html
@@ -12,6 +12,7 @@
<li>鍵のステータス表示の新しいアイコン(Brennan Novak提供)</li>
<li>重要なバグ修正: 巨大な鍵コレクションをファイルからインポートするのが可能になりました</li>
<li>キャッシュしたパスフレーズの通知表示</li>
+<li>鍵のアドレスをAndroidの連絡先と連携するようにした</li>
</ul>
<p> Vincent Breitmoser (GSoC 2014), mar-v-in (GSoC 2014), Daniel Albert, Art O Cathain, Daniel Haß, Tim Bray, Thialfiharの働きなくしてはこのリリースはありませんでした</p>
diff --git a/OpenKeychain/src/main/res/raw-nl/help_changelog.html b/OpenKeychain/src/main/res/raw-nl/help_changelog.html
index 0b6fabc24..9edbb718e 100644
--- a/OpenKeychain/src/main/res/raw-nl/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw-nl/help_changelog.html
@@ -12,6 +12,7 @@
<li>New icons to show status of key (by Brennan Novak)</li>
<li>Important bug fix: Importing of large key collections from a file is now possible</li>
<li>Notification showing cached passphrases</li>
+<li>Keys are connected to Android's contacts</li>
</ul>
<p>This release wouldn't be possible without the work of Vincent Breitmoser (GSoC 2014), mar-v-in (GSoC 2014), Daniel Albert, Art O Cathain, Daniel Haß, Tim Bray, Thialfihar</p>
diff --git a/OpenKeychain/src/main/res/raw-pl/help_changelog.html b/OpenKeychain/src/main/res/raw-pl/help_changelog.html
index eb2dc26c1..2fb953cd2 100644
--- a/OpenKeychain/src/main/res/raw-pl/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw-pl/help_changelog.html
@@ -12,6 +12,7 @@
<li>New icons to show status of key (by Brennan Novak)</li>
<li>Important bug fix: Importing of large key collections from a file is now possible</li>
<li>Notification showing cached passphrases</li>
+<li>Keys are connected to Android's contacts</li>
</ul>
<p>This release wouldn't be possible without the work of Vincent Breitmoser (GSoC 2014), mar-v-in (GSoC 2014), Daniel Albert, Art O Cathain, Daniel Haß, Tim Bray, Thialfihar</p>
diff --git a/OpenKeychain/src/main/res/raw-pt/help_changelog.html b/OpenKeychain/src/main/res/raw-pt/help_changelog.html
index 687fd99b9..41ec2cad6 100644
--- a/OpenKeychain/src/main/res/raw-pt/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw-pt/help_changelog.html
@@ -12,6 +12,7 @@
<li>New icons to show status of key (by Brennan Novak)</li>
<li>Important bug fix: Importing of large key collections from a file is now possible</li>
<li>Notification showing cached passphrases</li>
+<li>Keys are connected to Android's contacts</li>
</ul>
<p>This release wouldn't be possible without the work of Vincent Breitmoser (GSoC 2014), mar-v-in (GSoC 2014), Daniel Albert, Art O Cathain, Daniel Haß, Tim Bray, Thialfihar</p>
diff --git a/OpenKeychain/src/main/res/raw-ru/help_changelog.html b/OpenKeychain/src/main/res/raw-ru/help_changelog.html
index 6d9c92e9b..6f33e8e01 100644
--- a/OpenKeychain/src/main/res/raw-ru/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw-ru/help_changelog.html
@@ -12,6 +12,7 @@
<li>New icons to show status of key (by Brennan Novak)</li>
<li>Important bug fix: Importing of large key collections from a file is now possible</li>
<li>Notification showing cached passphrases</li>
+<li>Keys are connected to Android's contacts</li>
</ul>
<p>This release wouldn't be possible without the work of Vincent Breitmoser (GSoC 2014), mar-v-in (GSoC 2014), Daniel Albert, Art O Cathain, Daniel Haß, Tim Bray, Thialfihar</p>
diff --git a/OpenKeychain/src/main/res/raw-sl/help_changelog.html b/OpenKeychain/src/main/res/raw-sl/help_changelog.html
index 635d02780..d9da74e00 100644
--- a/OpenKeychain/src/main/res/raw-sl/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw-sl/help_changelog.html
@@ -12,6 +12,7 @@
<li>New icons to show status of key (by Brennan Novak)</li>
<li>Important bug fix: Importing of large key collections from a file is now possible</li>
<li>Notification showing cached passphrases</li>
+<li>Keys are connected to Android's contacts</li>
</ul>
<p>This release wouldn't be possible without the work of Vincent Breitmoser (GSoC 2014), mar-v-in (GSoC 2014), Daniel Albert, Art O Cathain, Daniel Haß, Tim Bray, Thialfihar</p>
diff --git a/OpenKeychain/src/main/res/raw-tr/help_changelog.html b/OpenKeychain/src/main/res/raw-tr/help_changelog.html
index 687fd99b9..41ec2cad6 100644
--- a/OpenKeychain/src/main/res/raw-tr/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw-tr/help_changelog.html
@@ -12,6 +12,7 @@
<li>New icons to show status of key (by Brennan Novak)</li>
<li>Important bug fix: Importing of large key collections from a file is now possible</li>
<li>Notification showing cached passphrases</li>
+<li>Keys are connected to Android's contacts</li>
</ul>
<p>This release wouldn't be possible without the work of Vincent Breitmoser (GSoC 2014), mar-v-in (GSoC 2014), Daniel Albert, Art O Cathain, Daniel Haß, Tim Bray, Thialfihar</p>
diff --git a/OpenKeychain/src/main/res/raw-uk/help_changelog.html b/OpenKeychain/src/main/res/raw-uk/help_changelog.html
index f28210fd0..1837a243e 100644
--- a/OpenKeychain/src/main/res/raw-uk/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw-uk/help_changelog.html
@@ -12,6 +12,7 @@
<li>Нові піктограми для показу стану ключа (від Бренана Новака)</li>
<li>Виправлення важливої вади: зараз став можливим імпорт великих збірок ключів із файлу</li>
<li>Сповіщення для показу кешованих парольних фраз</li>
+<li>Keys are connected to Android's contacts</li>
</ul>
<p>Ця версія була б неможливою без роботи Вінсента Брейтмозера (GSoC 2014), mar-v-in (GSoC 2014), Даніеля Альберта, Арт О'Катен, Даніеля Хасс, Тіма Брея, Thialfihar</p>
diff --git a/OpenKeychain/src/main/res/raw-zh/help_changelog.html b/OpenKeychain/src/main/res/raw-zh/help_changelog.html
index 687fd99b9..41ec2cad6 100644
--- a/OpenKeychain/src/main/res/raw-zh/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw-zh/help_changelog.html
@@ -12,6 +12,7 @@
<li>New icons to show status of key (by Brennan Novak)</li>
<li>Important bug fix: Importing of large key collections from a file is now possible</li>
<li>Notification showing cached passphrases</li>
+<li>Keys are connected to Android's contacts</li>
</ul>
<p>This release wouldn't be possible without the work of Vincent Breitmoser (GSoC 2014), mar-v-in (GSoC 2014), Daniel Albert, Art O Cathain, Daniel Haß, Tim Bray, Thialfihar</p>
diff --git a/OpenKeychain/src/main/res/values-de/strings.xml b/OpenKeychain/src/main/res/values-de/strings.xml
index 3b8fe1e36..6c5e12266 100644
--- a/OpenKeychain/src/main/res/values-de/strings.xml
+++ b/OpenKeychain/src/main/res/values-de/strings.xml
@@ -10,7 +10,7 @@
<string name="title_edit_key">Schlüssel bearbeiten</string>
<string name="title_preferences">Einstellungen</string>
<string name="title_api_registered_apps">Apps</string>
- <string name="title_key_server_preference">Schlüsselserver Einstellungen</string>
+ <string name="title_key_server_preference">Schlüsselserver</string>
<string name="title_change_passphrase">Passwort ändern</string>
<string name="title_share_fingerprint_with">Teile Fingerabdruck über…</string>
<string name="title_share_key">Teile Schlüssel über...</string>
@@ -49,13 +49,13 @@
<string name="btn_save">Speichern</string>
<string name="btn_do_not_save">Abbrechen</string>
<string name="btn_delete">Löschen</string>
- <string name="btn_no_date">verfällt nie</string>
+ <string name="btn_no_date">Kein Ablaufdatum</string>
<string name="btn_okay">Okay</string>
<string name="btn_export_to_server">Auf Schlüsselserver hochladen</string>
<string name="btn_next">Weiter</string>
<string name="btn_back">Zurück</string>
<string name="btn_lookup_key">Schlüssel nachschlagen</string>
- <string name="btn_share_encrypted_signed">Entschlüsseln und teilen</string>
+ <string name="btn_share_encrypted_signed">Verschlüsseln und teilen</string>
<string name="btn_view_cert_key">Beglaubigungsschlüssel anzeigen</string>
<string name="btn_create_key">Schlüssel erzeugen</string>
<string name="btn_add_files">Datei(en) hinzufügen</string>
@@ -73,7 +73,7 @@
<string name="menu_select_all">Alles auswählen</string>
<string name="menu_add_keys">Schlüssel hinzufügen</string>
<string name="menu_export_all_keys">Alle Schlüssel exportieren</string>
- <string name="menu_advanced">Erweiterte Info anzeigen</string>
+ <string name="menu_advanced">Erweiterte Infos anzeigen</string>
<!--label-->
<string name="label_message">Nachricht</string>
<string name="label_file">Datei</string>
@@ -83,7 +83,7 @@
<string name="label_passphrase">Passwort</string>
<string name="label_passphrase_again">Passwort wiederholen</string>
<string name="label_algorithm">Algorithmus</string>
- <string name="label_ascii_armor">ASCII Armor Datei</string>
+ <string name="label_ascii_armor">Datei: ASCII Armor</string>
<string name="label_file_ascii_armor">Datei: ASCII Armor</string>
<string name="label_write_version_header">Lass andere wissen dass du OpenKeychain nutzt</string>
<string name="label_write_version_header_summary">Fügt \'OpenKeychain v2.7\' zu OpenPGP Signaturen, DAten und exportierten Schlüsseln hinzu</string>
@@ -116,8 +116,8 @@
<string name="no_key">&lt;kein Schlüssel&gt;</string>
<string name="can_encrypt">kann verschlüsseln</string>
<string name="can_sign">kann signieren</string>
- <string name="can_certify">kann bestätigen</string>
- <string name="can_certify_not">kann nicht bestätigen</string>
+ <string name="can_certify">kann beglaubigen</string>
+ <string name="can_certify_not">kann nicht beglaubigen</string>
<string name="expired">abgelaufen</string>
<string name="revoked">widerrufen</string>
<plurals name="n_keys">
@@ -170,9 +170,9 @@
<string name="enter_passphrase_twice">Das Passwort bitte zweimal eingeben.</string>
<string name="select_encryption_key">Mindestens einen Schlüssel zum Verschlüsseln auswählen.</string>
<string name="select_encryption_or_signature_key">Mindestens einen Schlüssel zum Verschlüsseln oder einen zum Signieren auswählen.</string>
- <string name="specify_file_to_encrypt_to">Bitte angeben, in welche Datei verschlüsselt werden soll.\nWARNUNG: Datei wird überschrieben, wenn sie bereits existiert. </string>
- <string name="specify_file_to_decrypt_to">Bitte angeben, in welche Datei entschlüsselt werden soll.\nWARNUNG: Datei wird überschrieben, wenn sie bereits existiert. </string>
- <string name="specify_file_to_export_to">Bitte angeben, in welche Datei exportiert werden soll.\nWARNUNG: Datei wird überschrieben, wenn sie bereits existiert. </string>
+ <string name="specify_file_to_encrypt_to">Bitte angeben in welche Datei verschlüsselt werden soll.\nWARNUNG: Datei wird überschrieben, wenn sie bereits existiert. </string>
+ <string name="specify_file_to_decrypt_to">Bitte angeben,in welche Datei entschlüsselt werden soll.\nWARNUNG: Datei wird überschrieben, wenn sie bereits existiert. </string>
+ <string name="specify_file_to_export_to">Bitte angeben in welche Datei exportiert werden soll.\nWARNUNG: Datei wird überschrieben, wenn sie bereits existiert. </string>
<string name="key_deletion_confirmation_multi">Möchtest du wirklich alle ausgewählten öffentlichen Schlüssel löschen?\nDies kann nicht rückgängig gemacht werden!</string>
<string name="secret_key_deletion_confirmation">Soll der PRIVATE Schlüssel \'%s\' wirklich gelöscht werden?\nDies kann nicht rückgängig gemacht werden!</string>
<string name="public_key_deletetion_confirmation">Soll der öffentliche Schlüssel \'%s\' wirklich gelöscht werden?\nDies kann nicht rückgängig gemacht werden! </string>
diff --git a/OpenKeychain/src/main/res/values-es/strings.xml b/OpenKeychain/src/main/res/values-es/strings.xml
index cc1a29c34..16d60dc82 100644
--- a/OpenKeychain/src/main/res/values-es/strings.xml
+++ b/OpenKeychain/src/main/res/values-es/strings.xml
@@ -275,6 +275,9 @@
<string name="progress_decompressing_data">descomprimiendo los datos...</string>
<string name="progress_verifying_integrity">verificando la integridad...</string>
<string name="progress_deleting_securely">borrando \'%s\' de forma segura…</string>
+ <string name="progress_deleting">borrando claves...</string>
+ <string name="progress_con_saving">consolidación: guardando en caché...</string>
+ <string name="progress_con_reimport">consolidación: reimportando</string>
<!--action strings-->
<string name="hint_keyserver_search_hint">Nombre/Correo electrónico/Identidad de clave...</string>
<string name="hint_keybase_search_hint">Nombre/Correo electrónico/Prueba/Clave...</string>
@@ -560,7 +563,7 @@
<string name="msg_kc_uid_bad_time">Eliminando identidad de usuario con marca de tiempo futura</string>
<string name="msg_kc_uid_bad_type">Eliminando certificado de identidad de usuario, de tipo desconocido (%s)</string>
<string name="msg_kc_uid_bad">Eliminando auto-certificado defectuoso para la identidad de usuario \"%s\"</string>
- <string name="msg_kc_uid_dup">Eliminando auto-certificado desactualizado para el identificador de usuario \"%s\"</string>
+ <string name="msg_kc_uid_cert_dup">Eliminando auto-certificado desactualizado para el identificador de usuario \"%s\"</string>
<string name="msg_kc_uid_foreign">Eliminando certificado ajeno de identidad de usuario por %s</string>
<string name="msg_kc_uid_revoke_dup">Eliminando certificado redundate de revocación para la identidad de usuario \"%s\"</string>
<string name="msg_kc_uid_revoke_old">Eliminando certificado desactualizado de revocación para la identidad de usuario \"%s\"</string>
@@ -569,8 +572,8 @@
<!--Keyring merging log entries-->
<string name="msg_mg_public">Incorporándolas en el juego de claves públicas %s</string>
<string name="msg_mg_secret">Incorporándolas en el juego de claves secretas (privadas) %s</string>
- <string name="msg_mg_fatal_encode">Error fatal codificando la firma</string>
- <string name="msg_mg_heterogeneous">¡Se intentaron fusionar juegos de claves con diferentes huellas de validación de claves!</string>
+ <string name="msg_mg_error_encode">Error fatal codificando la firma</string>
+ <string name="msg_mg_error_heterogeneous">¡Se intentaron fusionar juegos de claves con diferentes huellas de validación de claves!</string>
<string name="msg_mg_new_subkey">Añadiendo nueva subclave %s</string>
<string name="msg_mg_found_new">Se encontraron %s nuevos certificados en el juego de claves</string>
<string name="msg_mg_unchanged">No hay nuevos certificados</string>
@@ -600,12 +603,14 @@
<string name="msg_mf_error_sig">¡Excepción con la firma!</string>
<string name="msg_mf_master">Modificando certificaciones maestras</string>
<string name="msg_mf_passphrase">Cambiando frase contraseña para el juego de claves (keyring)...</string>
+ <string name="msg_mf_passphrase_key">Re-cifrando subclave %s con nueva frase contraseña</string>
<string name="msg_mf_passphrase_empty_retry">Fallo al establecer nueva frase contraseña, intentándolo de nuevo con una antigua frase contraseña vacía</string>
<string name="msg_mf_passphrase_fail">¡La frase contraseña para la subclave no pudo cambiarse! (¿Tiene la subclave una diferente de la de las otras claves?)</string>
<string name="msg_mf_primary_replace_old">Reemplazando certificado de la anterior identidad de usuario primaria </string>
<string name="msg_mf_primary_new">Generando nuevo certificado para nueva identidad de usuario primaria</string>
<string name="msg_mf_subkey_change">Modificando subclave %s</string>
<string name="msg_mf_error_subkey_missing">¡Se intentó operar sobre una subclave desaparecida %s!</string>
+ <string name="msg_mf_subkey_new">Añadiendo nueva subclave de tipo %2$s (%1$s bits)</string>
<string name="msg_mf_subkey_new_id">Nueva identidad de subclave: %s</string>
<string name="msg_mf_error_past_expiry">¡La fecha de expiración no puede ser del pasado!</string>
<string name="msg_mf_subkey_revoke">Revocando subclave %s</string>
@@ -615,9 +620,11 @@
<string name="msg_mf_uid_revoke">Revocando identidad de usuario %s</string>
<string name="msg_mf_uid_error_empty">¡La identidad de usuario no debe estar vacía!</string>
<string name="msg_mf_unlock_error">¡Error desbloqueando juego de claves!</string>
- <string name="msg_mf_unlock">Desbloqueando juego de claves</string>
+ <string name="msg_mf_unlock">Desbloqueando juego de claves (keyring)</string>
<!--Consolidate-->
<string name="msg_con">Consolidando base de datos</string>
+ <string name="msg_con_error_bad_state">¡La consolidación se inició cuando ninguna base de datos estaba cacheada! Probablemente esto es un error de programación, por favor consigne un informe de fallo.</string>
+ <string name="msg_con_error_concurrent">¡Consolidación abortada, ejecutándose ya en otro hilo!</string>
<string name="msg_con_save_secret">Guardando juegos de claves secretas (privadas)</string>
<string name="msg_con_save_public">Guardando juegos de claves públicas</string>
<string name="msg_con_db_clear">Limpiando base de datos</string>
@@ -646,7 +653,8 @@
<item quantity="other">Reimportando %d claves secretas (privadas)</item>
</plurals>
<string name="msg_con_reimport_secret_skip">No hay claves públicas a reimportar, omitiendo...</string>
- <string name="msg_con_warn_delete_public">Excepción borrando fichero de caché público</string>
+ <string name="msg_con_warn_delete_public">Excepción borrando fichero de caché de claves públicas</string>
+ <string name="msg_con_warn_delete_secret">Excepción al borrar fichero de caché de claves secretas (privadas)</string>
<!--PassphraseCache-->
<string name="passp_cache_notif_click_to_clear">Haga clic para limpiar las frases contraseña almacenadas en caché</string>
<string name="passp_cache_notif_n_keys">OpenKeychain ha almacenado en caché %d frases contraseña</string>
@@ -660,6 +668,7 @@
<string name="label_user_id">Identidad</string>
<string name="unknown_uid">&lt;desconocido&gt;</string>
<string name="empty_certs">No hay certificados para esta clave</string>
+ <string name="certs_text">Sólo los auto-certificados y los certificados creados con las claves de usted se muestran aquí.</string>
<string name="section_uids_to_certify">Identidades a certificar</string>
<string name="label_revocation">Razón de la revocación</string>
<string name="label_verify_status">Estado de la verificación</string>
diff --git a/OpenKeychain/src/main/res/values-fr/strings.xml b/OpenKeychain/src/main/res/values-fr/strings.xml
index e25f4cd05..f383ac40b 100644
--- a/OpenKeychain/src/main/res/values-fr/strings.xml
+++ b/OpenKeychain/src/main/res/values-fr/strings.xml
@@ -275,6 +275,9 @@
<string name="progress_decompressing_data">décompression des données...</string>
<string name="progress_verifying_integrity">vérification de l\'intégrité...</string>
<string name="progress_deleting_securely">suppression sûre de « %s »...</string>
+ <string name="progress_deleting">suppression des clefs...</string>
+ <string name="progress_con_saving">consolider : enregistrement dans le cache...</string>
+ <string name="progress_con_reimport">consolider : réimportation...</string>
<!--action strings-->
<string name="hint_keyserver_search_hint">Nom/courriel/ID de clef...</string>
<string name="hint_keybase_search_hint">Nom/courriel/preuve/clef...</string>
@@ -560,7 +563,7 @@
<string name="msg_kc_uid_bad_time">Suppression de l\'ID d\'utilisateur ayant une estampille temporelle dans le futur</string>
<string name="msg_kc_uid_bad_type">Suppression du certificat d\'ID d\'utilisateur de type inconnu (%s)</string>
<string name="msg_kc_uid_bad">Suppression du mauvais auto-certificat pour l\'ID d\'utilisateur « %s »</string>
- <string name="msg_kc_uid_dup">Suppression de l\'auto-certificat périmé pour l\'ID d\'utilisateur « %s »</string>
+ <string name="msg_kc_uid_cert_dup">Suppression de l\'auto-certificat périmé pour l\'ID d\'utilisateur « %s »</string>
<string name="msg_kc_uid_foreign">Suppression du certificat étranger d\'ID d\'utilisateur par %s</string>
<string name="msg_kc_uid_revoke_dup">Suppression du certificat de révocation redondant pour l\'ID d\'utilisateur « %s »</string>
<string name="msg_kc_uid_revoke_old">Suppression du certificat de révocation périmé pour l\'ID d\'utilisateur « %s »</string>
@@ -569,8 +572,8 @@
<!--Keyring merging log entries-->
<string name="msg_mg_public">Fusion vers le trousseau public %s</string>
<string name="msg_mg_secret">Fusion vers le trousseau secret %s</string>
- <string name="msg_mg_fatal_encode">Erreur fatale lors de l\'encodage de la signature</string>
- <string name="msg_mg_heterogeneous">Il a été tenté de fusionner des trousseaux avec des empreintes différentes !</string>
+ <string name="msg_mg_error_encode">Erreur fatale lors de l\'encodage de la signature</string>
+ <string name="msg_mg_error_heterogeneous">Il a été tenté de fusionner des trousseaux avec des empreintes différentes !</string>
<string name="msg_mg_new_subkey">Ajout de la nouvelle sous-clef %s</string>
<string name="msg_mg_found_new">%s nouveaux certificats trouvés dans le trousseau</string>
<string name="msg_mg_unchanged">Aucun nouveau certificat</string>
@@ -600,12 +603,14 @@
<string name="msg_mf_error_sig">Exception de signature !</string>
<string name="msg_mf_master">Modification des certifications maîtresses</string>
<string name="msg_mf_passphrase">Changement de la phrase de passe pour le trousseau...</string>
+ <string name="msg_mf_passphrase_key">Rechiffrement de la sous-clef %s avec la nouvelle phrase de passe</string>
<string name="msg_mf_passphrase_empty_retry">Échec lors de la définition de la nouvelle phrase de passe, nouvel essai avec une ancienne phrase de passe vide</string>
<string name="msg_mf_passphrase_fail">La phrase de passe de la sous-clef n\'a pas pu être changée ! (Est-elle différente des autres clefs ?)</string>
<string name="msg_mf_primary_replace_old">Remplacement du certificat de l\'ID d\'utilisateur principal précédent</string>
<string name="msg_mf_primary_new">Génération d\'un nouveau certificat pour le nouvel ID d\'utilisateur principal</string>
<string name="msg_mf_subkey_change">Modification de la sous-clef %s</string>
<string name="msg_mf_error_subkey_missing">Une action a été tentée sur la sous-clef manquante %s !</string>
+ <string name="msg_mf_subkey_new">Ajout de la nouvelle sous-clef de type %2$s (%1$s bit)</string>
<string name="msg_mf_subkey_new_id">Nouvelle ID de sous-clef : %s</string>
<string name="msg_mf_error_past_expiry">La date d\'expiration ne peut pas être dans le passé !</string>
<string name="msg_mf_subkey_revoke">Révocation de la sous-clef %s</string>
@@ -618,6 +623,8 @@
<string name="msg_mf_unlock">Déverrouillage du trousseau</string>
<!--Consolidate-->
<string name="msg_con">Consolidation de la base de données</string>
+ <string name="msg_con_error_bad_state">La consolidation a été commencée alors qu\'aucune base de données n\'était en cache ! Ceci est probablement une erreur de programmation, veuillez remplir un rapport de bogue !</string>
+ <string name="msg_con_error_concurrent">La consolidation a été abandonnée, elle est déjà en cours sur un autre exétron !</string>
<string name="msg_con_save_secret">Enregistrement des trousseaux secrets</string>
<string name="msg_con_save_public">Enregistrement des trousseaux publiques</string>
<string name="msg_con_db_clear">Nettoyage de la base de données</string>
@@ -646,7 +653,8 @@
<item quantity="other">Réimportation de %d clefs secrètes</item>
</plurals>
<string name="msg_con_reimport_secret_skip">Aucune clef secrète à réimporter, étape ignorée...</string>
- <string name="msg_con_warn_delete_public">Une exception a eu lieu lors de la suppression du fichier de cache publique</string>
+ <string name="msg_con_warn_delete_public">Une exception a eu lieu lors de la suppression du fichier de cache public</string>
+ <string name="msg_con_warn_delete_secret">Une exception a eu lieu lors de la suppression du fichier de cache secret</string>
<!--PassphraseCache-->
<string name="passp_cache_notif_click_to_clear">Cliquer ici pour effacer les phrases de passe mises en cache</string>
<string name="passp_cache_notif_n_keys">OpenKeychain a mis en cache %d phrases de passe</string>
@@ -660,6 +668,7 @@
<string name="label_user_id">identité</string>
<string name="unknown_uid">&lt;inconnu&gt;</string>
<string name="empty_certs">Aucun certificat pour cette clef</string>
+ <string name="certs_text">Seuls les auto-certificats et les certificats créés avec vos clefs sont affichés ici.</string>
<string name="section_uids_to_certify">Identités à certifier</string>
<string name="label_revocation">Raison de la révocation</string>
<string name="label_verify_status">État de vérification</string>
diff --git a/OpenKeychain/src/main/res/values-it/strings.xml b/OpenKeychain/src/main/res/values-it/strings.xml
index 4cb029508..e4e08ca78 100644
--- a/OpenKeychain/src/main/res/values-it/strings.xml
+++ b/OpenKeychain/src/main/res/values-it/strings.xml
@@ -275,6 +275,9 @@
<string name="progress_decompressing_data">decompressione dati...</string>
<string name="progress_verifying_integrity">verifica integrita\'...</string>
<string name="progress_deleting_securely">eliminazione sicura di \'%s\'...</string>
+ <string name="progress_deleting">cancellazione chiavi...</string>
+ <string name="progress_con_saving">consolidazione: salvataggio della cache...</string>
+ <string name="progress_con_reimport">consolidazione: reimportazione...</string>
<!--action strings-->
<string name="hint_keyserver_search_hint">Nome/Email/ID Chiave...</string>
<string name="hint_keybase_search_hint">Nome/Email/Certificato/Chiave...</string>
@@ -361,7 +364,10 @@
<string name="api_register_allow">Permetti accesso</string>
<string name="api_register_disallow">Nega accesso</string>
<string name="api_register_error_select_key">Per favore selezionare una chiave!</string>
+ <string name="api_select_pub_keys_missing_text">Nessuna chiave trovata per queste identità:</string>
+ <string name="api_select_pub_keys_dublicates_text">Esistono piu\' di una chiave per queste identità:</string>
<string name="api_select_pub_keys_text">Per favore ricontrolla la lista destinatari!</string>
+ <string name="api_select_pub_keys_text_no_user_ids">Per favore seleziona i destinatari!</string>
<string name="api_error_wrong_signature">Controllo della firma fallito! Hai installato questa app da una fonte diversa? Se sei sicuro che non sia un attacco, revoca la registrazione di questa app in OpenKeychain e dopo registra di nuovo l\'app.</string>
<!--Share-->
<string name="share_qr_code_dialog_title">Condividi tramite Codice QR</string>
@@ -415,6 +421,7 @@
<item>Revoca Sottochiave</item>
</string-array>
<string name="edit_key_new_subkey">nuovo</string>
+ <string name="edit_key_select_flag">Per favore seleziona almeno una spunta!</string>
<!--Create key-->
<string name="create_key_upload">Carica chiave nel server delle chiavi</string>
<string name="create_key_empty">Questo campo è necessario</string>
@@ -556,7 +563,7 @@
<string name="msg_kc_uid_bad_time">Rimozione ID utente con marca temporale futura</string>
<string name="msg_kc_uid_bad_type">Rimozione certificato ID utente di tipo sconosciuto (%s)</string>
<string name="msg_kc_uid_bad">Rimozione autocertificazione corrotta per ID utente \"%s\"</string>
- <string name="msg_kc_uid_dup">Rimozione autocertificazione scaduta per ID utente \"%s\"</string>
+ <string name="msg_kc_uid_cert_dup">Rimozione autocertificazione scaduta per ID utente \"%s\"</string>
<string name="msg_kc_uid_foreign">Rimozione certificato ID utente estraneo di %s</string>
<string name="msg_kc_uid_revoke_dup">Rimozione certificato di revoca ridondante per ID utente \"%s\"</string>
<string name="msg_kc_uid_revoke_old">Rimozione certificato di revoca scaduto per ID utente \"%s\"</string>
@@ -565,8 +572,8 @@
<!--Keyring merging log entries-->
<string name="msg_mg_public">Fusione nel portachiavi pubblico %s</string>
<string name="msg_mg_secret">Fusione nel portachiavi privato %s</string>
- <string name="msg_mg_fatal_encode">Errore fatale nella codifica della firma</string>
- <string name="msg_mg_heterogeneous">Tentativo di unire portachiavi con impronte digitali diverse!</string>
+ <string name="msg_mg_error_encode">Errore fatale nella codifica della firma</string>
+ <string name="msg_mg_error_heterogeneous">Tentativo di unire portachiavi con impronte digitali diverse!</string>
<string name="msg_mg_new_subkey">Aggiunta nuova sottochiave %s</string>
<string name="msg_mg_found_new">Trovati %s nuovi certificati nel portachiavi</string>
<string name="msg_mg_unchanged">Nessun nuovo certificato</string>
@@ -575,6 +582,7 @@
<string name="msg_cr_error_no_master">Nessuna opzione della chiave principale specificata!</string>
<string name="msg_cr_error_no_user_id">I portachiavi devono essere creati con almeno un ID utente!</string>
<string name="msg_cr_error_no_certify">La chiave principale deve avere la caratteristica di certificazione!</string>
+ <string name="msg_cr_error_null_expiry">La data di scadenza non può essere \"come prima\" sulla creazione di chiavi. Questo è un errore di programmazione, si prega di inviare una segnalazione di bug!</string>
<string name="msg_cr_error_keysize_512">La grandezza della chiave deve essere di 512bit o maggiore</string>
<string name="msg_cr_error_internal_pgp">Errore PGP interno!</string>
<string name="msg_cr_error_unknown_algo">Pessima opzione di algortimo!</string>
@@ -585,14 +593,26 @@
<string name="msg_mf_error_fingerprint">Impronta chiave attuale non corrispondente!</string>
<string name="msg_mf_error_keyid">Nessun ID chiave. Questo è un errore di programmazione, per favore invia una segnalazione!</string>
<string name="msg_mf_error_integrity">Errore interno, controllo di integrità fallito!</string>
+ <string name="msg_mf_error_master_none">Nessun certificato principale trovato su cui operare! (Tutti revocati?)</string>
<string name="msg_mf_error_noexist_primary">ID utente primario specificato non valido!</string>
+ <string name="msg_mf_error_noexist_revoke">ID utente specificato non valido per la revoca!</string>
<string name="msg_mf_error_revoked_primary">ID utente revocato non può essere primario!</string>
+ <string name="msg_mf_error_null_expiry">La data di scadenza non può essere \"come prima\" sulla creazione di sottochiavi. Questo è un errore di programmazione, si prega di inviare una segnalazione di bug!</string>
+ <string name="msg_mf_error_passphrase_master">Errore irreversibile nella decodifica della chiave principale! Questo è probabilmente un errore di programmazione, si prega di inviare una segnalazione di bug!</string>
<string name="msg_mf_error_pgp">Eccezione interna di PGP!</string>
<string name="msg_mf_error_sig">Eccezione di firma!</string>
+ <string name="msg_mf_master">Modifica delle certificazioni principali</string>
+ <string name="msg_mf_passphrase">Cambio frase di accesso del portachiavi...</string>
+ <string name="msg_mf_passphrase_key">Ri-codifica sottochiave %s con nuova frase di accesso</string>
+ <string name="msg_mf_passphrase_empty_retry">Impostazione nuova frase di accesso fallita, provo di nuovo con frase precedente di accesso vuota</string>
+ <string name="msg_mf_passphrase_fail">La frase di accesso per la sottochiave non può essere modificata! (Ne ha una diversa dalle altre chiavi?)</string>
<string name="msg_mf_primary_replace_old">Sostituzione certificato del ID utente primario precedente</string>
<string name="msg_mf_primary_new">Generazione di un nuovo certificato per il nuovo ID utente primario</string>
<string name="msg_mf_subkey_change">Modifica sottochiave %s</string>
+ <string name="msg_mf_error_subkey_missing">Tentativo di operare su sottochiave %s mancante!</string>
+ <string name="msg_mf_subkey_new">Aggiunta nuova sottochiave di tipo %2$s (%1$s bit)</string>
<string name="msg_mf_subkey_new_id">Nuovo ID sottochiave: %s</string>
+ <string name="msg_mf_error_past_expiry">La data di scadenza non può essere nel passato!</string>
<string name="msg_mf_subkey_revoke">Revoca sottochiave %s</string>
<string name="msg_mf_success">Portachiavi modificato con successo</string>
<string name="msg_mf_uid_add">Aggiunta id utente %s</string>
@@ -602,6 +622,39 @@
<string name="msg_mf_unlock_error">Errore di apertura portachiavi!</string>
<string name="msg_mf_unlock">Apertura portachiavi</string>
<!--Consolidate-->
+ <string name="msg_con">Consolidazione database</string>
+ <string name="msg_con_error_bad_state">Il consolidamento è stato avviato mentre nessun database è stato memorizzato nella cache! Questo è probabilmente un errore di programmazione, si prega di aprire un bug report.</string>
+ <string name="msg_con_error_concurrent">Consolidamento interrotto, già in esecuzione su un altro processo!</string>
+ <string name="msg_con_save_secret">Salvataggio portachiavi privati</string>
+ <string name="msg_con_save_public">Salvataggio portachiavi pubblico</string>
+ <string name="msg_con_db_clear">Pulizia database</string>
+ <string name="msg_con_success">Consolidamento database con successo</string>
+ <string name="msg_con_critical_in">Ingresso fase critica</string>
+ <string name="msg_con_critical_out">Uscita fase critica</string>
+ <string name="msg_con_delete_public">Eliminazione del file di cache del portachiavi pubblico</string>
+ <string name="msg_con_delete_secret">Eliminazione del file di cache del portachiavi privato</string>
+ <string name="msg_con_error_db">Errore nell\'apertura del database</string>
+ <string name="msg_con_error_io_public">Errore di IO durante la scrittura delle chiavi pubbliche nella cache!</string>
+ <string name="msg_con_error_io_secret">Errore di IO durante la scrittura delle chiavi private nella cache!</string>
+ <string name="msg_con_error_public">Errore nella re-importazione delle chiavi pubbliche!</string>
+ <string name="msg_con_error_secret">Errore nella re-importazione delle chiavi private!</string>
+ <plurals name="msg_con_recover">
+ <item quantity="one">Recupero consolidamento con %1$d chiavi segrete e %2$d chiavi pubbliche</item>
+ <item quantity="other">Recupero consolidamento con %1$d chiavi segrete e %2$d chiavi pubbliche</item>
+ </plurals>
+ <string name="msg_con_recover_unknown">Recupero da situazione ignota</string>
+ <plurals name="msg_con_reimport_public">
+ <item quantity="one">Reimportazione di una chiave pubblica</item>
+ <item quantity="other">Reimportazione di %d chiavi pubbliche</item>
+ </plurals>
+ <string name="msg_con_reimport_public_skip">Nessuna chiave pubblica da reimportare, proseguo...</string>
+ <plurals name="msg_con_reimport_secret">
+ <item quantity="one">Reimportazione di una chiave privata</item>
+ <item quantity="other">Reimportazione di %d chiavi private</item>
+ </plurals>
+ <string name="msg_con_reimport_secret_skip">Nessuna chiave privata da reimportare, proseguo...</string>
+ <string name="msg_con_warn_delete_public">Eccezione durante la eliminazione del file di cache pubblico</string>
+ <string name="msg_con_warn_delete_secret">Eccezione durante la eliminazione del file di cache privato</string>
<!--PassphraseCache-->
<string name="passp_cache_notif_click_to_clear">Clicca per rimuovere la frase di accesso nella cache</string>
<string name="passp_cache_notif_n_keys">OpenKeychain ha memorizzato nella cache %d frasi di accesso</string>
@@ -615,6 +668,7 @@
<string name="label_user_id">Identit</string>
<string name="unknown_uid">&lt;sconosciuto&gt;</string>
<string name="empty_certs">Nessun certificato per questa chiave</string>
+ <string name="certs_text">Solo le autocertificazioni e i certificati creati con le tue chiavi vengono visualizzati qui.</string>
<string name="section_uids_to_certify">Identità da certificare</string>
<string name="label_revocation">Ragione della Revoca</string>
<string name="label_verify_status">Stato Verifica</string>
diff --git a/OpenKeychain/src/main/res/values-ja/strings.xml b/OpenKeychain/src/main/res/values-ja/strings.xml
index 724abeab4..36cbe64b5 100644
--- a/OpenKeychain/src/main/res/values-ja/strings.xml
+++ b/OpenKeychain/src/main/res/values-ja/strings.xml
@@ -546,7 +546,7 @@
<string name="msg_kc_uid_bad_time">未来にタイムスタンプがあるユーザIDを破棄中</string>
<string name="msg_kc_uid_bad_type">不明な型 (%s) でのユーザID検証を破棄中</string>
<string name="msg_kc_uid_bad">ユーザID \"%s\" による問題のある自己検証を破棄中</string>
- <string name="msg_kc_uid_dup">期限の切れたユーザID \"%s\" による自己検証を破棄中</string>
+ <string name="msg_kc_uid_cert_dup">期限の切れたユーザID \"%s\" による自己検証を破棄中</string>
<string name="msg_kc_uid_foreign">%s によって検証されている外部ユーザIDを破棄中</string>
<string name="msg_kc_uid_revoke_dup">ユーザID \"%s\" による重複した破棄証明を破棄中</string>
<string name="msg_kc_uid_revoke_old">ユーザID \"%s\" による期限切れ破棄証明を破棄中</string>
@@ -555,8 +555,8 @@
<!--Keyring merging log entries-->
<string name="msg_mg_public">公開鍵の鍵輪 %s にマージ中</string>
<string name="msg_mg_secret">秘密鍵の鍵輪 %s にマージ中</string>
- <string name="msg_mg_fatal_encode">署名のエンコードでの致命的なエラー</string>
- <string name="msg_mg_heterogeneous">指紋が異なる鍵輪をマージしようとしています!</string>
+ <string name="msg_mg_error_encode">署名のエンコードでの致命的なエラー</string>
+ <string name="msg_mg_error_heterogeneous">指紋が異なる鍵輪をマージしようとしています!</string>
<string name="msg_mg_new_subkey">新しい副鍵 %s を追加中</string>
<string name="msg_mg_found_new">鍵輪に新しい検証を %s 発見</string>
<string name="msg_mg_unchanged">新しい証明がない</string>
diff --git a/OpenKeychain/src/main/res/values-uk/strings.xml b/OpenKeychain/src/main/res/values-uk/strings.xml
index 77458e93f..f1533f4f2 100644
--- a/OpenKeychain/src/main/res/values-uk/strings.xml
+++ b/OpenKeychain/src/main/res/values-uk/strings.xml
@@ -552,8 +552,8 @@
<!--Keyring merging log entries-->
<string name="msg_mg_public">Злиття у публічну в\'язку %s</string>
<string name="msg_mg_secret">Злиття у секретну в\'язку %s</string>
- <string name="msg_mg_fatal_encode">Фатальна помилка шифрування підпису</string>
- <string name="msg_mg_heterogeneous">Спробували злити в\'язки із різними відбитками!</string>
+ <string name="msg_mg_error_encode">Фатальна помилка шифрування підпису</string>
+ <string name="msg_mg_error_heterogeneous">Спробували злити в\'язки із різними відбитками!</string>
<string name="msg_mg_new_subkey">Додається новий підключ %s</string>
<string name="msg_mg_found_new">Знайдено %s нових сертифікатів у в\'язці</string>
<string name="msg_mg_unchanged">Немає нових сертифікатів</string>
diff --git a/OpenKeychain/src/main/res/values/attr.xml b/OpenKeychain/src/main/res/values/attr.xml
index 86622b3e0..5dfa03987 100644
--- a/OpenKeychain/src/main/res/values/attr.xml
+++ b/OpenKeychain/src/main/res/values/attr.xml
@@ -4,8 +4,6 @@
<declare-styleable name="FoldableLinearLayout">
<attr name="foldedLabel" format="string" />
<attr name="unFoldedLabel" format="string" />
- <attr name="foldedIcon" format="string" />
- <attr name="unFoldedIcon" format="string" />
</declare-styleable>
</resources> \ No newline at end of file
diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml
index d9996c0d7..d31a08081 100644
--- a/OpenKeychain/src/main/res/values/strings.xml
+++ b/OpenKeychain/src/main/res/values/strings.xml
@@ -515,6 +515,8 @@
<string name="cert_verify_error">error!</string>
<string name="cert_verify_unavailable">key unavailable</string>
+ <!-- LogType log messages. Errors should have _ERROR_ in their name and end with a ! -->
+
<!-- Import Public log entries -->
<string name="msg_ip_apply_batch">Applying insert batch operation.</string>
<string name="msg_ip_bad_type_secret">Tried to import secret keyring as public. This is a bug, please file a report!</string>
@@ -626,18 +628,20 @@
<string name="msg_kc_uid_bad_time">Removing user id with future timestamp</string>
<string name="msg_kc_uid_bad_type">Removing user id certificate of unknown type (%s)</string>
<string name="msg_kc_uid_bad">Removing bad self certificate for user id "%s"</string>
- <string name="msg_kc_uid_dup">Removing outdated self certificate for user id "%s"</string>
+ <string name="msg_kc_uid_cert_dup">Removing outdated self certificate for user id "%s"</string>
<string name="msg_kc_uid_foreign">Removing foreign user id certificate by %s</string>
<string name="msg_kc_uid_revoke_dup">Removing redundant revocation certificate for user id "%s"</string>
<string name="msg_kc_uid_revoke_old">Removing outdated revocation certificate for user id "%s"</string>
<string name="msg_kc_uid_no_cert">No valid self-certificate found for user id %s, removing from ring</string>
<string name="msg_kc_uid_remove">Removing invalid user id %s</string>
+ <string name="msg_kc_uid_dup">Removing duplicate user id "%s". The secret key contained two of them. This may result in missing certifications!</string>
<!-- Keyring merging log entries -->
+ <string name="msg_mg_error_secret_dummy">New public subkey found, but secret subkey dummy generation is not supported!</string>
+ <string name="msg_mg_error_heterogeneous">Tried to merge keyrings with differing fingerprints!</string>
+ <string name="msg_mg_error_encode">Fatal error encoding signature!</string>
<string name="msg_mg_public">Merging into public keyring %s</string>
<string name="msg_mg_secret">Merging into secret keyring %s</string>
- <string name="msg_mg_fatal_encode">Fatal error encoding signature</string>
- <string name="msg_mg_heterogeneous">Tried to merge keyrings with differing fingerprints!</string>
<string name="msg_mg_new_subkey">Adding new subkey %s</string>
<string name="msg_mg_found_new">Found %s new certificates in keyring</string>
<string name="msg_mg_unchanged">No new certificates</string>