aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2014-08-14 13:31:01 +0200
committerDominik Schürmann <dominik@dominikschuermann.de>2014-08-14 13:31:01 +0200
commit6da17ef6bbe9569e53268b446e59dcc69aaa2da4 (patch)
tree0747b0f06b974f032573f48c08930498050ab9ce /OpenKeychain/src
parent881a50207af0a9f9f5aa69f451110de786779b54 (diff)
parent37edd0f390064e725d1b5c1c866a76c9922b0f64 (diff)
downloadopen-keychain-6da17ef6bbe9569e53268b446e59dcc69aaa2da4.tar.gz
open-keychain-6da17ef6bbe9569e53268b446e59dcc69aaa2da4.tar.bz2
open-keychain-6da17ef6bbe9569e53268b446e59dcc69aaa2da4.zip
Merge branch 'master' into yubikey
Conflicts: OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpSignEncrypt.java OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/PassphraseCacheService.java OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PreferencesActivity.java
Diffstat (limited to 'OpenKeychain/src')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java2
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/helper/Preferences.java8
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/OpenPgpSignatureResultBuilder.java4
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerify.java169
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerifyResult.java23
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpHelper.java8
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpImportExport.java10
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpSignEncrypt.java109
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/UncachedKeyRing.java4
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainContract.java3
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java3
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java7
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java84
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsActivity.java2
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/RemoteServiceActivity.java80
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java97
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/PassphraseCacheService.java102
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyActivity.java9
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFileFragment.java95
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java14
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java67
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptAsymmetricFragment.java44
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFileFragment.java10
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PreferencesActivity.java18
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyMainFragment.java28
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/UserIdsAdapter.java25
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/UserIdInfoDialogFragment.java95
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/EncryptKeyCompletionView.java35
-rw-r--r--OpenKeychain/src/main/res/layout/view_key_main_fragment.xml24
-rw-r--r--OpenKeychain/src/main/res/raw-ar/help_about.html50
-rw-r--r--OpenKeychain/src/main/res/raw-ar/help_changelog.html156
-rw-r--r--OpenKeychain/src/main/res/raw-ar/help_nfc_beam.html12
-rw-r--r--OpenKeychain/src/main/res/raw-ar/help_start.html22
-rw-r--r--OpenKeychain/src/main/res/raw-ar/help_wot.html17
-rw-r--r--OpenKeychain/src/main/res/raw-ar/nfc_beam_share.html11
-rw-r--r--OpenKeychain/src/main/res/raw-cs/help_about.html34
-rw-r--r--OpenKeychain/src/main/res/raw-cs/help_changelog.html164
-rw-r--r--OpenKeychain/src/main/res/raw-de/help_about.html34
-rw-r--r--OpenKeychain/src/main/res/raw-de/help_changelog.html164
-rw-r--r--OpenKeychain/src/main/res/raw-el/help_about.html50
-rw-r--r--OpenKeychain/src/main/res/raw-el/help_changelog.html156
-rw-r--r--OpenKeychain/src/main/res/raw-el/help_nfc_beam.html12
-rw-r--r--OpenKeychain/src/main/res/raw-el/help_start.html22
-rw-r--r--OpenKeychain/src/main/res/raw-el/help_wot.html17
-rw-r--r--OpenKeychain/src/main/res/raw-el/nfc_beam_share.html11
-rw-r--r--OpenKeychain/src/main/res/raw-es/help_about.html34
-rw-r--r--OpenKeychain/src/main/res/raw-es/help_changelog.html164
-rw-r--r--OpenKeychain/src/main/res/raw-et/help_about.html34
-rw-r--r--OpenKeychain/src/main/res/raw-et/help_changelog.html164
-rw-r--r--OpenKeychain/src/main/res/raw-fr/help_about.html34
-rw-r--r--OpenKeychain/src/main/res/raw-fr/help_changelog.html162
-rw-r--r--OpenKeychain/src/main/res/raw-it/help_about.html34
-rw-r--r--OpenKeychain/src/main/res/raw-it/help_changelog.html164
-rw-r--r--OpenKeychain/src/main/res/raw-ja/help_about.html34
-rw-r--r--OpenKeychain/src/main/res/raw-ja/help_changelog.html46
-rw-r--r--OpenKeychain/src/main/res/raw-ko/help_about.html50
-rw-r--r--OpenKeychain/src/main/res/raw-ko/help_changelog.html156
-rw-r--r--OpenKeychain/src/main/res/raw-ko/help_nfc_beam.html12
-rw-r--r--OpenKeychain/src/main/res/raw-ko/help_start.html22
-rw-r--r--OpenKeychain/src/main/res/raw-ko/help_wot.html17
-rw-r--r--OpenKeychain/src/main/res/raw-ko/nfc_beam_share.html11
-rw-r--r--OpenKeychain/src/main/res/raw-nl/help_about.html34
-rw-r--r--OpenKeychain/src/main/res/raw-nl/help_changelog.html164
-rw-r--r--OpenKeychain/src/main/res/raw-pl/help_about.html34
-rw-r--r--OpenKeychain/src/main/res/raw-pl/help_changelog.html164
-rw-r--r--OpenKeychain/src/main/res/raw-ro/help_about.html50
-rw-r--r--OpenKeychain/src/main/res/raw-ro/help_changelog.html156
-rw-r--r--OpenKeychain/src/main/res/raw-ro/help_nfc_beam.html12
-rw-r--r--OpenKeychain/src/main/res/raw-ro/help_start.html22
-rw-r--r--OpenKeychain/src/main/res/raw-ro/help_wot.html17
-rw-r--r--OpenKeychain/src/main/res/raw-ro/nfc_beam_share.html11
-rw-r--r--OpenKeychain/src/main/res/raw-ru/help_about.html34
-rw-r--r--OpenKeychain/src/main/res/raw-ru/help_changelog.html164
-rw-r--r--OpenKeychain/src/main/res/raw-sk/help_about.html50
-rw-r--r--OpenKeychain/src/main/res/raw-sk/help_changelog.html156
-rw-r--r--OpenKeychain/src/main/res/raw-sk/help_nfc_beam.html12
-rw-r--r--OpenKeychain/src/main/res/raw-sk/help_start.html22
-rw-r--r--OpenKeychain/src/main/res/raw-sk/help_wot.html17
-rw-r--r--OpenKeychain/src/main/res/raw-sk/nfc_beam_share.html11
-rw-r--r--OpenKeychain/src/main/res/raw-sl/help_about.html34
-rw-r--r--OpenKeychain/src/main/res/raw-sl/help_changelog.html164
-rw-r--r--OpenKeychain/src/main/res/raw-tr/help_about.html34
-rw-r--r--OpenKeychain/src/main/res/raw-tr/help_changelog.html164
-rw-r--r--OpenKeychain/src/main/res/raw-uk/help_about.html34
-rw-r--r--OpenKeychain/src/main/res/raw-uk/help_changelog.html164
-rw-r--r--OpenKeychain/src/main/res/raw-zh/help_about.html34
-rw-r--r--OpenKeychain/src/main/res/raw-zh/help_changelog.html164
-rw-r--r--OpenKeychain/src/main/res/raw/help_changelog.html8
-rw-r--r--OpenKeychain/src/main/res/values-ar/strings.xml43
-rw-r--r--OpenKeychain/src/main/res/values-cs/strings.xml3
-rw-r--r--OpenKeychain/src/main/res/values-de/strings.xml23
-rw-r--r--OpenKeychain/src/main/res/values-el/strings.xml59
-rw-r--r--OpenKeychain/src/main/res/values-es/strings.xml20
-rw-r--r--OpenKeychain/src/main/res/values-fr/strings.xml30
-rw-r--r--OpenKeychain/src/main/res/values-it/strings.xml7
-rw-r--r--OpenKeychain/src/main/res/values-ja/strings.xml18
-rw-r--r--OpenKeychain/src/main/res/values-ko/strings.xml43
-rw-r--r--OpenKeychain/src/main/res/values-nl/strings.xml3
-rw-r--r--OpenKeychain/src/main/res/values-pl/strings.xml3
-rw-r--r--OpenKeychain/src/main/res/values-ro/strings.xml43
-rw-r--r--OpenKeychain/src/main/res/values-ru/strings.xml3
-rw-r--r--OpenKeychain/src/main/res/values-sk/strings.xml43
-rw-r--r--OpenKeychain/src/main/res/values-sl/strings.xml3
-rw-r--r--OpenKeychain/src/main/res/values-uk/strings.xml3
-rw-r--r--OpenKeychain/src/main/res/values-zh/strings.xml1
-rw-r--r--OpenKeychain/src/main/res/values/strings.xml14
-rw-r--r--OpenKeychain/src/main/res/xml/adv_preferences.xml6
107 files changed, 2372 insertions, 3175 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java
index 7d1af704d..755d74ac2 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java
@@ -66,7 +66,7 @@ public final class Constants {
public static final String LANGUAGE = "language";
public static final String KEY_SERVERS = "keyServers";
public static final String KEY_SERVERS_DEFAULT_VERSION = "keyServersDefaultVersion";
- public static final String CONCEAL_PGP_APPLICATION = "concealPgpApplication";
+ public static final String WRITE_VERSION_HEADER = "writeVersionHeader";
public static final String FIRST_TIME = "firstTime";
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/helper/Preferences.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/helper/Preferences.java
index 491709354..72e88d793 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/helper/Preferences.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/helper/Preferences.java
@@ -195,13 +195,13 @@ public class Preferences {
}
}
- public void setConcealPgpApplication(boolean conceal) {
+ public void setWriteVersionHeader(boolean conceal) {
SharedPreferences.Editor editor = mSharedPreferences.edit();
- editor.putBoolean(Constants.Pref.CONCEAL_PGP_APPLICATION, conceal);
+ editor.putBoolean(Constants.Pref.WRITE_VERSION_HEADER, conceal);
editor.commit();
}
- public boolean getConcealPgpApplication() {
- return mSharedPreferences.getBoolean(Constants.Pref.CONCEAL_PGP_APPLICATION, false);
+ public boolean getWriteVersionHeader() {
+ return mSharedPreferences.getBoolean(Constants.Pref.WRITE_VERSION_HEADER, false);
}
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/OpenPgpSignatureResultBuilder.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/OpenPgpSignatureResultBuilder.java
index 75f8bdb66..a116ea665 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/OpenPgpSignatureResultBuilder.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/OpenPgpSignatureResultBuilder.java
@@ -65,6 +65,10 @@ public class OpenPgpSignatureResultBuilder {
this.mSignatureAvailable = signatureAvailable;
}
+ public boolean isValidSignature() {
+ return mValidSignature;
+ }
+
public OpenPgpSignatureResult build() {
if (mSignatureAvailable) {
OpenPgpSignatureResult result = new OpenPgpSignatureResult();
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerify.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerify.java
index 7f2d971ed..7d113241b 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerify.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerify.java
@@ -18,6 +18,9 @@
package org.sufficientlysecure.keychain.pgp;
+import android.webkit.MimeTypeMap;
+
+import org.openintents.openpgp.OpenPgpMetadata;
import org.spongycastle.bcpg.ArmoredInputStream;
import org.spongycastle.openpgp.PGPCompressedData;
import org.spongycastle.openpgp.PGPEncryptedData;
@@ -43,8 +46,10 @@ import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralException;
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
import org.sufficientlysecure.keychain.provider.ProviderHelper;
+import org.sufficientlysecure.keychain.service.PassphraseCacheService;
import org.sufficientlysecure.keychain.util.InputData;
import org.sufficientlysecure.keychain.util.Log;
+import org.sufficientlysecure.keychain.util.ProgressScaler;
import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
@@ -52,6 +57,7 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.net.URLConnection;
import java.security.SignatureException;
import java.util.Iterator;
import java.util.Set;
@@ -69,6 +75,7 @@ public class PgpDecryptVerify {
private boolean mAllowSymmetricDecryption;
private String mPassphrase;
private Set<Long> mAllowedKeyIds;
+ private boolean mDecryptMetadataOnly;
private PgpDecryptVerify(Builder builder) {
// private Constructor can only be called from Builder
@@ -81,6 +88,7 @@ public class PgpDecryptVerify {
this.mAllowSymmetricDecryption = builder.mAllowSymmetricDecryption;
this.mPassphrase = builder.mPassphrase;
this.mAllowedKeyIds = builder.mAllowedKeyIds;
+ this.mDecryptMetadataOnly = builder.mDecryptMetadataOnly;
}
public static class Builder {
@@ -95,6 +103,7 @@ public class PgpDecryptVerify {
private boolean mAllowSymmetricDecryption = true;
private String mPassphrase = null;
private Set<Long> mAllowedKeyIds = null;
+ private boolean mDecryptMetadataOnly = false;
public Builder(ProviderHelper providerHelper, PassphraseCache passphraseCache,
InputData data, OutputStream outStream) {
@@ -124,7 +133,16 @@ public class PgpDecryptVerify {
* This means only ciphertexts encrypted for one of these private key can be decrypted.
*/
public Builder setAllowedKeyIds(Set<Long> allowedKeyIds) {
- this.mAllowedKeyIds = allowedKeyIds;
+ mAllowedKeyIds = allowedKeyIds;
+ return this;
+ }
+
+ /**
+ * If enabled, the actual decryption/verification of the content will not be executed.
+ * The metadata only will be decrypted and returned.
+ */
+ public Builder setDecryptMetadataOnly(boolean decryptMetadataOnly) {
+ mDecryptMetadataOnly = decryptMetadataOnly;
return this;
}
@@ -146,7 +164,8 @@ public class PgpDecryptVerify {
}
public interface PassphraseCache {
- public String getCachedPassphrase(long masterKeyId);
+ public String getCachedPassphrase(long masterKeyId)
+ throws NoSecretKeyException;
}
public static class InvalidDataException extends Exception {
@@ -227,8 +246,6 @@ public class PgpDecryptVerify {
InputStream clear;
PGPEncryptedData encryptedData;
- currentProgress += 5;
-
PGPPublicKeyEncryptedData encryptedDataAsymmetric = null;
PGPPBEEncryptedData encryptedDataSymmetric = null;
CanonicalizedSecretKey secretEncryptionKey = null;
@@ -239,6 +256,7 @@ public class PgpDecryptVerify {
while (it.hasNext()) {
Object obj = it.next();
if (obj instanceof PGPPublicKeyEncryptedData) {
+ currentProgress += 2;
updateProgress(R.string.progress_finding_key, currentProgress, 100);
PGPPublicKeyEncryptedData encData = (PGPPublicKeyEncryptedData) obj;
@@ -269,8 +287,8 @@ public class PgpDecryptVerify {
// allow only specific keys for decryption?
if (mAllowedKeyIds != null) {
- Log.d(Constants.TAG, "encData.getKeyID():" + encData.getKeyID());
- Log.d(Constants.TAG, "allowedKeyIds: " + mAllowedKeyIds);
+ Log.d(Constants.TAG, "encData.getKeyID(): " + encData.getKeyID());
+ Log.d(Constants.TAG, "mAllowedKeyIds: " + mAllowedKeyIds);
Log.d(Constants.TAG, "masterKeyId: " + masterKeyId);
if (!mAllowedKeyIds.contains(masterKeyId)) {
@@ -325,6 +343,7 @@ public class PgpDecryptVerify {
}
if (symmetricPacketFound) {
+ currentProgress += 2;
updateProgress(R.string.progress_preparing_streams, currentProgress, 100);
PGPDigestCalculatorProvider digestCalcProvider = new JcaPGPDigestCalculatorProviderBuilder()
@@ -336,26 +355,23 @@ public class PgpDecryptVerify {
clear = encryptedDataSymmetric.getDataStream(decryptorFactory);
encryptedData = encryptedDataSymmetric;
- currentProgress += 5;
} else if (asymmetricPacketFound) {
- currentProgress += 5;
+ currentProgress += 2;
updateProgress(R.string.progress_extracting_key, currentProgress, 100);
try {
if (!secretEncryptionKey.unlock(mPassphrase)) {
throw new WrongPassphraseException();
}
- } catch(PgpGeneralException e) {
+ } catch (PgpGeneralException e) {
throw new KeyExtractionException();
}
- currentProgress += 5;
+
+ currentProgress += 2;
updateProgress(R.string.progress_preparing_streams, currentProgress, 100);
PublicKeyDataDecryptorFactory decryptorFactory = secretEncryptionKey.getDecryptorFactory();
-
clear = encryptedDataAsymmetric.getDataStream(decryptorFactory);
-
encryptedData = encryptedDataAsymmetric;
- currentProgress += 5;
} else {
// no packet has been found where we have the corresponding secret key in our db
throw new NoSecretKeyException();
@@ -369,18 +385,19 @@ public class PgpDecryptVerify {
CanonicalizedPublicKey signingKey = null;
if (dataChunk instanceof PGPCompressedData) {
+ currentProgress += 2;
updateProgress(R.string.progress_decompressing_data, currentProgress, 100);
- PGPObjectFactory fact = new PGPObjectFactory(
- ((PGPCompressedData) dataChunk).getDataStream());
+ PGPCompressedData compressedData = (PGPCompressedData) dataChunk;
+
+ PGPObjectFactory fact = new PGPObjectFactory(compressedData.getDataStream());
dataChunk = fact.nextObject();
plainFact = fact;
- currentProgress += 10;
}
PGPOnePassSignature signature = null;
-
if (dataChunk instanceof PGPOnePassSignatureList) {
+ currentProgress += 2;
updateProgress(R.string.progress_processing_signature, currentProgress, 100);
PGPOnePassSignatureList sigList = (PGPOnePassSignatureList) dataChunk;
@@ -396,8 +413,7 @@ public class PgpDecryptVerify {
signingKey = signingRing.getPublicKey(sigKeyId);
signatureIndex = i;
} catch (ProviderHelper.NotFoundException e) {
- Log.d(Constants.TAG, "key not found!");
- // try next one...
+ Log.d(Constants.TAG, "key not found, trying next signature...");
}
}
@@ -410,8 +426,8 @@ public class PgpDecryptVerify {
signatureResultBuilder.keyId(signingRing.getMasterKeyId());
try {
signatureResultBuilder.userId(signingRing.getPrimaryUserIdWithFallback());
- } catch(PgpGeneralException e) {
- Log.d(Constants.TAG, "No primary user id in key " + signingRing.getMasterKeyId());
+ } catch (PgpGeneralException e) {
+ Log.d(Constants.TAG, "No primary user id in keyring with master key id " + signingRing.getMasterKeyId());
}
signatureResultBuilder.signatureKeyCertified(signingRing.getVerified() > 0);
@@ -429,56 +445,104 @@ public class PgpDecryptVerify {
}
dataChunk = plainFact.nextObject();
- currentProgress += 10;
}
if (dataChunk instanceof PGPSignatureList) {
+ // skip
dataChunk = plainFact.nextObject();
}
if (dataChunk instanceof PGPLiteralData) {
+ currentProgress += 4;
updateProgress(R.string.progress_decrypting, currentProgress, 100);
PGPLiteralData literalData = (PGPLiteralData) dataChunk;
- byte[] buffer = new byte[1 << 16];
- InputStream dataIn = literalData.getInputStream();
+ // TODO: how to get the real original size?
+ // this is the encrypted size so if we enable compression this value is wrong!
+ long originalSize = mData.getSize() - mData.getStreamPosition();
+ if (originalSize < 0) {
+ originalSize = 0;
+ }
+
+ String originalFilename = literalData.getFileName();
+ String mimeType = null;
+ if (literalData.getFormat() == PGPLiteralData.TEXT
+ || literalData.getFormat() == PGPLiteralData.UTF8) {
+ mimeType = "text/plain";
+ } else {
+ // TODO: better would be: https://github.com/open-keychain/open-keychain/issues/753
+
+ // try to guess from file ending
+ String extension = MimeTypeMap.getFileExtensionFromUrl(originalFilename);
+ if (extension != null) {
+ MimeTypeMap mime = MimeTypeMap.getSingleton();
+ mimeType = mime.getMimeTypeFromExtension(extension);
+ }
+ if (mimeType == null) {
+ mimeType = URLConnection.guessContentTypeFromName(originalFilename);
+ }
+ if (mimeType == null) {
+ mimeType = "*/*";
+ }
+ }
+
+ OpenPgpMetadata metadata = new OpenPgpMetadata(
+ originalFilename,
+ mimeType,
+ literalData.getModificationTime().getTime(),
+ originalSize);
+ result.setDecryptMetadata(metadata);
- int startProgress = currentProgress;
- int endProgress = 100;
+ Log.d(Constants.TAG, "metadata: " + metadata);
+
+ // return here if we want to decrypt the metadata only
+ if (mDecryptMetadataOnly) {
+ return result;
+ }
+
+ int endProgress;
if (signature != null) {
endProgress = 90;
} else if (encryptedData.isIntegrityProtected()) {
endProgress = 95;
+ } else {
+ endProgress = 100;
}
+ ProgressScaler progressScaler =
+ new ProgressScaler(mProgressable, currentProgress, endProgress, 100);
- int n;
- // TODO: progress calculation is broken here! Try to rework it based on commented code!
-// int progress = 0;
- long startPos = mData.getStreamPosition();
- while ((n = dataIn.read(buffer)) > 0) {
- mOutStream.write(buffer, 0, n);
-// progress += n;
+ InputStream dataIn = literalData.getInputStream();
+
+ long alreadyWritten = 0;
+ long wholeSize = mData.getSize() - mData.getStreamPosition();
+ int length;
+ byte[] buffer = new byte[1 << 16];
+ while ((length = dataIn.read(buffer)) > 0) {
+ mOutStream.write(buffer, 0, length);
+
+ // update signature buffer if signature is also present
if (signature != null) {
try {
- signature.update(buffer, 0, n);
+ signature.update(buffer, 0, length);
} catch (SignatureException e) {
- Log.d(Constants.TAG, "SIGNATURE_ERROR");
+ Log.e(Constants.TAG, "SignatureException -> Not a valid signature!", e);
signatureResultBuilder.validSignature(false);
signature = null;
}
}
- // TODO: dead code?!
- // unknown size, but try to at least have a moving, slowing down progress bar
-// currentProgress = startProgress + (endProgress - startProgress) * progress
-// / (progress + 100000);
- if (mData.getSize() - startPos == 0) {
- currentProgress = endProgress;
+
+ alreadyWritten += length;
+ if (wholeSize > 0) {
+ long progress = 100 * alreadyWritten / wholeSize;
+ // stop at 100% for wrong file sizes...
+ if (progress > 100) {
+ progress = 100;
+ }
+ progressScaler.setProgress((int) progress, 100);
} else {
- currentProgress = (int) (startProgress + (endProgress - startProgress)
- * (mData.getStreamPosition() - startPos) / (mData.getSize() - startPos));
+ // TODO: slow annealing to fake a progress?
}
- updateProgress(currentProgress, 100);
}
if (signature != null) {
@@ -510,8 +574,14 @@ public class PgpDecryptVerify {
}
} else {
// no integrity check
- Log.e(Constants.TAG, "Encrypted data was not integrity protected!");
- // TODO: inform user?
+ Log.d(Constants.TAG, "Encrypted data was not integrity protected! MDC packet is missing!");
+
+ // If no valid signature is present:
+ // Handle missing integrity protection like failed integrity protection!
+ // The MDC packet can be stripped by an attacker!
+ if (!signatureResultBuilder.isValidSignature()) {
+ throw new IntegrityCheckFailedException();
+ }
}
updateProgress(R.string.progress_done, 100, 100);
@@ -581,8 +651,7 @@ public class PgpDecryptVerify {
signingKey = signingRing.getPublicKey(sigKeyId);
signatureIndex = i;
} catch (ProviderHelper.NotFoundException e) {
- Log.d(Constants.TAG, "key not found!");
- // try next one...
+ Log.d(Constants.TAG, "key not found, trying next signature...");
}
}
@@ -597,8 +666,8 @@ public class PgpDecryptVerify {
signatureResultBuilder.keyId(signingRing.getMasterKeyId());
try {
signatureResultBuilder.userId(signingRing.getPrimaryUserIdWithFallback());
- } catch(PgpGeneralException e) {
- Log.d(Constants.TAG, "No primary user id in key " + signingRing.getMasterKeyId());
+ } catch (PgpGeneralException e) {
+ Log.d(Constants.TAG, "No primary user id in key with master key id " + signingRing.getMasterKeyId());
}
signatureResultBuilder.signatureKeyCertified(signingRing.getVerified() > 0);
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerifyResult.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerifyResult.java
index ad240e834..506f48c52 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerifyResult.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpDecryptVerifyResult.java
@@ -20,6 +20,7 @@ package org.sufficientlysecure.keychain.pgp;
import android.os.Parcel;
import android.os.Parcelable;
+import org.openintents.openpgp.OpenPgpMetadata;
import org.openintents.openpgp.OpenPgpSignatureResult;
public class PgpDecryptVerifyResult implements Parcelable {
@@ -31,21 +32,22 @@ public class PgpDecryptVerifyResult implements Parcelable {
long mKeyIdPassphraseNeeded;
OpenPgpSignatureResult mSignatureResult;
+ OpenPgpMetadata mDecryptMetadata;
public int getStatus() {
return mStatus;
}
- public void setStatus(int mStatus) {
- this.mStatus = mStatus;
+ public void setStatus(int status) {
+ mStatus = status;
}
public long getKeyIdPassphraseNeeded() {
return mKeyIdPassphraseNeeded;
}
- public void setKeyIdPassphraseNeeded(long mKeyIdPassphraseNeeded) {
- this.mKeyIdPassphraseNeeded = mKeyIdPassphraseNeeded;
+ public void setKeyIdPassphraseNeeded(long keyIdPassphraseNeeded) {
+ mKeyIdPassphraseNeeded = keyIdPassphraseNeeded;
}
public OpenPgpSignatureResult getSignatureResult() {
@@ -53,7 +55,15 @@ public class PgpDecryptVerifyResult implements Parcelable {
}
public void setSignatureResult(OpenPgpSignatureResult signatureResult) {
- this.mSignatureResult = signatureResult;
+ mSignatureResult = signatureResult;
+ }
+
+ public OpenPgpMetadata getDecryptMetadata() {
+ return mDecryptMetadata;
+ }
+
+ public void setDecryptMetadata(OpenPgpMetadata decryptMetadata) {
+ mDecryptMetadata = decryptMetadata;
}
public PgpDecryptVerifyResult() {
@@ -64,6 +74,7 @@ public class PgpDecryptVerifyResult implements Parcelable {
this.mStatus = b.mStatus;
this.mKeyIdPassphraseNeeded = b.mKeyIdPassphraseNeeded;
this.mSignatureResult = b.mSignatureResult;
+ this.mDecryptMetadata = b.mDecryptMetadata;
}
@@ -75,6 +86,7 @@ public class PgpDecryptVerifyResult implements Parcelable {
dest.writeInt(mStatus);
dest.writeLong(mKeyIdPassphraseNeeded);
dest.writeParcelable(mSignatureResult, 0);
+ dest.writeParcelable(mDecryptMetadata, 0);
}
public static final Creator<PgpDecryptVerifyResult> CREATOR = new Creator<PgpDecryptVerifyResult>() {
@@ -83,6 +95,7 @@ public class PgpDecryptVerifyResult implements Parcelable {
vr.mStatus = source.readInt();
vr.mKeyIdPassphraseNeeded = source.readLong();
vr.mSignatureResult = source.readParcelable(OpenPgpSignatureResult.class.getClassLoader());
+ vr.mDecryptMetadata = source.readParcelable(OpenPgpMetadata.class.getClassLoader());
return vr;
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpHelper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpHelper.java
index 0ceefc4d9..1cf027721 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpHelper.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpHelper.java
@@ -60,11 +60,11 @@ public class PgpHelper {
}
}
- public static String getFullVersion(Context context) {
- if(Preferences.getPreferences(context).getConcealPgpApplication()){
- return "";
- } else {
+ public static String getVersionForHeader(Context context) {
+ if(Preferences.getPreferences(context).getWriteVersionHeader()){
return "OpenKeychain v" + getVersion(context);
+ } else {
+ return null;
}
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpImportExport.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpImportExport.java
index 846b00ef2..f14eacda2 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpImportExport.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpImportExport.java
@@ -230,7 +230,10 @@ public class PgpImportExport {
progress++;
// Create an output stream
ArmoredOutputStream arOutStream = new ArmoredOutputStream(outStream);
- arOutStream.setHeader("Version", PgpHelper.getFullVersion(mContext));
+ String version = PgpHelper.getVersionForHeader(mContext);
+ if (version != null) {
+ arOutStream.setHeader("Version", version);
+ }
updateProgress(progress * 100 / masterKeyIdsSize, 100);
@@ -258,7 +261,10 @@ public class PgpImportExport {
progress++;
// Create an output stream
ArmoredOutputStream arOutStream = new ArmoredOutputStream(outStream);
- arOutStream.setHeader("Version", PgpHelper.getFullVersion(mContext));
+ String version = PgpHelper.getVersionForHeader(mContext);
+ if (version != null) {
+ arOutStream.setHeader("Version", version);
+ }
updateProgress(progress * 100 / masterKeyIdsSize, 100);
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpSignEncrypt.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpSignEncrypt.java
index 67eced699..901611982 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpSignEncrypt.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpSignEncrypt.java
@@ -37,6 +37,7 @@ import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
import org.sufficientlysecure.keychain.provider.ProviderHelper;
import org.sufficientlysecure.keychain.util.InputData;
import org.sufficientlysecure.keychain.util.Log;
+import org.sufficientlysecure.keychain.util.ProgressScaler;
import java.io.BufferedReader;
import java.io.IOException;
@@ -71,6 +72,7 @@ public class PgpSignEncrypt {
private String mSignaturePassphrase;
private boolean mEncryptToSigner;
private boolean mCleartextInput;
+ private String mOriginalFilename;
private byte[] mNfcSignedHash = null;
private Date mNfcCreationTimestamp = null;
@@ -105,16 +107,17 @@ public class PgpSignEncrypt {
this.mCleartextInput = builder.mCleartextInput;
this.mNfcSignedHash = builder.mNfcSignedHash;
this.mNfcCreationTimestamp = builder.mNfcCreationTimestamp;
+ this.mOriginalFilename = builder.mOriginalFilename;
}
public static class Builder {
// mandatory parameter
private ProviderHelper mProviderHelper;
- private String mVersionHeader;
private InputData mData;
private OutputStream mOutStream;
// optional
+ private String mVersionHeader = null;
private Progressable mProgressable = null;
private boolean mEnableAsciiArmorOutput = false;
private int mCompressionId = CompressionAlgorithmTags.UNCOMPRESSED;
@@ -126,15 +129,19 @@ public class PgpSignEncrypt {
private String mSignaturePassphrase = null;
private boolean mEncryptToSigner = false;
private boolean mCleartextInput = false;
-
+ private String mOriginalFilename = "";
private byte[] mNfcSignedHash = null;
private Date mNfcCreationTimestamp = null;
- public Builder(ProviderHelper providerHelper, String versionHeader, InputData data, OutputStream outStream) {
- this.mProviderHelper = providerHelper;
- this.mVersionHeader = versionHeader;
- this.mData = data;
- this.mOutStream = outStream;
+ public Builder(ProviderHelper providerHelper, InputData data, OutputStream outStream) {
+ mProviderHelper = providerHelper;
+ mData = data;
+ mOutStream = outStream;
+ }
+
+ public Builder setVersionHeader(String versionHeader) {
+ mVersionHeader = versionHeader;
+ return this;
}
public Builder setProgressable(Progressable progressable) {
@@ -153,12 +160,12 @@ public class PgpSignEncrypt {
}
public Builder setEncryptionMasterKeyIds(long[] encryptionMasterKeyIds) {
- this.mEncryptionMasterKeyIds = encryptionMasterKeyIds;
+ mEncryptionMasterKeyIds = encryptionMasterKeyIds;
return this;
}
public Builder setSymmetricPassphrase(String symmetricPassphrase) {
- this.mSymmetricPassphrase = symmetricPassphrase;
+ mSymmetricPassphrase = symmetricPassphrase;
return this;
}
@@ -183,11 +190,13 @@ public class PgpSignEncrypt {
}
/**
+ * Also encrypt with the signing keyring
+ *
* @param encryptToSigner
* @return
*/
public Builder setEncryptToSigner(boolean encryptToSigner) {
- this.mEncryptToSigner = encryptToSigner;
+ mEncryptToSigner = encryptToSigner;
return this;
}
@@ -198,7 +207,12 @@ public class PgpSignEncrypt {
* @return
*/
public Builder setCleartextInput(boolean cleartextInput) {
- this.mCleartextInput = cleartextInput;
+ mCleartextInput = cleartextInput;
+ return this;
+ }
+
+ public Builder setOriginalFilename(String originalFilename) {
+ mOriginalFilename = originalFilename;
return this;
}
@@ -278,6 +292,18 @@ public class PgpSignEncrypt {
mEncryptionMasterKeyIds[mEncryptionMasterKeyIds.length - 1] = mSignatureMasterKeyId;
}
+ ArmoredOutputStream armorOut = null;
+ OutputStream out;
+ if (mEnableAsciiArmorOutput) {
+ armorOut = new ArmoredOutputStream(mOutStream);
+ if (mVersionHeader != null) {
+ armorOut.setHeader("Version", mVersionHeader);
+ }
+ out = armorOut;
+ } else {
+ out = mOutStream;
+ }
+
/* Get keys for signature generation for later usage */
CanonicalizedSecretKey signingKey = null;
if (enableSignature) {
@@ -314,7 +340,7 @@ public class PgpSignEncrypt {
mSignatureHashAlgorithm = supported.getLast();
}
}
- updateProgress(R.string.progress_preparing_streams, 5, 100);
+ updateProgress(R.string.progress_preparing_streams, 2, 100);
/* Initialize PGPEncryptedDataGenerator for later usage */
PGPEncryptedDataGenerator cPk = null;
@@ -354,7 +380,7 @@ public class PgpSignEncrypt {
/* Initialize signature generator object for later usage */
PGPSignatureGenerator signatureGenerator = null;
if (enableSignature) {
- updateProgress(R.string.progress_preparing_signature, 10, 100);
+ updateProgress(R.string.progress_preparing_signature, 4, 100);
try {
boolean cleartext = mCleartextInput && mEnableAsciiArmorOutput && !enableEncryption;
@@ -366,16 +392,8 @@ public class PgpSignEncrypt {
}
}
- ArmoredOutputStream armorOut = null;
- OutputStream out;
- if (mEnableAsciiArmorOutput) {
- armorOut = new ArmoredOutputStream(mOutStream);
- armorOut.setHeader("Version", mVersionHeader);
- out = armorOut;
- } else {
- out = mOutStream;
- }
-
+ ProgressScaler progressScaler =
+ new ProgressScaler(mProgressable, 8, 95, 100);
PGPCompressedDataGenerator compressGen = null;
OutputStream pOut = null;
OutputStream encryptionOut = null;
@@ -383,6 +401,7 @@ public class PgpSignEncrypt {
if (enableEncryption) {
/* actual encryption */
+ updateProgress(R.string.progress_encrypting, 8, 100);
encryptionOut = cPk.open(out, new byte[1 << 16]);
@@ -398,26 +417,25 @@ public class PgpSignEncrypt {
}
PGPLiteralDataGenerator literalGen = new PGPLiteralDataGenerator();
- // file name not needed, so empty string
- pOut = literalGen.open(bcpgOut, PGPLiteralData.BINARY, "", new Date(),
+ pOut = literalGen.open(bcpgOut, PGPLiteralData.BINARY, mOriginalFilename, new Date(),
new byte[1 << 16]);
- updateProgress(R.string.progress_encrypting, 20, 100);
- long progress = 0;
- int n;
+ long alreadyWritten = 0;
+ int length;
byte[] buffer = new byte[1 << 16];
InputStream in = mData.getInputStream();
- while ((n = in.read(buffer)) > 0) {
- pOut.write(buffer, 0, n);
+ while ((length = in.read(buffer)) > 0) {
+ pOut.write(buffer, 0, length);
// update signature buffer if signature is requested
if (enableSignature) {
- signatureGenerator.update(buffer, 0, n);
+ signatureGenerator.update(buffer, 0, length);
}
- progress += n;
- if (mData.getSize() != 0) {
- updateProgress((int) (20 + (95 - 20) * progress / mData.getSize()), 100);
+ alreadyWritten += length;
+ if (mData.getSize() > 0) {
+ long progress = 100 * alreadyWritten / mData.getSize();
+ progressScaler.setProgress((int) progress, 100);
}
}
@@ -425,7 +443,7 @@ public class PgpSignEncrypt {
} else if (enableSignature && mCleartextInput && mEnableAsciiArmorOutput) {
/* cleartext signature: sign-only of ascii text */
- updateProgress(R.string.progress_signing, 40, 100);
+ updateProgress(R.string.progress_signing, 8, 100);
// write -----BEGIN PGP SIGNED MESSAGE-----
armorOut.beginClearText(mSignatureHashAlgorithm);
@@ -436,6 +454,7 @@ public class PgpSignEncrypt {
// update signature buffer with first line
processLine(reader.readLine(), armorOut, signatureGenerator);
+ // TODO: progress: fake annealing?
while (true) {
String line = reader.readLine();
@@ -458,7 +477,7 @@ public class PgpSignEncrypt {
} else if (enableSignature && !mCleartextInput) {
/* sign-only binary (files/data stream) */
- updateProgress(R.string.progress_signing, 40, 100);
+ updateProgress(R.string.progress_signing, 8, 100);
InputStream in = mData.getInputStream();
@@ -472,16 +491,22 @@ public class PgpSignEncrypt {
signatureGenerator.generateOnePassVersion(false).encode(bcpgOut);
PGPLiteralDataGenerator literalGen = new PGPLiteralDataGenerator();
- // file name not needed, so empty string
- pOut = literalGen.open(bcpgOut, PGPLiteralData.BINARY, "", new Date(),
+ pOut = literalGen.open(bcpgOut, PGPLiteralData.BINARY, mOriginalFilename, new Date(),
new byte[1 << 16]);
+ long alreadyWritten = 0;
+ int length;
byte[] buffer = new byte[1 << 16];
- int n;
- while ((n = in.read(buffer)) > 0) {
- pOut.write(buffer, 0, n);
+ while ((length = in.read(buffer)) > 0) {
+ pOut.write(buffer, 0, length);
+
+ signatureGenerator.update(buffer, 0, length);
- signatureGenerator.update(buffer, 0, n);
+ alreadyWritten += length;
+ if (mData.getSize() > 0) {
+ long progress = 100 * alreadyWritten / mData.getSize();
+ progressScaler.setProgress((int) progress, 100);
+ }
}
literalGen.close();
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 18ddaa0ec..73a51942d 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/UncachedKeyRing.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/UncachedKeyRing.java
@@ -204,7 +204,9 @@ public class UncachedKeyRing {
public void encodeArmored(OutputStream out, String version) throws IOException {
ArmoredOutputStream aos = new ArmoredOutputStream(out);
- aos.setHeader("Version", version);
+ if (version != null) {
+ aos.setHeader("Version", version);
+ }
aos.write(mRing.getEncoded());
aos.close();
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainContract.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainContract.java
index 56168847f..dd59f8603 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainContract.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainContract.java
@@ -105,8 +105,9 @@ public class KeychainContract {
public static class KeyRings implements BaseColumns, KeysColumns, UserIdsColumns {
public static final String MASTER_KEY_ID = KeysColumns.MASTER_KEY_ID;
- public static final String IS_REVOKED = KeysColumns.IS_REVOKED;
+ public static final String IS_REVOKED = KeychainDatabase.Tables.KEYS + "." + KeysColumns.IS_REVOKED;
public static final String VERIFIED = CertsColumns.VERIFIED;
+ public static final String IS_EXPIRED = "is_expired";
public static final String HAS_ANY_SECRET = "has_any_secret";
public static final String HAS_ENCRYPT = "has_encrypt";
public static final String HAS_SIGN = "has_sign";
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java
index b651069e9..c914cb5b7 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java
@@ -271,6 +271,9 @@ public class KeychainProvider extends ContentProvider {
"kE." + Keys.KEY_ID + " AS " + KeyRings.HAS_ENCRYPT);
projectionMap.put(KeyRings.HAS_SIGN,
"kS." + Keys.KEY_ID + " AS " + KeyRings.HAS_SIGN);
+ projectionMap.put(KeyRings.IS_EXPIRED,
+ "(" + Tables.KEYS + "." + Keys.EXPIRY + " IS NOT NULL AND " + Tables.KEYS + "." + Keys.EXPIRY
+ + " < " + new Date().getTime() / 1000 + ") AS " + KeyRings.IS_EXPIRED);
qb.setProjectionMap(projectionMap);
// Need this as list so we can search in it
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java
index 6111a4ef4..a13bb9c98 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java
@@ -862,7 +862,10 @@ public class ProviderHelper {
UncachedKeyRing keyRing = UncachedKeyRing.decodeFromData(data);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
- keyRing.encodeArmored(bos, PgpHelper.getFullVersion(mContext));
+ String version = PgpHelper.getVersionForHeader(mContext);
+ if (version != null) {
+ keyRing.encodeArmored(bos, version);
+ }
String armoredKey = bos.toString("UTF-8");
Log.d(Constants.TAG, "armoredKey:" + armoredKey);
@@ -925,7 +928,7 @@ public class ProviderHelper {
mContentResolver.insert(uri, contentValueForApiAccounts(accSettings));
}
- public void updateApiAccount(AccountSettings accSettings, Uri uri) {
+ public void updateApiAccount(Uri uri, AccountSettings accSettings) {
if (mContentResolver.update(uri, contentValueForApiAccounts(accSettings), null,
null) <= 0) {
throw new RuntimeException();
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 eae217e16..6bc623b85 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java
@@ -25,6 +25,7 @@ import android.os.IBinder;
import android.os.ParcelFileDescriptor;
import org.openintents.openpgp.IOpenPgpService;
+import org.openintents.openpgp.OpenPgpMetadata;
import org.openintents.openpgp.OpenPgpError;
import org.openintents.openpgp.OpenPgpSignatureResult;
import org.openintents.openpgp.util.OpenPgpApi;
@@ -184,7 +185,13 @@ public class OpenPgpService extends RemoteService {
if (data.hasExtra(OpenPgpApi.EXTRA_PASSPHRASE)) {
passphrase = data.getStringExtra(OpenPgpApi.EXTRA_PASSPHRASE);
} else {
- passphrase = PassphraseCacheService.getCachedPassphrase(getContext(), accSettings.getKeyId());
+ try {
+ passphrase = PassphraseCacheService.getCachedPassphrase(getContext(), accSettings.getKeyId());
+ } 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));
+ }
}
if (passphrase == null) {
// get PendingIntent for passphrase input, add it to given params and return to client
@@ -204,9 +211,9 @@ public class OpenPgpService extends RemoteService {
// sign-only
PgpSignEncrypt.Builder builder = new PgpSignEncrypt.Builder(
new ProviderHelper(getContext()),
- PgpHelper.getFullVersion(getContext()),
inputData, os);
builder.setEnableAsciiArmorOutput(asciiArmor)
+ .setVersionHeader(PgpHelper.getVersionForHeader(this))
.setSignatureHashAlgorithm(accSettings.getHashAlgorithm())
.setSignatureMasterKeyId(accSettings.getKeyId())
.setSignaturePassphrase(passphrase)
@@ -257,6 +264,10 @@ public class OpenPgpService extends RemoteService {
boolean sign) {
try {
boolean asciiArmor = data.getBooleanExtra(OpenPgpApi.EXTRA_REQUEST_ASCII_ARMOR, true);
+ String originalFilename = data.getStringExtra(OpenPgpApi.EXTRA_ORIGINAL_FILENAME);
+ if (originalFilename == null) {
+ originalFilename = "";
+ }
long[] keyIds;
if (data.hasExtra(OpenPgpApi.EXTRA_KEY_IDS)) {
@@ -297,12 +308,13 @@ public class OpenPgpService extends RemoteService {
PgpSignEncrypt.Builder builder = new PgpSignEncrypt.Builder(
new ProviderHelper(getContext()),
- PgpHelper.getFullVersion(getContext()),
inputData, os);
builder.setEnableAsciiArmorOutput(asciiArmor)
+ .setVersionHeader(PgpHelper.getVersionForHeader(this))
.setCompressionId(accSettings.getCompression())
.setSymmetricEncryptionAlgorithm(accSettings.getEncryptionAlgorithm())
- .setEncryptionMasterKeyIds(keyIds);
+ .setEncryptionMasterKeyIds(keyIds)
+ .setOriginalFilename(originalFilename);
if (sign) {
String passphrase;
@@ -359,11 +371,18 @@ public class OpenPgpService extends RemoteService {
}
private Intent decryptAndVerifyImpl(Intent data, ParcelFileDescriptor input,
- ParcelFileDescriptor output, Set<Long> allowedKeyIds) {
+ ParcelFileDescriptor output, Set<Long> allowedKeyIds,
+ boolean decryptMetadataOnly) {
try {
// Get Input- and OutputStream from ParcelFileDescriptor
InputStream is = new ParcelFileDescriptor.AutoCloseInputStream(input);
- OutputStream os = new ParcelFileDescriptor.AutoCloseOutputStream(output);
+
+ OutputStream os;
+ if (decryptMetadataOnly) {
+ os = null;
+ } else {
+ os = new ParcelFileDescriptor.AutoCloseOutputStream(output);
+ }
Intent result = new Intent();
try {
@@ -376,17 +395,24 @@ public class OpenPgpService extends RemoteService {
new ProviderHelper(this),
new PgpDecryptVerify.PassphraseCache() {
@Override
- public String getCachedPassphrase(long masterKeyId) {
- return PassphraseCacheService.getCachedPassphrase(
- OpenPgpService.this, masterKeyId);
+ public String getCachedPassphrase(long masterKeyId) throws PgpDecryptVerify.NoSecretKeyException {
+ try {
+ return PassphraseCacheService.getCachedPassphrase(
+ OpenPgpService.this, masterKeyId);
+ } catch (PassphraseCacheService.KeyNotFoundException e) {
+ throw new PgpDecryptVerify.NoSecretKeyException();
+ }
}
},
inputData, os
);
- builder.setAllowSymmetricDecryption(false) // no support for symmetric encryption
- .setAllowedKeyIds(allowedKeyIds) // allow only private keys associated with
- // accounts of this app
- .setPassphrase(passphrase);
+
+ // allow only private keys associated with accounts of this app
+ // no support for symmetric encryption
+ builder.setPassphrase(passphrase)
+ .setAllowSymmetricDecryption(false)
+ .setAllowedKeyIds(allowedKeyIds)
+ .setDecryptMetadataOnly(decryptMetadataOnly);
PgpDecryptVerifyResult decryptVerifyResult;
try {
@@ -409,8 +435,7 @@ public class OpenPgpService extends RemoteService {
if (PgpDecryptVerifyResult.KEY_PASSHRASE_NEEDED == decryptVerifyResult.getStatus()) {
// get PendingIntent for passphrase input, add it to given params and return to client
return getPassphraseIntent(data, decryptVerifyResult.getKeyIdPassphraseNeeded());
- } else if (PgpDecryptVerifyResult.SYMMETRIC_PASSHRASE_NEEDED ==
- decryptVerifyResult.getStatus()) {
+ } else if (PgpDecryptVerifyResult.SYMMETRIC_PASSHRASE_NEEDED == decryptVerifyResult.getStatus()) {
throw new PgpGeneralException("Decryption of symmetric content not supported by API!");
}
@@ -434,9 +459,18 @@ public class OpenPgpService extends RemoteService {
}
}
+ if (data.getIntExtra(OpenPgpApi.EXTRA_API_VERSION, -1) >= 4) {
+ OpenPgpMetadata metadata = decryptVerifyResult.getDecryptMetadata();
+ if (metadata != null) {
+ result.putExtra(OpenPgpApi.RESULT_METADATA, metadata);
+ }
+ }
+
} finally {
is.close();
- os.close();
+ if (os != null) {
+ os.close();
+ }
}
result.putExtra(OpenPgpApi.RESULT_CODE, OpenPgpApi.RESULT_CODE_SUCCESS);
@@ -492,6 +526,7 @@ public class OpenPgpService extends RemoteService {
return result;
}
} catch (Exception e) {
+ Log.d(Constants.TAG, "getKeyImpl", e);
Intent result = new Intent();
result.putExtra(OpenPgpApi.RESULT_ERROR,
new OpenPgpError(OpenPgpError.GENERIC_ERROR, e.getMessage()));
@@ -537,10 +572,15 @@ public class OpenPgpService extends RemoteService {
}
// version code is required and needs to correspond to version code of service!
- if (data.getIntExtra(OpenPgpApi.EXTRA_API_VERSION, -1) != OpenPgpApi.API_VERSION) {
+ // History of versions in org.openintents.openpgp.util.OpenPgpApi
+ // we support 3 and 4
+ if (data.getIntExtra(OpenPgpApi.EXTRA_API_VERSION, -1) != 3
+ && data.getIntExtra(OpenPgpApi.EXTRA_API_VERSION, -1) != 4) {
Intent result = new Intent();
OpenPgpError error = new OpenPgpError
- (OpenPgpError.INCOMPATIBLE_API_VERSIONS, "Incompatible API versions!");
+ (OpenPgpError.INCOMPATIBLE_API_VERSIONS, "Incompatible API versions!\n"
+ + "used API version: " + data.getIntExtra(OpenPgpApi.EXTRA_API_VERSION, -1) + "\n"
+ + "supported API versions: 3, 4");
result.putExtra(OpenPgpApi.RESULT_ERROR, error);
result.putExtra(OpenPgpApi.RESULT_CODE, OpenPgpApi.RESULT_CODE_ERROR);
return result;
@@ -588,7 +628,13 @@ public class OpenPgpService extends RemoteService {
Set<Long> allowedKeyIds =
mProviderHelper.getAllKeyIdsForApp(
ApiAccounts.buildBaseUri(currentPkg));
- return decryptAndVerifyImpl(data, input, output, allowedKeyIds);
+ return decryptAndVerifyImpl(data, input, output, allowedKeyIds, false);
+ } else if (OpenPgpApi.ACTION_DECRYPT_METADATA.equals(action)) {
+ String currentPkg = getCurrentCallingPackage();
+ Set<Long> allowedKeyIds =
+ mProviderHelper.getAllKeyIdsForApp(
+ ApiAccounts.buildBaseUri(currentPkg));
+ return decryptAndVerifyImpl(data, input, output, allowedKeyIds, true);
} else if (OpenPgpApi.ACTION_GET_KEY.equals(action)) {
return getKeyImpl(data);
} else if (OpenPgpApi.ACTION_GET_KEY_IDS.equals(action)) {
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsActivity.java
index 8f1f46c04..666252353 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsActivity.java
@@ -102,7 +102,7 @@ public class AccountSettingsActivity extends ActionBarActivity {
}
private void save() {
- new ProviderHelper(this).updateApiAccount(mAccountSettingsFragment.getAccSettings(), mAccountUri);
+ new ProviderHelper(this).updateApiAccount(mAccountUri, mAccountSettingsFragment.getAccSettings());
finish();
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/RemoteServiceActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/RemoteServiceActivity.java
index d0b958844..48c76d561 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/RemoteServiceActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/RemoteServiceActivity.java
@@ -18,11 +18,13 @@
package org.sufficientlysecure.keychain.remote.ui;
import android.content.Intent;
+import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
+import android.widget.TextView;
import org.openintents.openpgp.util.OpenPgpApi;
import org.sufficientlysecure.htmltextview.HtmlTextView;
@@ -37,6 +39,7 @@ import org.sufficientlysecure.keychain.ui.SelectPublicKeyFragment;
import org.sufficientlysecure.keychain.ui.dialog.PassphraseDialogFragment;
import org.sufficientlysecure.keychain.util.Log;
+import java.security.Provider;
import java.util.ArrayList;
public class RemoteServiceActivity extends ActionBarActivity {
@@ -76,10 +79,17 @@ public class RemoteServiceActivity extends ActionBarActivity {
// select pub keys view
private SelectPublicKeyFragment mSelectFragment;
+ private ProviderHelper mProviderHelper;
+
+ // for ACTION_CREATE_ACCOUNT
+ boolean mUpdateExistingAccount;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ mProviderHelper = new ProviderHelper(this);
+
handleActions(getIntent(), savedInstanceState);
}
@@ -94,6 +104,14 @@ public class RemoteServiceActivity extends ActionBarActivity {
final byte[] packageSignature = extras.getByteArray(EXTRA_PACKAGE_SIGNATURE);
Log.d(Constants.TAG, "ACTION_REGISTER packageName: " + packageName);
+ setContentView(R.layout.api_remote_register_app);
+
+ mAppSettingsFragment = (AppSettingsFragment) getSupportFragmentManager().findFragmentById(
+ R.id.api_app_settings_fragment);
+
+ AppSettings settings = new AppSettings(packageName, packageSignature);
+ mAppSettingsFragment.setAppSettings(settings);
+
// Inflate a "Done"/"Cancel" custom action bar view
ActionBarHelper.setTwoButtonView(getSupportActionBar(),
R.string.api_register_allow, R.drawable.ic_action_done,
@@ -102,8 +120,7 @@ public class RemoteServiceActivity extends ActionBarActivity {
public void onClick(View v) {
// Allow
- new ProviderHelper(RemoteServiceActivity.this).insertApiApp(
- mAppSettingsFragment.getAppSettings());
+ mProviderHelper.insertApiApp(mAppSettingsFragment.getAppSettings());
// give data through for new service call
Intent resultData = extras.getParcelable(EXTRA_DATA);
@@ -120,18 +137,34 @@ public class RemoteServiceActivity extends ActionBarActivity {
}
}
);
-
- setContentView(R.layout.api_remote_register_app);
-
- mAppSettingsFragment = (AppSettingsFragment) getSupportFragmentManager().findFragmentById(
- R.id.api_app_settings_fragment);
-
- AppSettings settings = new AppSettings(packageName, packageSignature);
- mAppSettingsFragment.setAppSettings(settings);
} else if (ACTION_CREATE_ACCOUNT.equals(action)) {
final String packageName = extras.getString(EXTRA_PACKAGE_NAME);
final String accName = extras.getString(EXTRA_ACC_NAME);
+ setContentView(R.layout.api_remote_create_account);
+
+ mAccSettingsFragment = (AccountSettingsFragment) getSupportFragmentManager().findFragmentById(
+ R.id.api_account_settings_fragment);
+
+ TextView text = (TextView) findViewById(R.id.api_remote_create_account_text);
+
+ // update existing?
+ Uri uri = KeychainContract.ApiAccounts.buildByPackageAndAccountUri(packageName, accName);
+ AccountSettings settings = mProviderHelper.getApiAccountSettings(uri);
+ if (settings == null) {
+ // create new account
+ settings = new AccountSettings(accName);
+ mUpdateExistingAccount = false;
+
+ text.setText(R.string.api_create_account_text);
+ } else {
+ // update existing account
+ mUpdateExistingAccount = true;
+
+ text.setText(R.string.api_update_account_text);
+ }
+ mAccSettingsFragment.setAccSettings(settings);
+
// Inflate a "Done"/"Cancel" custom action bar view
ActionBarHelper.setTwoButtonView(getSupportActionBar(),
R.string.api_settings_save, R.drawable.ic_action_done,
@@ -145,9 +178,17 @@ public class RemoteServiceActivity extends ActionBarActivity {
mAccSettingsFragment.setErrorOnSelectKeyFragment(
getString(R.string.api_register_error_select_key));
} else {
- new ProviderHelper(RemoteServiceActivity.this).insertApiAccount(
- KeychainContract.ApiAccounts.buildBaseUri(packageName),
- mAccSettingsFragment.getAccSettings());
+ if (mUpdateExistingAccount) {
+ Uri baseUri = KeychainContract.ApiAccounts.buildBaseUri(packageName);
+ Uri accountUri = baseUri.buildUpon().appendEncodedPath(accName).build();
+ mProviderHelper.updateApiAccount(
+ accountUri,
+ mAccSettingsFragment.getAccSettings());
+ } else {
+ mProviderHelper.insertApiAccount(
+ KeychainContract.ApiAccounts.buildBaseUri(packageName),
+ mAccSettingsFragment.getAccSettings());
+ }
// give data through for new service call
Intent resultData = extras.getParcelable(EXTRA_DATA);
@@ -166,13 +207,6 @@ public class RemoteServiceActivity extends ActionBarActivity {
}
);
- setContentView(R.layout.api_remote_create_account);
-
- mAccSettingsFragment = (AccountSettingsFragment) getSupportFragmentManager().findFragmentById(
- R.id.api_account_settings_fragment);
-
- AccountSettings settings = new AccountSettings(accName);
- mAccSettingsFragment.setAccSettings(settings);
} else if (ACTION_CACHE_PASSPHRASE.equals(action)) {
long secretKeyId = extras.getLong(EXTRA_SECRET_KEY_ID);
final Intent resultData = extras.getParcelable(EXTRA_DATA);
@@ -190,7 +224,8 @@ public class RemoteServiceActivity extends ActionBarActivity {
RemoteServiceActivity.this.finish();
}
- });
+ }
+ );
} else if (ACTION_SELECT_PUB_KEYS.equals(action)) {
long[] selectedMasterKeyIds = intent.getLongArrayExtra(EXTRA_SELECTED_MASTER_KEY_IDS);
@@ -286,7 +321,8 @@ public class RemoteServiceActivity extends ActionBarActivity {
RemoteServiceActivity.this.setResult(RESULT_CANCELED);
RemoteServiceActivity.this.finish();
}
- });
+ }
+ );
setContentView(R.layout.api_remote_error_message);
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java
index a7115a53d..d6c470e11 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java
@@ -86,6 +86,8 @@ public class KeychainIntentService extends IntentService
public static final String ACTION_DECRYPT_VERIFY = Constants.INTENT_PREFIX + "DECRYPT_VERIFY";
+ public static final String ACTION_DECRYPT_METADATA = Constants.INTENT_PREFIX + "DECRYPT_METADATA";
+
public static final String ACTION_SAVE_KEYRING = Constants.INTENT_PREFIX + "SAVE_KEYRING";
public static final String ACTION_DELETE_FILE_SECURELY = Constants.INTENT_PREFIX
@@ -241,16 +243,17 @@ public class KeychainIntentService extends IntentService
data.putInt(SELECTED_URI, i);
InputData inputData = createEncryptInputData(data);
OutputStream outStream = createCryptOutputStream(data);
+ String originalFilename = getOriginalFilename(data);
/* Operation */
PgpSignEncrypt.Builder builder =
new PgpSignEncrypt.Builder(
new ProviderHelper(this),
- PgpHelper.getFullVersion(this),
inputData, outStream);
builder.setProgressable(this);
builder.setEnableAsciiArmorOutput(useAsciiArmor)
+ .setVersionHeader(PgpHelper.getVersionForHeader(this))
.setCompressionId(compressionId)
.setSymmetricEncryptionAlgorithm(
Preferences.getPreferences(this).getDefaultEncryptionAlgorithm())
@@ -261,7 +264,8 @@ public class KeychainIntentService extends IntentService
.setSignatureHashAlgorithm(
Preferences.getPreferences(this).getDefaultHashAlgorithm())
.setSignaturePassphrase(
- PassphraseCacheService.getCachedPassphrase(this, signatureKeyId));
+ PassphraseCacheService.getCachedPassphrase(this, signatureKeyId))
+ .setOriginalFilename(originalFilename);
// this assumes that the bytes are cleartext (valid for current implementation!)
if (source == IO_BYTES) {
@@ -302,15 +306,19 @@ public class KeychainIntentService extends IntentService
new ProviderHelper(this),
new PgpDecryptVerify.PassphraseCache() {
@Override
- public String getCachedPassphrase(long masterKeyId) {
- return PassphraseCacheService.getCachedPassphrase(
- KeychainIntentService.this, masterKeyId);
+ public String getCachedPassphrase(long masterKeyId) throws PgpDecryptVerify.NoSecretKeyException {
+ try {
+ return PassphraseCacheService.getCachedPassphrase(
+ KeychainIntentService.this, masterKeyId);
+ } catch (PassphraseCacheService.KeyNotFoundException e) {
+ throw new PgpDecryptVerify.NoSecretKeyException();
+ }
}
},
- inputData, outStream);
- builder.setProgressable(this);
-
- builder.setAllowSymmetricDecryption(true)
+ inputData, outStream
+ );
+ builder.setProgressable(this)
+ .setAllowSymmetricDecryption(true)
.setPassphrase(passphrase);
PgpDecryptVerifyResult decryptVerifyResult = builder.build().execute();
@@ -329,6 +337,50 @@ public class KeychainIntentService extends IntentService
} catch (Exception e) {
sendErrorToHandler(e);
}
+ } else if (ACTION_DECRYPT_METADATA.equals(action)) {
+ try {
+ /* Input */
+ String passphrase = data.getString(DECRYPT_PASSPHRASE);
+
+ InputData inputData = createDecryptInputData(data);
+
+ /* Operation */
+
+ Bundle resultData = new Bundle();
+
+ // verifyText and decrypt returning additional resultData values for the
+ // verification of signatures
+ PgpDecryptVerify.Builder builder = new PgpDecryptVerify.Builder(
+ new ProviderHelper(this),
+ new PgpDecryptVerify.PassphraseCache() {
+ @Override
+ public String getCachedPassphrase(long masterKeyId) throws PgpDecryptVerify.NoSecretKeyException {
+ try {
+ return PassphraseCacheService.getCachedPassphrase(
+ KeychainIntentService.this, masterKeyId);
+ } catch (PassphraseCacheService.KeyNotFoundException e) {
+ throw new PgpDecryptVerify.NoSecretKeyException();
+ }
+ }
+ },
+ inputData, null
+ );
+ builder.setProgressable(this)
+ .setAllowSymmetricDecryption(true)
+ .setPassphrase(passphrase)
+ .setDecryptMetadataOnly(true);
+
+ PgpDecryptVerifyResult decryptVerifyResult = builder.build().execute();
+
+ resultData.putParcelable(RESULT_DECRYPT_VERIFY_RESULT, decryptVerifyResult);
+
+ /* Output */
+ OtherHelper.logDebugBundle(resultData, "resultData");
+
+ sendMessageToHandler(KeychainIntentServiceHandler.MESSAGE_OKAY, resultData);
+ } catch (Exception e) {
+ sendErrorToHandler(e);
+ }
} else if (ACTION_SAVE_KEYRING.equals(action)) {
try {
/* Input */
@@ -355,7 +407,7 @@ public class KeychainIntentService extends IntentService
UncachedKeyRing ring = result.getRing();
- providerHelper.saveSecretKeyRing(ring, new ProgressScaler(this, 60, 95, 100));
+ providerHelper.saveSecretKeyRing(ring, new ProgressScaler(this, 60, 95, 100));
// cache new passphrase
if (saveParcel.mNewPassphrase != null) {
@@ -402,7 +454,7 @@ public class KeychainIntentService extends IntentService
} else {
// get entries from cached file
FileImportCache<ParcelableKeyRing> cache =
- new FileImportCache<ParcelableKeyRing>(this);
+ new FileImportCache<ParcelableKeyRing>(this);
entries = cache.readCacheIntoList();
}
@@ -575,7 +627,7 @@ public class KeychainIntentService extends IntentService
CanonicalizedPublicKeyRing publicRing = providerHelper.getCanonicalizedPublicKeyRing(pubKeyId);
CanonicalizedSecretKeyRing secretKeyRing = providerHelper.getCanonicalizedSecretKeyRing(masterKeyId);
CanonicalizedSecretKey certificationKey = secretKeyRing.getSecretKey();
- if(!certificationKey.unlock(signaturePassphrase)) {
+ if (!certificationKey.unlock(signaturePassphrase)) {
throw new PgpGeneralException("Error extracting key (bad passphrase?)");
}
UncachedKeyRing newRing = certificationKey.certifyUserIds(publicRing, userIds);
@@ -728,6 +780,27 @@ public class KeychainIntentService extends IntentService
}
}
+ private String getOriginalFilename(Bundle data) throws PgpGeneralException, FileNotFoundException {
+ int target = data.getInt(TARGET);
+ switch (target) {
+ case IO_BYTES:
+ return "";
+
+ case IO_URI:
+ Uri providerUri = data.getParcelable(ENCRYPT_INPUT_URI);
+
+ return FileHelper.getFilename(this, providerUri);
+
+ case IO_URIS:
+ providerUri = data.<Uri>getParcelableArrayList(ENCRYPT_INPUT_URIS).get(data.getInt(SELECTED_URI));
+
+ return FileHelper.getFilename(this, providerUri);
+
+ default:
+ throw new PgpGeneralException("No target choosen!");
+ }
+ }
+
private OutputStream createCryptOutputStream(Bundle data) throws PgpGeneralException, FileNotFoundException {
int target = data.getInt(TARGET);
switch (target) {
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/PassphraseCacheService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/PassphraseCacheService.java
index e813ca26c..8cd9876eb 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/PassphraseCacheService.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/PassphraseCacheService.java
@@ -77,12 +77,24 @@ public class PassphraseCacheService extends Service {
private static final int NOTIFICATION_ID = 1;
+ private static final int MSG_PASSPHRASE_CACHE_GET_OKAY = 1;
+ private static final int MSG_PASSPHRASE_CACHE_GET_KEY_NO_FOUND = 2;
+
private BroadcastReceiver mIntentReceiver;
private LongSparseArray<CachedPassphrase> mPassphraseCache = new LongSparseArray<CachedPassphrase>();
Context mContext;
+ public static class KeyNotFoundException extends Exception {
+ public KeyNotFoundException() {
+ }
+
+ public KeyNotFoundException(String name) {
+ super(name);
+ }
+ }
+
/**
* This caches a new passphrase in memory by sending a new command to the service. An android
* service is only run once. Thus, when the service is already started, new commands just add
@@ -115,24 +127,23 @@ public class PassphraseCacheService extends Service {
* @param keyId
* @return passphrase or null (if no passphrase is cached for this keyId)
*/
- public static String getCachedPassphrase(Context context, long keyId) {
+ public static String getCachedPassphrase(Context context, long keyId) throws KeyNotFoundException {
Log.d(Constants.TAG, "PassphraseCacheService.getCachedPassphrase() get masterKeyId for " + keyId);
Intent intent = new Intent(context, PassphraseCacheService.class);
intent.setAction(ACTION_PASSPHRASE_CACHE_GET);
final Object mutex = new Object();
- final Bundle returnBundle = new Bundle();
+ final Message returnMessage = Message.obtain();
HandlerThread handlerThread = new HandlerThread("getPassphraseThread");
handlerThread.start();
Handler returnHandler = new Handler(handlerThread.getLooper()) {
@Override
public void handleMessage(Message message) {
- if (message.obj != null) {
- String passphrase = ((Bundle) message.obj).getString(EXTRA_PASSPHRASE);
- returnBundle.putString(EXTRA_PASSPHRASE, passphrase);
- }
+ // copy over result to handle after mutex.wait
+ returnMessage.what = message.what;
+ returnMessage.copyFrom(message);
synchronized (mutex) {
mutex.notify();
}
@@ -156,10 +167,13 @@ public class PassphraseCacheService extends Service {
}
}
- if (returnBundle.containsKey(EXTRA_PASSPHRASE)) {
- return returnBundle.getString(EXTRA_PASSPHRASE);
- } else {
- return null;
+ switch (returnMessage.what) {
+ case MSG_PASSPHRASE_CACHE_GET_OKAY:
+ return returnMessage.getData().getString(EXTRA_PASSPHRASE);
+ case MSG_PASSPHRASE_CACHE_GET_KEY_NO_FOUND:
+ throw new KeyNotFoundException();
+ default:
+ throw new KeyNotFoundException("should not happen!");
}
}
@@ -169,7 +183,7 @@ public class PassphraseCacheService extends Service {
* @param keyId
* @return
*/
- private String getCachedPassphraseImpl(long keyId) {
+ private String getCachedPassphraseImpl(long keyId) throws ProviderHelper.NotFoundException {
// passphrase for symmetric encryption?
if (keyId == Constants.key.symmetric) {
Log.d(Constants.TAG, "PassphraseCacheService.getCachedPassphraseImpl() for symmetric encryption");
@@ -182,46 +196,41 @@ public class PassphraseCacheService extends Service {
}
// try to get master key id which is used as an identifier for cached passphrases
- try {
- Log.d(Constants.TAG, "PassphraseCacheService.getCachedPassphraseImpl() for masterKeyId " + keyId);
- CanonicalizedSecretKeyRing key = new ProviderHelper(this).getCanonicalizedSecretKeyRing(
- KeychainContract.KeyRings.buildUnifiedKeyRingsFindBySubkeyUri(keyId));
- // no passphrase needed? just add empty string and return it, then
- if (!key.hasPassphrase()) {
- Log.d(Constants.TAG, "Key has no passphrase! Caches and returns empty passphrase!");
+ Log.d(Constants.TAG, "PassphraseCacheService.getCachedPassphraseImpl() for masterKeyId " + keyId);
+ CanonicalizedSecretKeyRing key = new ProviderHelper(this).getCanonicalizedSecretKeyRing(
+ KeychainContract.KeyRings.buildUnifiedKeyRingsFindBySubkeyUri(keyId));
- try {
- addCachedPassphrase(this, keyId, "", key.getPrimaryUserIdWithFallback());
- } catch (PgpGeneralException e) {
- Log.d(Constants.TAG, "PgpGeneralException occured");
- }
- return "";
- }
+ // no passphrase needed? just add empty string and return it, then
+ if (!key.hasPassphrase()) {
+ Log.d(Constants.TAG, "Key has no passphrase! Caches and returns empty passphrase!");
- // TODO: HACK
+ // TODO: HACK for yubikeys
if (key.getSecretKey().getSecretKey().getS2K().getType() == S2K.GNU_DUMMY_S2K
&& key.getSecretKey().getSecretKey().getS2K().getProtectionMode() == 2) {
// NFC!
return "123456";
}
- // get cached passphrase
- CachedPassphrase cachedPassphrase = mPassphraseCache.get(keyId);
- if (cachedPassphrase == null) {
- Log.d(Constants.TAG, "PassphraseCacheService: Passphrase not (yet) cached, returning null");
- // not really an error, just means the passphrase is not cached but not empty either
- return null;
+ try {
+ addCachedPassphrase(this, keyId, "", key.getPrimaryUserIdWithFallback());
+ } catch (PgpGeneralException e) {
+ Log.d(Constants.TAG, "PgpGeneralException occured");
}
+ return "";
+ }
- // set it again to reset the cache life cycle
- Log.d(Constants.TAG, "PassphraseCacheService: Cache passphrase again when getting it!");
- addCachedPassphrase(this, keyId, cachedPassphrase.getPassphrase(), cachedPassphrase.getPrimaryUserID());
- return cachedPassphrase.getPassphrase();
-
- } catch (ProviderHelper.NotFoundException e) {
- Log.e(Constants.TAG, "PassphraseCacheService: Passphrase for unknown key was requested!");
+ // get cached passphrase
+ CachedPassphrase cachedPassphrase = mPassphraseCache.get(keyId);
+ if (cachedPassphrase == null) {
+ Log.d(Constants.TAG, "PassphraseCacheService: Passphrase not (yet) cached, returning null");
+ // not really an error, just means the passphrase is not cached but not empty either
return null;
}
+
+ // set it again to reset the cache life cycle
+ Log.d(Constants.TAG, "PassphraseCacheService: Cache passphrase again when getting it!");
+ addCachedPassphrase(this, keyId, cachedPassphrase.getPassphrase(), cachedPassphrase.getPrimaryUserID());
+ return cachedPassphrase.getPassphrase();
}
/**
@@ -303,12 +312,19 @@ public class PassphraseCacheService extends Service {
long keyId = intent.getLongExtra(EXTRA_KEY_ID, -1);
Messenger messenger = intent.getParcelableExtra(EXTRA_MESSENGER);
- String passphrase = getCachedPassphraseImpl(keyId);
Message msg = Message.obtain();
- Bundle bundle = new Bundle();
- bundle.putString(EXTRA_PASSPHRASE, passphrase);
- msg.obj = bundle;
+ try {
+ String passphrase = getCachedPassphraseImpl(keyId);
+ msg.what = MSG_PASSPHRASE_CACHE_GET_OKAY;
+ Bundle bundle = new Bundle();
+ bundle.putString(EXTRA_PASSPHRASE, passphrase);
+ msg.setData(bundle);
+ } catch (ProviderHelper.NotFoundException e) {
+ Log.e(Constants.TAG, "PassphraseCacheService: Passphrase for unknown key was requested!");
+ msg.what = MSG_PASSPHRASE_CACHE_GET_KEY_NO_FOUND;
+ }
+
try {
messenger.send(msg);
} catch (RemoteException e) {
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyActivity.java
index 467e0c14a..c1986825c 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyActivity.java
@@ -231,7 +231,14 @@ public class CertifyKeyActivity extends ActionBarActivity implements
*/
private void initiateCertifying() {
// get the user's passphrase for this key (if required)
- String passphrase = PassphraseCacheService.getCachedPassphrase(this, mMasterKeyId);
+ String passphrase = null;
+ try {
+ passphrase = PassphraseCacheService.getCachedPassphrase(this, mMasterKeyId);
+ } catch (PassphraseCacheService.KeyNotFoundException e) {
+ Log.e(Constants.TAG, "Key not found!", e);
+ finish();
+ return;
+ }
if (passphrase == null) {
PassphraseDialogFragment.show(this, mMasterKeyId,
new Handler() {
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFileFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFileFragment.java
index c33b1489a..845fbfa3b 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFileFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFileFragment.java
@@ -23,8 +23,10 @@ import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
+import android.os.Handler;
import android.os.Message;
import android.os.Messenger;
+import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -38,6 +40,7 @@ import org.sufficientlysecure.keychain.pgp.PgpDecryptVerifyResult;
import org.sufficientlysecure.keychain.service.KeychainIntentService;
import org.sufficientlysecure.keychain.service.KeychainIntentServiceHandler;
import org.sufficientlysecure.keychain.ui.dialog.DeleteFileDialogFragment;
+import org.sufficientlysecure.keychain.ui.dialog.PassphraseDialogFragment;
import org.sufficientlysecure.keychain.util.Log;
import org.sufficientlysecure.keychain.util.Notify;
@@ -113,7 +116,8 @@ public class DecryptFileFragment extends DecryptFragment {
return;
}
- askForOutputFilename();
+// askForOutputFilename();
+ decryptOriginalFilename(null);
}
private String removeEncryptedAppend(String name) {
@@ -123,8 +127,13 @@ public class DecryptFileFragment extends DecryptFragment {
return name;
}
- private void askForOutputFilename() {
- String targetName = removeEncryptedAppend(FileHelper.getFilename(getActivity(), mInputUri));
+ private void askForOutputFilename(String originalFilename) {
+ String targetName;
+ if (!TextUtils.isEmpty(originalFilename)) {
+ targetName = originalFilename;
+ } else {
+ targetName = removeEncryptedAppend(FileHelper.getFilename(getActivity(), mInputUri));
+ }
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
File file = new File(mInputUri.getPath());
File parentDir = file.exists() ? file.getParentFile() : Constants.Path.APP_DIR;
@@ -136,6 +145,82 @@ public class DecryptFileFragment extends DecryptFragment {
}
}
+ private void decryptOriginalFilename(String passphrase) {
+ Log.d(Constants.TAG, "decryptOriginalFilename");
+
+ Intent intent = new Intent(getActivity(), KeychainIntentService.class);
+
+ // fill values for this action
+ Bundle data = new Bundle();
+ intent.setAction(KeychainIntentService.ACTION_DECRYPT_METADATA);
+
+ // data
+ Log.d(Constants.TAG, "mInputUri=" + mInputUri + ", mOutputUri=" + mOutputUri);
+
+ data.putInt(KeychainIntentService.SOURCE, KeychainIntentService.IO_URI);
+ data.putParcelable(KeychainIntentService.ENCRYPT_INPUT_URI, mInputUri);
+
+ data.putInt(KeychainIntentService.TARGET, KeychainIntentService.IO_URI);
+ data.putParcelable(KeychainIntentService.ENCRYPT_OUTPUT_URI, mOutputUri);
+
+ data.putString(KeychainIntentService.DECRYPT_PASSPHRASE, passphrase);
+
+ intent.putExtra(KeychainIntentService.EXTRA_DATA, data);
+
+ // Message is received after decrypting is done in KeychainIntentService
+ KeychainIntentServiceHandler saveHandler = new KeychainIntentServiceHandler(getActivity(),
+ getString(R.string.progress_decrypting), ProgressDialog.STYLE_HORIZONTAL) {
+ public void handleMessage(Message message) {
+ // handle messages by standard KeychainIntentServiceHandler first
+ super.handleMessage(message);
+
+ if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) {
+ // get returned data bundle
+ Bundle returnData = message.getData();
+
+ PgpDecryptVerifyResult decryptVerifyResult =
+ returnData.getParcelable(KeychainIntentService.RESULT_DECRYPT_VERIFY_RESULT);
+
+ if (PgpDecryptVerifyResult.KEY_PASSHRASE_NEEDED == decryptVerifyResult.getStatus()) {
+ showPassphraseDialogForFilename(decryptVerifyResult.getKeyIdPassphraseNeeded());
+ } else if (PgpDecryptVerifyResult.SYMMETRIC_PASSHRASE_NEEDED ==
+ decryptVerifyResult.getStatus()) {
+ showPassphraseDialogForFilename(Constants.key.symmetric);
+ } else {
+
+ // go on...
+ askForOutputFilename(decryptVerifyResult.getDecryptMetadata().getFilename());
+ }
+ }
+ }
+ };
+
+ // Create a new Messenger for the communication back
+ Messenger messenger = new Messenger(saveHandler);
+ intent.putExtra(KeychainIntentService.EXTRA_MESSENGER, messenger);
+
+ // show progress dialog
+ saveHandler.showProgressDialog(getActivity());
+
+ // start service with intent
+ getActivity().startService(intent);
+ }
+
+ protected void showPassphraseDialogForFilename(long keyId) {
+ PassphraseDialogFragment.show(getActivity(), keyId,
+ new Handler() {
+ @Override
+ public void handleMessage(Message message) {
+ if (message.what == PassphraseDialogFragment.MESSAGE_OKAY) {
+ String passphrase =
+ message.getData().getString(PassphraseDialogFragment.MESSAGE_DATA_PASSPHRASE);
+ decryptOriginalFilename(passphrase);
+ }
+ }
+ }
+ );
+ }
+
@Override
protected void decryptStart(String passphrase) {
Log.d(Constants.TAG, "decryptStart");
@@ -161,7 +246,7 @@ public class DecryptFileFragment extends DecryptFragment {
intent.putExtra(KeychainIntentService.EXTRA_DATA, data);
- // Message is received after encrypting is done in KeychainIntentService
+ // Message is received after decrypting is done in KeychainIntentService
KeychainIntentServiceHandler saveHandler = new KeychainIntentServiceHandler(getActivity(),
getString(R.string.progress_decrypting), ProgressDialog.STYLE_HORIZONTAL) {
public void handleMessage(Message message) {
@@ -178,7 +263,7 @@ public class DecryptFileFragment extends DecryptFragment {
if (PgpDecryptVerifyResult.KEY_PASSHRASE_NEEDED == decryptVerifyResult.getStatus()) {
showPassphraseDialog(decryptVerifyResult.getKeyIdPassphraseNeeded());
} else if (PgpDecryptVerifyResult.SYMMETRIC_PASSHRASE_NEEDED ==
- decryptVerifyResult.getStatus()) {
+ decryptVerifyResult.getStatus()) {
showPassphraseDialog(Constants.key.symmetric);
} else {
// display signature result in activity
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java
index 5be196a45..03074bb6a 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java
@@ -339,6 +339,10 @@ public class EditKeyFragment extends LoaderFragment implements
mSaveKeyringParcel.mRevokeUserIds.remove(userId);
} else {
mSaveKeyringParcel.mRevokeUserIds.add(userId);
+ // not possible to revoke and change to primary user id
+ if (mSaveKeyringParcel.mChangePrimaryUserId.equals(userId)) {
+ mSaveKeyringParcel.mChangePrimaryUserId = null;
+ }
}
break;
}
@@ -471,8 +475,14 @@ public class EditKeyFragment extends LoaderFragment implements
}
private void cachePassphraseForEdit() {
- mCurrentPassphrase = PassphraseCacheService.getCachedPassphrase(getActivity(),
- mSaveKeyringParcel.mMasterKeyId);
+ try {
+ mCurrentPassphrase = PassphraseCacheService.getCachedPassphrase(getActivity(),
+ mSaveKeyringParcel.mMasterKeyId);
+ } catch (PassphraseCacheService.KeyNotFoundException e) {
+ Log.e(Constants.TAG, "Key not found!", e);
+ getActivity().finish();
+ return;
+ }
if (mCurrentPassphrase == null) {
PassphraseDialogFragment.show(getActivity(), mSaveKeyringParcel.mMasterKeyId,
new Handler() {
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 94f828b48..7e08f6b7c 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java
@@ -81,10 +81,6 @@ public class EncryptActivity extends DrawerActivity implements EncryptActivityIn
PagerTabStripAdapter mTabsAdapterContent;
// tabs
- Bundle mAsymmetricFragmentBundle = new Bundle();
- Bundle mSymmetricFragmentBundle = new Bundle();
- Bundle mMessageFragmentBundle = new Bundle();
- Bundle mFileFragmentBundle = new Bundle();
int mSwitchToMode = PAGER_MODE_ASYMMETRIC;
int mSwitchToContent = PAGER_CONTENT_MESSAGE;
@@ -93,7 +89,7 @@ public class EncryptActivity extends DrawerActivity implements EncryptActivityIn
private static final int PAGER_CONTENT_MESSAGE = 0;
private static final int PAGER_CONTENT_FILE = 1;
- // model used by message and file fragments
+ // model used by fragments
private long mEncryptionKeyIds[] = null;
private String mEncryptionUserIds[] = null;
private long mSigningKeyId = Constants.key.none;
@@ -267,21 +263,23 @@ public class EncryptActivity extends DrawerActivity implements EncryptActivityIn
if (isContentMessage()) {
data.putInt(KeychainIntentService.TARGET, KeychainIntentService.IO_BYTES);
data.putByteArray(KeychainIntentService.ENCRYPT_MESSAGE_BYTES, mMessage.getBytes());
+
+ data.putInt(KeychainIntentService.ENCRYPT_COMPRESSION_ID,
+ Preferences.getPreferences(this).getDefaultMessageCompression());
} else {
data.putInt(KeychainIntentService.SOURCE, KeychainIntentService.IO_URIS);
data.putParcelableArrayList(KeychainIntentService.ENCRYPT_INPUT_URIS, mInputUris);
data.putInt(KeychainIntentService.TARGET, KeychainIntentService.IO_URIS);
data.putParcelableArrayList(KeychainIntentService.ENCRYPT_OUTPUT_URIS, mOutputUris);
+
+ data.putInt(KeychainIntentService.ENCRYPT_COMPRESSION_ID,
+ Preferences.getPreferences(this).getDefaultFileCompression());
}
// Always use armor for messages
data.putBoolean(KeychainIntentService.ENCRYPT_USE_ASCII_ARMOR, mUseArmor || isContentMessage());
- // TODO: Only default compression right now...
- int compressionId = Preferences.getPreferences(this).getDefaultMessageCompression();
- data.putInt(KeychainIntentService.ENCRYPT_COMPRESSION_ID, compressionId);
-
if (isModeSymmetric()) {
Log.d(Constants.TAG, "Symmetric encryption enabled!");
String passphrase = mPassphrase;
@@ -426,7 +424,6 @@ public class EncryptActivity extends DrawerActivity implements EncryptActivityIn
if (isModeSymmetric()) {
// symmetric encryption checks
-
if (mPassphrase == null) {
Notify.showNotify(this, R.string.passphrases_do_not_match, Notify.Style.ERROR);
return false;
@@ -453,20 +450,24 @@ public class EncryptActivity extends DrawerActivity implements EncryptActivityIn
return false;
}
- if (mSigningKeyId != 0 && PassphraseCacheService.getCachedPassphrase(this, mSigningKeyId) == null) {
- PassphraseDialogFragment.show(this, mSigningKeyId,
- new Handler() {
- @Override
- public void handleMessage(Message message) {
- if (message.what == PassphraseDialogFragment.MESSAGE_OKAY) {
- // restart
- startEncrypt();
+ try {
+ if (mSigningKeyId != 0 && PassphraseCacheService.getCachedPassphrase(this, mSigningKeyId) == null) {
+ PassphraseDialogFragment.show(this, mSigningKeyId,
+ new Handler() {
+ @Override
+ public void handleMessage(Message message) {
+ if (message.what == PassphraseDialogFragment.MESSAGE_OKAY) {
+ // restart
+ startEncrypt();
+ }
}
}
- }
- );
+ );
- return false;
+ return false;
+ }
+ } catch (PassphraseCacheService.KeyNotFoundException e) {
+ Log.e(Constants.TAG, "Key not found!", e);
}
}
return true;
@@ -502,16 +503,12 @@ public class EncryptActivity extends DrawerActivity implements EncryptActivityIn
// Handle intent actions
handleActions(getIntent());
- mTabsAdapterMode.addTab(EncryptAsymmetricFragment.class,
- mAsymmetricFragmentBundle, getString(R.string.label_asymmetric));
- mTabsAdapterMode.addTab(EncryptSymmetricFragment.class,
- mSymmetricFragmentBundle, getString(R.string.label_symmetric));
+ mTabsAdapterMode.addTab(EncryptAsymmetricFragment.class, null, getString(R.string.label_asymmetric));
+ mTabsAdapterMode.addTab(EncryptSymmetricFragment.class, null, getString(R.string.label_symmetric));
mViewPagerMode.setCurrentItem(mSwitchToMode);
- mTabsAdapterContent.addTab(EncryptMessageFragment.class,
- mMessageFragmentBundle, getString(R.string.label_message));
- mTabsAdapterContent.addTab(EncryptFileFragment.class,
- mFileFragmentBundle, getString(R.string.label_files));
+ mTabsAdapterContent.addTab(EncryptMessageFragment.class, null, getString(R.string.label_message));
+ mTabsAdapterContent.addTab(EncryptFileFragment.class, null, getString(R.string.label_files));
mViewPagerContent.setCurrentItem(mSwitchToContent);
mUseArmor = Preferences.getPreferences(this).getDefaultAsciiArmor();
@@ -603,14 +600,10 @@ public class EncryptActivity extends DrawerActivity implements EncryptActivityIn
String textData = extras.getString(EXTRA_TEXT);
- long signatureKeyId = extras.getLong(EXTRA_SIGNATURE_KEY_ID);
- long[] encryptionKeyIds = extras.getLongArray(EXTRA_ENCRYPTION_KEY_IDS);
+ mSigningKeyId = extras.getLong(EXTRA_SIGNATURE_KEY_ID);
+ mEncryptionKeyIds = extras.getLongArray(EXTRA_ENCRYPTION_KEY_IDS);
// preselect keys given by intent
- mAsymmetricFragmentBundle.putLongArray(EncryptAsymmetricFragment.ARG_ENCRYPTION_KEY_IDS,
- encryptionKeyIds);
- mAsymmetricFragmentBundle.putLong(EncryptAsymmetricFragment.ARG_SIGNATURE_KEY_ID,
- signatureKeyId);
mSwitchToMode = PAGER_MODE_ASYMMETRIC;
/**
@@ -618,11 +611,11 @@ public class EncryptActivity extends DrawerActivity implements EncryptActivityIn
*/
if (ACTION_ENCRYPT.equals(action) && textData != null) {
// encrypt text based on given extra
- mMessageFragmentBundle.putString(EncryptMessageFragment.ARG_TEXT, textData);
+ mMessage = textData;
mSwitchToContent = PAGER_CONTENT_MESSAGE;
} else if (ACTION_ENCRYPT.equals(action) && uris != null && !uris.isEmpty()) {
// encrypt file based on Uri
- mFileFragmentBundle.putParcelableArrayList(EncryptFileFragment.ARG_URIS, uris);
+ mInputUris = uris;
mSwitchToContent = PAGER_CONTENT_FILE;
} else if (ACTION_ENCRYPT.equals(action)) {
Log.e(Constants.TAG,
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptAsymmetricFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptAsymmetricFragment.java
index 3de617ca0..a402b6f68 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptAsymmetricFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptAsymmetricFragment.java
@@ -123,14 +123,10 @@ public class EncryptAsymmetricFragment extends Fragment implements EncryptActivi
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
-
- long signatureKeyId = getArguments().getLong(ARG_SIGNATURE_KEY_ID);
- long[] encryptionKeyIds = getArguments().getLongArray(ARG_ENCRYPTION_KEY_IDS);
-
mProviderHelper = new ProviderHelper(getActivity());
- // preselect keys given by arguments (given by Intent to EncryptActivity)
- preselectKeys(signatureKeyId, encryptionKeyIds, mProviderHelper);
+ // preselect keys given
+ preselectKeys();
getLoaderManager().initLoader(1, null, new LoaderManager.LoaderCallbacks<Cursor>() {
@Override
@@ -145,24 +141,17 @@ public class EncryptAsymmetricFragment extends Fragment implements EncryptActivi
KeyRings.MASTER_KEY_ID,
KeyRings.KEY_ID,
KeyRings.USER_ID,
- KeyRings.EXPIRY,
- KeyRings.IS_REVOKED,
- // can certify info only related to master key
- KeyRings.CAN_CERTIFY,
- // has sign may be any subkey
+ KeyRings.IS_EXPIRED,
KeyRings.HAS_SIGN,
- KeyRings.HAS_ANY_SECRET,
- KeyRings.HAS_SECRET
+ KeyRings.HAS_ANY_SECRET
};
- String where = KeyRings.HAS_ANY_SECRET + " = 1";
+ String where = KeyRings.HAS_ANY_SECRET + " = 1 AND " + KeyRings.HAS_SIGN + " NOT NULL AND "
+ + KeyRings.IS_REVOKED + " = 0 AND " + KeyRings.IS_EXPIRED + " = 0";
// Now create and return a CursorLoader that will take care of
// creating a Cursor for the data being displayed.
return new CursorLoader(getActivity(), baseUri, projection, where, null, null);
- /*return new CursorLoader(getActivity(), KeyRings.buildUnifiedKeyRingsUri(),
- new String[]{KeyRings.USER_ID, KeyRings.KEY_ID, KeyRings.MASTER_KEY_ID, KeyRings.HAS_ANY_SECRET}, SIGN_KEY_SELECTION,
- null, null);*/
}
@Override
@@ -194,19 +183,15 @@ public class EncryptAsymmetricFragment extends Fragment implements EncryptActivi
/**
* If an Intent gives a signatureMasterKeyId and/or encryptionMasterKeyIds, preselect those!
- *
- * @param preselectedSignatureKeyId
- * @param preselectedEncryptionKeyIds
*/
- private void preselectKeys(long preselectedSignatureKeyId, long[] preselectedEncryptionKeyIds,
- ProviderHelper providerHelper) {
+ private void preselectKeys() {
// TODO all of this works under the assumption that the first suitable subkey is always used!
// not sure if we need to distinguish between different subkeys here?
- if (preselectedSignatureKeyId != 0) {
+ long signatureKey = mEncryptInterface.getSignatureKey();
+ if (signatureKey != Constants.key.none) {
try {
- CachedPublicKeyRing keyring =
- providerHelper.getCachedPublicKeyRing(
- KeyRings.buildUnifiedKeyRingUri(preselectedSignatureKeyId));
+ CachedPublicKeyRing keyring = mProviderHelper.getCachedPublicKeyRing(
+ KeyRings.buildUnifiedKeyRingUri(signatureKey));
if(keyring.hasAnySecret()) {
setSignatureKeyId(keyring.getMasterKeyId());
}
@@ -215,10 +200,11 @@ public class EncryptAsymmetricFragment extends Fragment implements EncryptActivi
}
}
- if (preselectedEncryptionKeyIds != null) {
- for (long preselectedId : preselectedEncryptionKeyIds) {
+ long[] encryptionKeyIds = mEncryptInterface.getEncryptionKeys();
+ if (encryptionKeyIds != null) {
+ for (long preselectedId : encryptionKeyIds) {
try {
- CachedPublicKeyRing ring = providerHelper.getCachedPublicKeyRing(
+ CachedPublicKeyRing ring = mProviderHelper.getCachedPublicKeyRing(
KeyRings.buildUnifiedKeyRingsFindBySubkeyUri(preselectedId));
mEncryptKeyView.addObject(mEncryptKeyView.new EncryptionKey(ring));
} catch (PgpGeneralException e) {
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFileFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFileFragment.java
index 8a9e17020..14d3d1c4a 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFileFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFileFragment.java
@@ -111,8 +111,6 @@ public class EncryptFileFragment extends Fragment implements EncryptActivityInte
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
-
- addInputUris(getArguments().<Uri>getParcelableArrayList(ARG_URIS));
}
private void addInputUri() {
@@ -125,14 +123,6 @@ public class EncryptFileFragment extends Fragment implements EncryptActivityInte
}
}
- private void addInputUris(List<Uri> uris) {
- if (uris != null) {
- for (Uri uri : uris) {
- addInputUri(uri);
- }
- }
- }
-
private void addInputUri(Uri inputUri) {
if (inputUri == null) {
return;
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PreferencesActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PreferencesActivity.java
index a6561dfad..de3236d35 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PreferencesActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/PreferencesActivity.java
@@ -119,8 +119,8 @@ public class PreferencesActivity extends PreferenceActivity {
initializeAsciiArmor(
(CheckBoxPreference) findPreference(Constants.Pref.DEFAULT_ASCII_ARMOR));
- initializeConcealPgpApplication(
- (CheckBoxPreference) findPreference(Constants.Pref.CONCEAL_PGP_APPLICATION));
+ initializeWriteVersionHeader(
+ (CheckBoxPreference) findPreference(Constants.Pref.WRITE_VERSION_HEADER));
} else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
// Load the legacy preferences headers
@@ -263,8 +263,8 @@ public class PreferencesActivity extends PreferenceActivity {
initializeAsciiArmor(
(CheckBoxPreference) findPreference(Constants.Pref.DEFAULT_ASCII_ARMOR));
- initializeConcealPgpApplication(
- (CheckBoxPreference) findPreference(Constants.Pref.CONCEAL_PGP_APPLICATION));
+ initializeWriteVersionHeader(
+ (CheckBoxPreference) findPreference(Constants.Pref.WRITE_VERSION_HEADER));
}
}
@@ -386,12 +386,12 @@ public class PreferencesActivity extends PreferenceActivity {
});
}
- private static void initializeConcealPgpApplication(final CheckBoxPreference mConcealPgpApplication) {
- mConcealPgpApplication.setChecked(sPreferences.getConcealPgpApplication());
- mConcealPgpApplication.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
+ private static void initializeWriteVersionHeader(final CheckBoxPreference mWriteVersionHeader) {
+ mWriteVersionHeader.setChecked(sPreferences.getWriteVersionHeader());
+ mWriteVersionHeader.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference preference, Object newValue) {
- mConcealPgpApplication.setChecked((Boolean) newValue);
- sPreferences.setConcealPgpApplication((Boolean) newValue);
+ mWriteVersionHeader.setChecked((Boolean) newValue);
+ sPreferences.setWriteVersionHeader((Boolean) newValue);
return false;
}
});
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyMainFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyMainFragment.java
index 370a7312f..08243f06b 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyMainFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyMainFragment.java
@@ -22,17 +22,22 @@ import android.database.Cursor;
import android.graphics.PorterDuff;
import android.net.Uri;
import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.os.Messenger;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.ListView;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.R;
+import org.sufficientlysecure.keychain.compatibility.DialogFragmentWorkaround;
import org.sufficientlysecure.keychain.pgp.PgpKeyHelper;
import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralException;
import org.sufficientlysecure.keychain.provider.KeychainContract;
@@ -41,6 +46,8 @@ import org.sufficientlysecure.keychain.provider.KeychainContract.UserIds;
import org.sufficientlysecure.keychain.provider.ProviderHelper;
import org.sufficientlysecure.keychain.provider.ProviderHelper.NotFoundException;
import org.sufficientlysecure.keychain.ui.adapter.UserIdsAdapter;
+import org.sufficientlysecure.keychain.ui.dialog.EditSubkeyDialogFragment;
+import org.sufficientlysecure.keychain.ui.dialog.UserIdInfoDialogFragment;
import org.sufficientlysecure.keychain.util.Log;
import org.sufficientlysecure.keychain.util.Notify;
@@ -88,9 +95,30 @@ public class ViewKeyMainFragment extends LoaderFragment implements
PorterDuff.Mode.SRC_IN);
mActionUpdate = view.findViewById(R.id.view_key_action_update);
+ mUserIds.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+ showUserIdInfo(position);
+ }
+ });
+
return root;
}
+ private void showUserIdInfo(final int position) {
+ final boolean isRevoked = mUserIdsAdapter.getIsRevoked(position);
+ final int isVerified = mUserIdsAdapter.getIsVerified(position);
+
+ DialogFragmentWorkaround.INTERFACE.runnableRunDelayed(new Runnable() {
+ public void run() {
+ UserIdInfoDialogFragment dialogFragment =
+ UserIdInfoDialogFragment.newInstance(isRevoked, isVerified);
+
+ dialogFragment.show(getActivity().getSupportFragmentManager(), "userIdInfoDialog");
+ }
+ });
+ }
+
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/UserIdsAdapter.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/UserIdsAdapter.java
index 9bf47a387..717dcf818 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/UserIdsAdapter.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/UserIdsAdapter.java
@@ -257,6 +257,11 @@ public class UserIdsAdapter extends CursorAdapter implements AdapterView.OnItemC
return mCursor.getInt(INDEX_IS_REVOKED) > 0;
}
+ public int getIsVerified(int position) {
+ mCursor.moveToPosition(position);
+ return mCursor.getInt(INDEX_VERIFIED);
+ }
+
public boolean getIsRevokedPending(int position) {
mCursor.moveToPosition(position);
String userId = mCursor.getString(INDEX_USER_ID);
@@ -280,24 +285,4 @@ public class UserIdsAdapter extends CursorAdapter implements AdapterView.OnItemC
return view;
}
- // Disable selection of items for lists without checkboxes, http://stackoverflow.com/a/4075045
- @Override
- public boolean areAllItemsEnabled() {
- if (mCheckStates == null && mSaveKeyringParcel == null) {
- return false;
- } else {
- return super.areAllItemsEnabled();
- }
- }
-
- // Disable selection of items for lists without checkboxes, http://stackoverflow.com/a/4075045
- @Override
- public boolean isEnabled(int position) {
- if (mCheckStates == null && mSaveKeyringParcel == null) {
- return false;
- } else {
- return super.isEnabled(position);
- }
- }
-
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/UserIdInfoDialogFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/UserIdInfoDialogFragment.java
new file mode 100644
index 000000000..968b2429b
--- /dev/null
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/UserIdInfoDialogFragment.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2014 Dominik Schürmann <dominik@dominikschuermann.de>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package org.sufficientlysecure.keychain.ui.dialog;
+
+import android.app.Activity;
+import android.app.Dialog;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.support.v4.app.DialogFragment;
+
+import org.sufficientlysecure.keychain.R;
+import org.sufficientlysecure.keychain.provider.KeychainContract;
+
+public class UserIdInfoDialogFragment extends DialogFragment {
+ private static final String ARG_IS_REVOKED = "is_revoked";
+ private static final String ARG_IS_VERIFIED = "is_verified";
+
+ /**
+ * Creates new instance of this dialog fragment
+ */
+ public static UserIdInfoDialogFragment newInstance(boolean isRevoked, int isVerified) {
+ UserIdInfoDialogFragment frag = new UserIdInfoDialogFragment();
+ Bundle args = new Bundle();
+ args.putBoolean(ARG_IS_REVOKED, isRevoked);
+ args.putInt(ARG_IS_VERIFIED, isVerified);
+
+ frag.setArguments(args);
+
+ return frag;
+ }
+
+ /**
+ * Creates dialog
+ */
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ final Activity activity = getActivity();
+
+ int isVerified = getArguments().getInt(ARG_IS_VERIFIED);
+ boolean isRevoked = getArguments().getBoolean(ARG_IS_REVOKED);
+
+ CustomAlertDialogBuilder alert = new CustomAlertDialogBuilder(activity);
+
+ String title;
+ String message;
+ if (isRevoked) {
+ title = getString(R.string.user_id_info_revoked_title);
+ message = getString(R.string.user_id_info_revoked_text);
+ } else {
+ switch (isVerified) {
+ case KeychainContract.Certs.VERIFIED_SECRET:
+ title = getString(R.string.user_id_info_verified_title);
+ message = getString(R.string.user_id_info_verified_text);
+ break;
+ case KeychainContract.Certs.VERIFIED_SELF:
+ title = getString(R.string.user_id_info_not_verified_title);
+ message = getString(R.string.user_id_info_not_verified_text);
+ break;
+ default:
+ title = getString(R.string.user_id_info_invalid_title);
+ message = getString(R.string.user_id_info_invalid_text);
+ break;
+ }
+ }
+
+ alert.setTitle(title);
+ alert.setMessage(message);
+
+ alert.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
+
+ @Override
+ public void onClick(DialogInterface dialog, int id) {
+ dismiss();
+ }
+ });
+
+ return alert.show();
+ }
+
+}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/EncryptKeyCompletionView.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/EncryptKeyCompletionView.java
index 7e762fe77..20b9570bb 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/EncryptKeyCompletionView.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/EncryptKeyCompletionView.java
@@ -22,6 +22,7 @@ import android.content.Context;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.Rect;
+import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.LoaderManager;
@@ -45,7 +46,7 @@ import org.sufficientlysecure.keychain.pgp.KeyRing;
import org.sufficientlysecure.keychain.pgp.PgpKeyHelper;
import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralException;
import org.sufficientlysecure.keychain.provider.CachedPublicKeyRing;
-import org.sufficientlysecure.keychain.provider.KeychainContract;
+import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
import org.sufficientlysecure.keychain.util.Log;
import java.util.ArrayList;
@@ -113,9 +114,23 @@ public class EncryptKeyCompletionView extends TokenCompleteTextView {
((FragmentActivity) getContext()).getSupportLoaderManager().initLoader(0, null, new LoaderManager.LoaderCallbacks<Cursor>() {
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
- return new CursorLoader(getContext(), KeychainContract.KeyRings.buildUnifiedKeyRingsUri(),
- new String[]{KeychainContract.KeyRings.HAS_ENCRYPT, KeychainContract.KeyRings.KEY_ID, KeychainContract.KeyRings.USER_ID, KeychainContract.KeyRings.FINGERPRINT},
- null, null, null);
+ // These are the rows that we will retrieve.
+ Uri baseUri = KeyRings.buildUnifiedKeyRingsUri();
+
+ String[] projection = new String[]{
+ KeyRings._ID,
+ KeyRings.MASTER_KEY_ID,
+ KeyRings.KEY_ID,
+ KeyRings.USER_ID,
+ KeyRings.FINGERPRINT,
+ KeyRings.IS_EXPIRED,
+ KeyRings.HAS_ENCRYPT
+ };
+
+ String where = KeyRings.HAS_ENCRYPT + " NOT NULL AND " + KeyRings.IS_EXPIRED + " = 0 AND "
+ + KeyRings.IS_REVOKED + " = 0";
+
+ return new CursorLoader(getContext(), baseUri, projection, where, null, null);
}
@Override
@@ -148,10 +163,8 @@ public class EncryptKeyCompletionView extends TokenCompleteTextView {
ArrayList<EncryptionKey> keys = new ArrayList<EncryptionKey>();
while (cursor.moveToNext()) {
try {
- if (cursor.getInt(cursor.getColumnIndexOrThrow(KeychainContract.KeyRings.HAS_ENCRYPT)) != 0) {
- EncryptionKey key = new EncryptionKey(cursor);
- keys.add(key);
- }
+ EncryptionKey key = new EncryptionKey(cursor);
+ keys.add(key);
} catch (Exception e) {
Log.w(Constants.TAG, e);
return;
@@ -174,10 +187,10 @@ public class EncryptKeyCompletionView extends TokenCompleteTextView {
}
public EncryptionKey(Cursor cursor) {
- this(cursor.getString(cursor.getColumnIndexOrThrow(KeychainContract.KeyRings.USER_ID)),
- cursor.getLong(cursor.getColumnIndexOrThrow(KeychainContract.KeyRings.KEY_ID)),
+ this(cursor.getString(cursor.getColumnIndexOrThrow(KeyRings.USER_ID)),
+ cursor.getLong(cursor.getColumnIndexOrThrow(KeyRings.KEY_ID)),
PgpKeyHelper.convertFingerprintToHex(
- cursor.getBlob(cursor.getColumnIndexOrThrow(KeychainContract.KeyRings.FINGERPRINT))));
+ cursor.getBlob(cursor.getColumnIndexOrThrow(KeyRings.FINGERPRINT))));
}
diff --git a/OpenKeychain/src/main/res/layout/view_key_main_fragment.xml b/OpenKeychain/src/main/res/layout/view_key_main_fragment.xml
index 7a54fab05..edee7ebe8 100644
--- a/OpenKeychain/src/main/res/layout/view_key_main_fragment.xml
+++ b/OpenKeychain/src/main/res/layout/view_key_main_fragment.xml
@@ -28,11 +28,13 @@
android:layout_marginBottom="4dp"
android:layout_weight="1" />
- <View
- android:id="@+id/view_key_action_certify_divider"
- android:layout_width="match_parent"
- android:layout_height="1dip"
- android:background="?android:attr/listDivider" />
+ <TextView
+ style="@style/SectionHeader"
+ android:layout_width="wrap_content"
+ android:layout_height="0dp"
+ android:layout_marginTop="14dp"
+ android:text="@string/section_actions"
+ android:layout_weight="1" />
<LinearLayout
android:id="@+id/view_key_action_certify"
@@ -63,13 +65,11 @@
</LinearLayout>
- <TextView
- style="@style/SectionHeader"
- android:layout_width="wrap_content"
- android:layout_height="0dp"
- android:layout_marginTop="14dp"
- android:text="@string/section_actions"
- android:layout_weight="1" />
+ <View
+ android:id="@+id/view_key_action_certify_divider"
+ android:layout_width="match_parent"
+ android:layout_height="1dip"
+ android:background="?android:attr/listDivider" />
<TextView
android:id="@+id/view_key_action_edit"
diff --git a/OpenKeychain/src/main/res/raw-ar/help_about.html b/OpenKeychain/src/main/res/raw-ar/help_about.html
deleted file mode 100644
index ab3c19375..000000000
--- a/OpenKeychain/src/main/res/raw-ar/help_about.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<html>
-<head></head>
-<body>
-<p><a href="http://www.openkeychain.org">http://www.openkeychain.org</a></p>
-<p><a href="http://www.openkeychain.org">OpenKeychain</a> is an OpenPGP implementation for Android.</p>
-<p>License: GPLv3+</p>
-
-<h2>Developers OpenKeychain</h2>
-<ul>
-<li>Dominik Schürmann (Lead developer)</li>
-<li>Ash Hughes (crypto patches)</li>
-<li>Brian C. Barnes</li>
-<li>Bahtiar 'kalkin' Gadimov (UI)</li>
-<li>Daniel Hammann</li>
-<li>Daniel Haß</li>
-<li>Greg Witczak</li>
-<li>Miroojin Bakshi</li>
-<li>Nikhil Peter Raj</li>
-<li>Paul Sarbinowski</li>
-<li>Sreeram Boyapati</li>
-<li>Vincent Breitmoser</li>
-<li>Tim Bray</li>
-</ul>
-<h2>Developers APG 1.x</h2>
-<ul>
-<li>Thialfihar (Lead developer)</li>
-<li>'Senecaso' (QRCode, sign key, upload key)</li>
-<li>Markus Doits</li>
-</ul>
-<h2>Libraries</h2>
-<ul>
-<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v4</a> (Apache License v2)</li>
-<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (Apache License v2)</li>
-<li>
-<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache License v2)</li>
-<li>
-<a href="https://github.com/Bearded-Hen/Android-Bootstrap">Android-Bootstrap</a> (MIT License)</li>
-<li>
-<a href="http://code.google.com/p/zxing/">ZXing</a> (Apache License v2)</li>
-<li>
-<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
-<li>
-<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Apache License v2)</li>
-<li>
-<a href="https://github.com/johnkil/Android-AppMsg">Android AppMsg Library</a> (Apache License v2)</li>
-</ul>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-ar/help_changelog.html b/OpenKeychain/src/main/res/raw-ar/help_changelog.html
deleted file mode 100644
index ebada67f9..000000000
--- a/OpenKeychain/src/main/res/raw-ar/help_changelog.html
+++ /dev/null
@@ -1,156 +0,0 @@
-<html>
-<head></head>
-<body>
-<h2>2.7</h2>
-<ul>
-<li>Purple! (Dominik, Vincent)</li>
-<li>New key view design (Dominik, Vincent)</li>
-<li>New flat Android buttons (Dominik, Vincent)</li>
-<li>API fixes (Dominik)</li>
-<li>Keybase.io import (Tim Bray)</li>
-</ul>
-<h2>2.6.1</h2>
-<ul>
-<li>some fixes for regression bugs</li>
-</ul>
-<h2>2.6</h2>
-<ul>
-<li>key certifications (thanks to Vincent Breitmoser)</li>
-<li>support for GnuPG partial secret keys (thanks to Vincent Breitmoser)</li>
-<li>new design for signature verification</li>
-<li>custom key length (thanks to Greg Witczak)</li>
-<li>fix share-functionality from other apps</li>
-</ul>
-<h2>2.5</h2>
-<ul>
-<li>fix decryption of symmetric pgp messages/files</li>
-<li>refactored edit key screen (thanks to Ash Hughes)</li>
-<li>new modern design for encrypt/decrypt screens</li>
-<li>OpenPGP API version 3 (multiple api accounts, internal fixes, key lookup)</li>
-</ul>
-<h2>2.4</h2>
-<p>Thanks to all applicants of Google Summer of Code 2014 who made this release feature rich and bug free!
-Besides several small patches, a notable number of patches are made by the following people (in alphabetical order):
-Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Paul Sarbinowski, Sreeram Boyapati, Vincent Breitmoser.</p>
-<ul>
-<li>new unified key list</li>
-<li>colorized key fingerprint</li>
-<li>support for keyserver ports</li>
-<li>deactivate possibility to generate weak keys</li>
-<li>much more internal work on the API</li>
-<li>certify user ids</li>
-<li>keyserver query based on machine-readable output</li>
-<li>lock navigation drawer on tablets</li>
-<li>suggestions for emails on creation of keys</li>
-<li>search in public key lists</li>
-<li>and much more improvements and fixes…</li>
-</ul>
-<h2>2.3.1</h2>
-<ul>
-<li>hotfix for crash when upgrading from old versions</li>
-</ul>
-<h2>2.3</h2>
-<ul>
-<li>remove unnecessary export of public keys when exporting secret key (thanks to Ash Hughes)</li>
-<li>fix setting expiry dates on keys (thanks to Ash Hughes)</li>
-<li>more internal fixes when editing keys (thanks to Ash Hughes)</li>
-<li>querying keyservers directly from the import screen</li>
-<li>fix layout and dialog style on Android 2.2-3.0</li>
-<li>fix crash on keys with empty user ids</li>
-<li>fix crash and empty lists when coming back from signing screen</li>
-<li>Bouncy Castle (cryptography library) updated from 1.47 to 1.50 and build from source</li>
-<li>fix upload of key from signing screen</li>
-</ul>
-<h2>2.2</h2>
-<ul>
-<li>new design with navigation drawer</li>
-<li>new public key list design</li>
-<li>new public key view</li>
-<li>bug fixes for importing of keys</li>
-<li>key cross-certification (thanks to Ash Hughes)</li>
-<li>handle UTF-8 passwords properly (thanks to Ash Hughes)</li>
-<li>first version with new languages (thanks to the contributors on Transifex)</li>
-<li>sharing of keys via QR Codes fixed and improved</li>
-<li>package signature verification for API</li>
-</ul>
-<h2>2.1.1</h2>
-<ul>
-<li>API Updates, preparation for K-9 Mail integration</li>
-</ul>
-<h2>2.1</h2>
-<ul>
-<li>lots of bug fixes</li>
-<li>new API for developers</li>
-<li>PRNG bug fix by Google</li>
-</ul>
-<h2>2.0</h2>
-<ul>
-<li>complete redesign</li>
-<li>share public keys via qr codes, nfc beam</li>
-<li>sign keys</li>
-<li>upload keys to server</li>
-<li>fixes import issues</li>
-<li>new AIDL API</li>
-</ul>
-<h2>1.0.8</h2>
-<ul>
-<li>basic keyserver support</li>
-<li>app2sd</li>
-<li>more choices for pass phrase cache: 1, 2, 4, 8, hours</li>
-<li>translations: Norwegian (thanks, Sander Danielsen), Chinese (thanks, Zhang Fredrick)</li>
-<li>bugfixes</li>
-<li>optimizations</li>
-</ul>
-<h2>1.0.7</h2>
-<ul>
-<li>fixed problem with signature verification of texts with trailing newline</li>
-<li>more options for pass phrase cache time to live (20, 40, 60 mins)</li>
-</ul>
-<h2>1.0.6</h2>
-<ul>
-<li>account adding crash on Froyo fixed</li>
-<li>secure file deletion</li>
-<li>option to delete key file after import</li>
-<li>stream encryption/decryption (gallery, etc.)</li>
-<li>new options (language, force v3 signatures)</li>
-<li>interface changes</li>
-<li>bugfixes</li>
-</ul>
-<h2>1.0.5</h2>
-<ul>
-<li>German and Italian translation</li>
-<li>much smaller package, due to reduced BC sources</li>
-<li>new preferences GUI</li>
-<li>layout adjustment for localization</li>
-<li>signature bugfix</li>
-</ul>
-<h2>1.0.4</h2>
-<ul>
-<li>fixed another crash caused by some SDK bug with query builder</li>
-</ul>
-<h2>1.0.3</h2>
-<ul>
-<li>fixed crashes during encryption/signing and possibly key export</li>
-</ul>
-<h2>1.0.2</h2>
-<ul>
-<li>filterable key lists</li>
-<li>smarter pre-selection of encryption keys</li>
-<li>new Intent handling for VIEW and SEND, allows files to be encrypted/decrypted out of file managers</li>
-<li>fixes and additional features (key preselection) for K-9 Mail, new beta build available</li>
-</ul>
-<h2>1.0.1</h2>
-<ul>
-<li>GMail account listing was broken in 1.0.0, fixed again</li>
-</ul>
-<h2>1.0.0</h2>
-<ul>
-<li>K-9 Mail integration, APG supporting beta build of K-9 Mail</li>
-<li>support of more file managers (including ASTRO)</li>
-<li>Slovenian translation</li>
-<li>new database, much faster, less memory usage</li>
-<li>defined Intents and content provider for other apps</li>
-<li>bugfixes</li>
-</ul>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-ar/help_nfc_beam.html b/OpenKeychain/src/main/res/raw-ar/help_nfc_beam.html
deleted file mode 100644
index 88492731c..000000000
--- a/OpenKeychain/src/main/res/raw-ar/help_nfc_beam.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<html>
-<head></head>
-<body>
-<h2>How to receive keys</h2>
-<ol>
-<li>Go to your partners contacts and open the contact you want to share.</li>
-<li>Hold the two devices back to back (they have to be almost touching) and you’ll feel a vibration.</li>
-<li>After it vibrates you’ll see the content on your partners device turn into a card-like object with Star Trek warp speed-looking animation in the background.</li>
-<li>Tap the card and the content will then load on the your device.</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-ar/help_start.html b/OpenKeychain/src/main/res/raw-ar/help_start.html
deleted file mode 100644
index 51a76c01e..000000000
--- a/OpenKeychain/src/main/res/raw-ar/help_start.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<html>
-<head></head>
-<body>
-<h2>Getting started</h2>
-<p>First you need a personal secret key. Create one via the option menus in "Keys" or import existing secret keys. Afterwards, you can download your friends' keys or exchange them via QR Codes or NFC.</p>
-
-<p>It is recommended that you install <a href="market://details?id=org.openintents.filemanager">OI File Manager</a> for enhanced file selection and <a href="market://details?id=com.google.zxing.client.android">Barcode Scanner</a> to scan generated QR Codes. Clicking on the links will open Google Play Store or F-Droid for installation.</p>
-
-<h2>Applications</h2>
-<p>Several applications support OpenKeychain to encrypt/sign your private communication:<br><img src="apps_k9"><br>K-9 Mail: OpenKeychain support available in current <a href="https://github.com/k9mail/k-9/releases/tag/4.904">alpha build</a>!<br><a href="market://details?id=eu.siacs.conversations"><img src="apps_conversations"><br>Conversations</a>: Jabber/XMPP client<br><a href="market://details?id=org.lf_net.pgpunlocker"><img src="apps_pgpauth"><br>PGPAuth</a>: App to send a PGP-signed request to a server to open or close something, e.g. a door</p>
-
-<h2>I found a bug in OpenKeychain!</h2>
-<p>Please report the bug using the <a href="https://github.com/openpgp-keychain/openpgp-keychain/issues">issue tracker of OpenKeychain</a>.</p>
-
-<h2>Contribute</h2>
-<p>If you want to help us developing OpenKeychain by contributing code <a href="https://github.com/openpgp-keychain/openpgp-keychain#contribute-code">follow our small guide on Github</a>.</p>
-
-<h2>Translations</h2>
-<p>Help translating OpenKeychain! Everybody can participate at <a href="https://www.transifex.com/projects/p/openpgp-keychain/">OpenKeychain on Transifex</a>.</p>
-
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-ar/help_wot.html b/OpenKeychain/src/main/res/raw-ar/help_wot.html
deleted file mode 100644
index 29790139b..000000000
--- a/OpenKeychain/src/main/res/raw-ar/help_wot.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<html>
-<head></head>
-<body>
-<h2>Web of Trust</h2>
-<p>The Web of Trust describes the part of PGP which deals with creation and bookkeeping of certifications. It provides mechanisms to help the user keep track of who a public key belongs to, and share this information with others; To ensure the privacy of encrypted communication, it is essential to know that the public key you encrypt to belongs to the person you think it does.</p>
-
-<h2>Support in OpenKeychain</h2>
-<p>There is only basic support for Web of Trust in OpenKeychain. This is a heavy work in progress and subject to changes in upcoming releases.</p>
-
-<h2>Trust Model</h2>
-<p>Trust evaluation is based on the simple assumption that all keys which have secret keys available are trusted. Public keys which contain at least one user id certified by a trusted key will be marked with a green dot in the key listings. It is not (yet) possible to specify trust levels for certificates of other known public keys.</p>
-
-<h2>Certifying keys</h2>
-<p>Support for key certification is available, and user ids can be certified individually. It is not yet possible to specify the level of trust or create local and other special types of certificates.</p>
-
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-ar/nfc_beam_share.html b/OpenKeychain/src/main/res/raw-ar/nfc_beam_share.html
deleted file mode 100644
index 083e055c7..000000000
--- a/OpenKeychain/src/main/res/raw-ar/nfc_beam_share.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head></head>
-<body>
-<ol>
-<li>Make sure that NFC is turned on in Settings &gt; More &gt; NFC and make sure that Android Beam is also on in the same section.</li>
-<li>Hold the two devices back to back (they have to be almost touching) and you'll feel a vibration.</li>
-<li>After it vibrates you'll see the content on your device turn into a card-like object with Star Trek warp speed-looking animation in the background.</li>
-<li>Tap the card and the content will then load on the other person’s device.</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-cs/help_about.html b/OpenKeychain/src/main/res/raw-cs/help_about.html
index ab3c19375..f536fecbd 100644
--- a/OpenKeychain/src/main/res/raw-cs/help_about.html
+++ b/OpenKeychain/src/main/res/raw-cs/help_about.html
@@ -5,27 +5,27 @@
<p><a href="http://www.openkeychain.org">OpenKeychain</a> is an OpenPGP implementation for Android.</p>
<p>License: GPLv3+</p>
-<h2>Developers OpenKeychain</h2>
+<h2>Developers</h2>
<ul>
-<li>Dominik Schürmann (Lead developer)</li>
-<li>Ash Hughes (crypto patches)</li>
+<li>Dominik Schürmann (Maintainer)</li>
+<li>Art O Cathain</li>
+<li>Ash Hughes</li>
<li>Brian C. Barnes</li>
-<li>Bahtiar 'kalkin' Gadimov (UI)</li>
+<li>Bahtiar 'kalkin' Gadimov</li>
+<li>Daniel Albert</li>
<li>Daniel Hammann</li>
<li>Daniel Haß</li>
<li>Greg Witczak</li>
+<li>'mar-v-in'</li>
+<li>Markus Doits</li>
<li>Miroojin Bakshi</li>
<li>Nikhil Peter Raj</li>
<li>Paul Sarbinowski</li>
+<li>'Senecaso'</li>
<li>Sreeram Boyapati</li>
-<li>Vincent Breitmoser</li>
+<li>Thialfihar (APG 1.x)</li>
<li>Tim Bray</li>
-</ul>
-<h2>Developers APG 1.x</h2>
-<ul>
-<li>Thialfihar (Lead developer)</li>
-<li>'Senecaso' (QRCode, sign key, upload key)</li>
-<li>Markus Doits</li>
+<li>Vincent Breitmoser</li>
</ul>
<h2>Libraries</h2>
<ul>
@@ -34,17 +34,21 @@
<li>
<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache License v2)</li>
+<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/Bearded-Hen/Android-Bootstrap">Android-Bootstrap</a> (MIT License)</li>
+<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache License v2)</li>
<li>
<a href="http://code.google.com/p/zxing/">ZXing</a> (Apache License v2)</li>
<li>
<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
<li>
<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Apache License v2)</li>
-<li>
-<a href="https://github.com/johnkil/Android-AppMsg">Android AppMsg Library</a> (Apache License v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-cs/help_changelog.html b/OpenKeychain/src/main/res/raw-cs/help_changelog.html
index ebada67f9..e27ac7475 100644
--- a/OpenKeychain/src/main/res/raw-cs/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw-cs/help_changelog.html
@@ -1,6 +1,20 @@
<html>
<head></head>
<body>
+<h2>2.8</h2>
+<ul>
+<li>So many bugs have been fixed in this release that we focus on the main new features</li>
+<li>Key edit: awesome new design, key revocation</li>
+<li>Key import: awesome new design, secure keyserver connections via hkps, keyserver resolving via DNS SRV records</li>
+<li>New first time screen</li>
+<li>New create key screen: autocompletion of name and email based on your personal Android accounts</li>
+<li>File encryption: awesome new design, support for encrypting multiple files</li>
+<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>
+</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>
+
<h2>2.7</h2>
<ul>
<li>Purple! (Dominik, Vincent)</li>
@@ -11,21 +25,21 @@
</ul>
<h2>2.6.1</h2>
<ul>
-<li>some fixes for regression bugs</li>
+<li>Some fixes for regression bugs</li>
</ul>
<h2>2.6</h2>
<ul>
-<li>key certifications (thanks to Vincent Breitmoser)</li>
-<li>support for GnuPG partial secret keys (thanks to Vincent Breitmoser)</li>
-<li>new design for signature verification</li>
-<li>custom key length (thanks to Greg Witczak)</li>
-<li>fix share-functionality from other apps</li>
+<li>Key certifications (thanks to Vincent Breitmoser)</li>
+<li>Support for GnuPG partial secret keys (thanks to Vincent Breitmoser)</li>
+<li>New design for signature verification</li>
+<li>Custom key length (thanks to Greg Witczak)</li>
+<li>Fix share-functionality from other apps</li>
</ul>
<h2>2.5</h2>
<ul>
-<li>fix decryption of symmetric pgp messages/files</li>
-<li>refactored edit key screen (thanks to Ash Hughes)</li>
-<li>new modern design for encrypt/decrypt screens</li>
+<li>Fix decryption of symmetric pgp messages/files</li>
+<li>Refactored edit key screen (thanks to Ash Hughes)</li>
+<li>New modern design for encrypt/decrypt screens</li>
<li>OpenPGP API version 3 (multiple api accounts, internal fixes, key lookup)</li>
</ul>
<h2>2.4</h2>
@@ -33,45 +47,45 @@
Besides several small patches, a notable number of patches are made by the following people (in alphabetical order):
Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Paul Sarbinowski, Sreeram Boyapati, Vincent Breitmoser.</p>
<ul>
-<li>new unified key list</li>
-<li>colorized key fingerprint</li>
-<li>support for keyserver ports</li>
-<li>deactivate possibility to generate weak keys</li>
-<li>much more internal work on the API</li>
-<li>certify user ids</li>
-<li>keyserver query based on machine-readable output</li>
-<li>lock navigation drawer on tablets</li>
-<li>suggestions for emails on creation of keys</li>
-<li>search in public key lists</li>
-<li>and much more improvements and fixes…</li>
+<li>New unified key list</li>
+<li>Colorized key fingerprint</li>
+<li>Support for keyserver ports</li>
+<li>Deactivate possibility to generate weak keys</li>
+<li>Much more internal work on the API</li>
+<li>Certify user ids</li>
+<li>Keyserver query based on machine-readable output</li>
+<li>Lock navigation drawer on tablets</li>
+<li>Suggestions for emails on creation of keys</li>
+<li>Search in public key lists</li>
+<li>And much more improvements and fixes…</li>
</ul>
<h2>2.3.1</h2>
<ul>
-<li>hotfix for crash when upgrading from old versions</li>
+<li>Hotfix for crash when upgrading from old versions</li>
</ul>
<h2>2.3</h2>
<ul>
-<li>remove unnecessary export of public keys when exporting secret key (thanks to Ash Hughes)</li>
-<li>fix setting expiry dates on keys (thanks to Ash Hughes)</li>
-<li>more internal fixes when editing keys (thanks to Ash Hughes)</li>
-<li>querying keyservers directly from the import screen</li>
-<li>fix layout and dialog style on Android 2.2-3.0</li>
-<li>fix crash on keys with empty user ids</li>
-<li>fix crash and empty lists when coming back from signing screen</li>
+<li>Remove unnecessary export of public keys when exporting secret key (thanks to Ash Hughes)</li>
+<li>Fix setting expiry dates on keys (thanks to Ash Hughes)</li>
+<li>More internal fixes when editing keys (thanks to Ash Hughes)</li>
+<li>Querying keyservers directly from the import screen</li>
+<li>Fix layout and dialog style on Android 2.2-3.0</li>
+<li>Fix crash on keys with empty user ids</li>
+<li>Fix crash and empty lists when coming back from signing screen</li>
<li>Bouncy Castle (cryptography library) updated from 1.47 to 1.50 and build from source</li>
-<li>fix upload of key from signing screen</li>
+<li>Fix upload of key from signing screen</li>
</ul>
<h2>2.2</h2>
<ul>
-<li>new design with navigation drawer</li>
-<li>new public key list design</li>
-<li>new public key view</li>
-<li>bug fixes for importing of keys</li>
-<li>key cross-certification (thanks to Ash Hughes)</li>
-<li>handle UTF-8 passwords properly (thanks to Ash Hughes)</li>
-<li>first version with new languages (thanks to the contributors on Transifex)</li>
-<li>sharing of keys via QR Codes fixed and improved</li>
-<li>package signature verification for API</li>
+<li>New design with navigation drawer</li>
+<li>New public key list design</li>
+<li>New public key view</li>
+<li>Bug fixes for importing of keys</li>
+<li>Key cross-certification (thanks to Ash Hughes)</li>
+<li>Handle UTF-8 passwords properly (thanks to Ash Hughes)</li>
+<li>First version with new languages (thanks to the contributors on Transifex)</li>
+<li>Sharing of keys via QR Codes fixed and improved</li>
+<li>Package signature verification for API</li>
</ul>
<h2>2.1.1</h2>
<ul>
@@ -79,65 +93,65 @@ Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Pa
</ul>
<h2>2.1</h2>
<ul>
-<li>lots of bug fixes</li>
-<li>new API for developers</li>
+<li>Lots of bug fixes</li>
+<li>New API for developers</li>
<li>PRNG bug fix by Google</li>
</ul>
<h2>2.0</h2>
<ul>
-<li>complete redesign</li>
-<li>share public keys via qr codes, nfc beam</li>
-<li>sign keys</li>
-<li>upload keys to server</li>
-<li>fixes import issues</li>
-<li>new AIDL API</li>
+<li>Complete redesign</li>
+<li>Share public keys via qr codes, nfc beam</li>
+<li>Sign keys</li>
+<li>Upload keys to server</li>
+<li>Fixes import issues</li>
+<li>New AIDL API</li>
</ul>
<h2>1.0.8</h2>
<ul>
-<li>basic keyserver support</li>
-<li>app2sd</li>
-<li>more choices for pass phrase cache: 1, 2, 4, 8, hours</li>
-<li>translations: Norwegian (thanks, Sander Danielsen), Chinese (thanks, Zhang Fredrick)</li>
-<li>bugfixes</li>
-<li>optimizations</li>
+<li>Basic keyserver support</li>
+<li>App2sd</li>
+<li>More choices for pass phrase cache: 1, 2, 4, 8, hours</li>
+<li>Translations: Norwegian (thanks, Sander Danielsen), Chinese (thanks, Zhang Fredrick)</li>
+<li>Bugfixes</li>
+<li>Optimizations</li>
</ul>
<h2>1.0.7</h2>
<ul>
-<li>fixed problem with signature verification of texts with trailing newline</li>
-<li>more options for pass phrase cache time to live (20, 40, 60 mins)</li>
+<li>Fixed problem with signature verification of texts with trailing newline</li>
+<li>More options for pass phrase cache time to live (20, 40, 60 mins)</li>
</ul>
<h2>1.0.6</h2>
<ul>
-<li>account adding crash on Froyo fixed</li>
-<li>secure file deletion</li>
-<li>option to delete key file after import</li>
-<li>stream encryption/decryption (gallery, etc.)</li>
-<li>new options (language, force v3 signatures)</li>
-<li>interface changes</li>
-<li>bugfixes</li>
+<li>Account adding crash on Froyo fixed</li>
+<li>Secure file deletion</li>
+<li>Option to delete key file after import</li>
+<li>Stream encryption/decryption (gallery, etc.)</li>
+<li>New options (language, force v3 signatures)</li>
+<li>Interface changes</li>
+<li>Bugfixes</li>
</ul>
<h2>1.0.5</h2>
<ul>
<li>German and Italian translation</li>
-<li>much smaller package, due to reduced BC sources</li>
-<li>new preferences GUI</li>
-<li>layout adjustment for localization</li>
-<li>signature bugfix</li>
+<li>Much smaller package, due to reduced BC sources</li>
+<li>New preferences GUI</li>
+<li>Layout adjustment for localization</li>
+<li>Signature bugfix</li>
</ul>
<h2>1.0.4</h2>
<ul>
-<li>fixed another crash caused by some SDK bug with query builder</li>
+<li>Fixed another crash caused by some SDK bug with query builder</li>
</ul>
<h2>1.0.3</h2>
<ul>
-<li>fixed crashes during encryption/signing and possibly key export</li>
+<li>Fixed crashes during encryption/signing and possibly key export</li>
</ul>
<h2>1.0.2</h2>
<ul>
-<li>filterable key lists</li>
-<li>smarter pre-selection of encryption keys</li>
-<li>new Intent handling for VIEW and SEND, allows files to be encrypted/decrypted out of file managers</li>
-<li>fixes and additional features (key preselection) for K-9 Mail, new beta build available</li>
+<li>Filterable key lists</li>
+<li>Smarter pre-selection of encryption keys</li>
+<li>New Intent handling for VIEW and SEND, allows files to be encrypted/decrypted out of file managers</li>
+<li>Fixes and additional features (key preselection) for K-9 Mail, new beta build available</li>
</ul>
<h2>1.0.1</h2>
<ul>
@@ -146,11 +160,11 @@ Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Pa
<h2>1.0.0</h2>
<ul>
<li>K-9 Mail integration, APG supporting beta build of K-9 Mail</li>
-<li>support of more file managers (including ASTRO)</li>
+<li>Support of more file managers (including ASTRO)</li>
<li>Slovenian translation</li>
-<li>new database, much faster, less memory usage</li>
-<li>defined Intents and content provider for other apps</li>
-<li>bugfixes</li>
+<li>New database, much faster, less memory usage</li>
+<li>Defined Intents and content provider for other apps</li>
+<li>Bugfixes</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-de/help_about.html b/OpenKeychain/src/main/res/raw-de/help_about.html
index 8eb033e9f..f5622d54a 100644
--- a/OpenKeychain/src/main/res/raw-de/help_about.html
+++ b/OpenKeychain/src/main/res/raw-de/help_about.html
@@ -5,27 +5,27 @@
<p><a href="http://www.openkeychain.org">OpenKeychain</a> ist eine OpenPGP-Implementierung für Android.</p>
<p>Lizenz: GPLv3+</p>
-<h2>Entwickler OpenKeychain</h2>
+<h2>Developers</h2>
<ul>
-<li>Dominik Schürmann (Leitender Entwickler)</li>
-<li>Ash Hughes (crypto patches)</li>
+<li>Dominik Schürmann (Maintainer)</li>
+<li>Art O Cathain</li>
+<li>Ash Hughes</li>
<li>Brian C. Barnes</li>
-<li>Bahtiar 'kalkin' Gadimov (UI)</li>
+<li>Bahtiar 'kalkin' Gadimov</li>
+<li>Daniel Albert</li>
<li>Daniel Hammann</li>
<li>Daniel Haß</li>
<li>Greg Witczak</li>
+<li>'mar-v-in'</li>
+<li>Markus Doits</li>
<li>Miroojin Bakshi</li>
<li>Nikhil Peter Raj</li>
<li>Paul Sarbinowski</li>
+<li>'Senecaso'</li>
<li>Sreeram Boyapati</li>
-<li>Vincent Breitmoser</li>
+<li>Thialfihar (APG 1.x)</li>
<li>Tim Bray</li>
-</ul>
-<h2>Entwickler APG 1.x</h2>
-<ul>
-<li>Thialfihar (Hauptentwickler)</li>
-<li>'Senecaso' (QR-Code, Schlüssel signieren, Schlüssel hochladen)</li>
-<li>Markus Doits</li>
+<li>Vincent Breitmoser</li>
</ul>
<h2>Bibliotheken</h2>
<ul>
@@ -34,17 +34,21 @@
<li>
<a href="http://developer.android.com/tools/support-library/index.html">Android Support Bibliothek v7 'appcompat'</a> (Apache Lizenz v2)</li>
<li>
-<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache Lizenz v2)</li>
+<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/Bearded-Hen/Android-Bootstrap">Android-Bootstrap</a> (MIT Lizenz)</li>
+<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache Lizenz v2)</li>
<li>
<a href="http://code.google.com/p/zxing/">ZXing</a> (Apache Lizenz v2)</li>
<li>
<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 Lizenz)</li>
<li>
<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Apache Lizenz v2)</li>
-<li>
-<a href="https://github.com/johnkil/Android-AppMsg">Android AppMsg Bibliothek</a> (Apache Lizenz v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-de/help_changelog.html b/OpenKeychain/src/main/res/raw-de/help_changelog.html
index d84002e80..674d9c93f 100644
--- a/OpenKeychain/src/main/res/raw-de/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw-de/help_changelog.html
@@ -1,6 +1,20 @@
<html>
<head></head>
<body>
+<h2>2.8</h2>
+<ul>
+<li>So many bugs have been fixed in this release that we focus on the main new features</li>
+<li>Key edit: awesome new design, key revocation</li>
+<li>Key import: awesome new design, secure keyserver connections via hkps, keyserver resolving via DNS SRV records</li>
+<li>New first time screen</li>
+<li>New create key screen: autocompletion of name and email based on your personal Android accounts</li>
+<li>File encryption: awesome new design, support for encrypting multiple files</li>
+<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>
+</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>
+
<h2>2.7</h2>
<ul>
<li>Lila! (Dominik, Vincent)</li>
@@ -11,21 +25,21 @@
</ul>
<h2>2.6.1</h2>
<ul>
-<li>some fixes for regression bugs</li>
+<li>Some fixes for regression bugs</li>
</ul>
<h2>2.6</h2>
<ul>
-<li>Schlüsselzertifikation (Dank an Vincent Breitmoser)</li>
-<li>Unterstützung für GnuPG teilweisegeheime Schlüssel (Dank an Vincent Breitmoser)</li>
-<li>Neues Design für Signaturverifikation</li>
-<li>Nutzerdefinierte Schlüssellänge (Dank an Greg Witczak)</li>
-<li>Fehler behoben bei der Teilen-Funktion von anderen Apps</li>
+<li>Key certifications (thanks to Vincent Breitmoser)</li>
+<li>Support for GnuPG partial secret keys (thanks to Vincent Breitmoser)</li>
+<li>New design for signature verification</li>
+<li>Custom key length (thanks to Greg Witczak)</li>
+<li>Fix share-functionality from other apps</li>
</ul>
<h2>2.5</h2>
<ul>
-<li>behoben: entschlüsseln von symetrischen pgp Nachrichten/Dateien</li>
-<li>umgestalteter Schlüssel bearbeiten Bildschirm (Dank an Ash Hughes)</li>
-<li>neues modernes Design für verschlüsselung/entschlüsselungs Bildschirme</li>
+<li>Fix decryption of symmetric pgp messages/files</li>
+<li>Refactored edit key screen (thanks to Ash Hughes)</li>
+<li>New modern design for encrypt/decrypt screens</li>
<li>OpenPGP API Version 3 (mehrfache api accounts, interne fehlerbehebungen, schlüssel suche)</li>
</ul>
<h2>2.4</h2>
@@ -33,45 +47,45 @@
Neben mehreren kleinen Updates sind eine beachtliche Anzahl von Updates von den folgenden Personen gemacht worden (in alphabetischer Reihenfolge):
Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Paul Sarbinowski, Sreeram Boyapati, Vincent Breitmoser.</p>
<ul>
-<li>neue vereinheitlichte Schlüssel liste.</li>
-<li>eingefärbte Schlüssel fingerprints</li>
-<li>Unterstützung für Schlüsselserver </li>
-<li>deaktiviert die Möglichkeit schwache Schlüssel zu generieren.</li>
-<li>viel mehr interne Arbeit an der API</li>
-<li>zertifizieren von Benutzer IDs</li>
-<li>Schlüsselserver Anfragen basieren auf Maschinenlesbaren Ausgaben.</li>
-<li>fixiere Navigationsmenu in Tabletcomputers</li>
-<li>suggestions for emails on creation of keys</li>
-<li>suchen in öffentlichen Schlüssellisten</li>
-<li>und viele weitere Verbesserungen und Fehlerbehebungen...</li>
+<li>New unified key list</li>
+<li>Colorized key fingerprint</li>
+<li>Support for keyserver ports</li>
+<li>Deactivate possibility to generate weak keys</li>
+<li>Much more internal work on the API</li>
+<li>Certify user ids</li>
+<li>Keyserver query based on machine-readable output</li>
+<li>Lock navigation drawer on tablets</li>
+<li>Suggestions for emails on creation of keys</li>
+<li>Search in public key lists</li>
+<li>And much more improvements and fixes…</li>
</ul>
<h2>2.3.1</h2>
<ul>
-<li>schnelle Fehlerbehebung für Abstürze sobald man von einer alten Version geupdatet hat.</li>
+<li>Hotfix for crash when upgrading from old versions</li>
</ul>
<h2>2.3</h2>
<ul>
-<li>entfernung von unnötigen exporten von öffentlichen Schlüsseln, wenn man den geheimen Schlüssel exportiert. (Dank an Ash Hughes)</li>
-<li>Fehlerbehebung: Einstellen des Ablaufdatums von Schlüsseln (Dank an Ash Hughes)</li>
-<li>mehr interne Fehlerbehebungen wenn man Schlüssel bearbeitet (Dank an Ash Hughes)</li>
-<li>Suchzugriff auf die Schlüsselserver direkt vom Importieren Bildschirm</li>
-<li>Fehlerbehebung beim Layout und Dialogstil auf Android 2.2-3.0</li>
-<li>Absturz bei leeren Nutzer IDs behoben </li>
-<li>Fehlerbehebung von Abstürzen und leeren Listen, wenn man vom signieren Bildschirm zurückkehrt.</li>
+<li>Remove unnecessary export of public keys when exporting secret key (thanks to Ash Hughes)</li>
+<li>Fix setting expiry dates on keys (thanks to Ash Hughes)</li>
+<li>More internal fixes when editing keys (thanks to Ash Hughes)</li>
+<li>Querying keyservers directly from the import screen</li>
+<li>Fix layout and dialog style on Android 2.2-3.0</li>
+<li>Fix crash on keys with empty user ids</li>
+<li>Fix crash and empty lists when coming back from signing screen</li>
<li>Bouncy Castle (Kryptographie Bibliothek) upgedatet von 1.47 auf 1.50 und vom Quellcode kompiliert.</li>
-<li>Fehlerbehebung vom hochladen von Schlüsseln vom signieren Bildschirm.</li>
+<li>Fix upload of key from signing screen</li>
</ul>
<h2>2.2</h2>
<ul>
-<li>neues Design mit Naivgationsmenu</li>
-<li>Neus Design für die Liste der öffentlichen Schlüssel</li>
-<li>Neue Ansicht für öffentliche Schlüssel</li>
-<li>Fehler beim Schlüsselimport behoben</li>
-<li>Schlüssel Cross-Zertifizierung (Dank an Ash Hughes)</li>
-<li>richtiges händling von UTF-8 Passwörtern (Danke an Ash Hughes)</li>
-<li>Erste Version mit neuen Sprachen (Danke an die Mitwirkenden bei Transifex)</li>
-<li>teilen von schlüsseln per QR-Codes behoben und verbessert</li>
-<li>paket signatur verifizierung für die API</li>
+<li>New design with navigation drawer</li>
+<li>New public key list design</li>
+<li>New public key view</li>
+<li>Bug fixes for importing of keys</li>
+<li>Key cross-certification (thanks to Ash Hughes)</li>
+<li>Handle UTF-8 passwords properly (thanks to Ash Hughes)</li>
+<li>First version with new languages (thanks to the contributors on Transifex)</li>
+<li>Sharing of keys via QR Codes fixed and improved</li>
+<li>Package signature verification for API</li>
</ul>
<h2>2.1.1</h2>
<ul>
@@ -79,65 +93,65 @@ Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Pa
</ul>
<h2>2.1</h2>
<ul>
-<li>Viele Fehler behoben</li>
-<li>Neue API für Entwickler</li>
+<li>Lots of bug fixes</li>
+<li>New API for developers</li>
<li>PRNG Bugfix von Google</li>
</ul>
<h2>2.0</h2>
<ul>
-<li>Komlett neu designd</li>
-<li>Öffentliche Schlüssel teilen via QR Code, NFC Beam</li>
-<li>Schlüssel signieren</li>
-<li>Schlüssel auf den Server hochladen</li>
-<li>Importprobleme behoben</li>
-<li>neue AIDL API</li>
+<li>Complete redesign</li>
+<li>Share public keys via qr codes, nfc beam</li>
+<li>Sign keys</li>
+<li>Upload keys to server</li>
+<li>Fixes import issues</li>
+<li>New AIDL API</li>
</ul>
<h2>1.0.8</h2>
<ul>
-<li>Grundlegende Schlüsselserverunterstützung</li>
-<li>app2sd</li>
-<li>mehr Auswahlmöglichkeiten für den Passwortcache: 1, 2, 4, 8, Stunden</li>
-<li>Übersetzungen: norwegisch (Danke, Sander Danielsen), chinesisch (danke, Zhang Fredrick)</li>
-<li>Fehlerbehebungen</li>
-<li>Optimierungen</li>
+<li>Basic keyserver support</li>
+<li>App2sd</li>
+<li>More choices for pass phrase cache: 1, 2, 4, 8, hours</li>
+<li>Translations: Norwegian (thanks, Sander Danielsen), Chinese (thanks, Zhang Fredrick)</li>
+<li>Bugfixes</li>
+<li>Optimizations</li>
</ul>
<h2>1.0.7</h2>
<ul>
-<li>Fehlerbehebung bei Problemen mit der Signatur verifizierung von Texten mit folgender neuer Zeile.</li>
-<li>weitere Optionen für die Time-to-live des Passphrasencaches (20, 40, 60 mins)</li>
+<li>Fixed problem with signature verification of texts with trailing newline</li>
+<li>More options for pass phrase cache time to live (20, 40, 60 mins)</li>
</ul>
<h2>1.0.6</h2>
<ul>
-<li>crash beim Hinzufügen eines Kontos auf Froyo repariert</li>
-<li>sichere Dateilöschung</li>
-<li>Option, um Schlüsseldatei nach dem Import zu löschen</li>
-<li>Streamverschlüsselung/-entschlüsselung (Galerie, etc.)</li>
-<li>neue Optionen (Sprache, v3-Unterschriften erzwingen)</li>
-<li>Interfaceänderungen</li>
-<li>Fehlerbehebungen</li>
+<li>Account adding crash on Froyo fixed</li>
+<li>Secure file deletion</li>
+<li>Option to delete key file after import</li>
+<li>Stream encryption/decryption (gallery, etc.)</li>
+<li>New options (language, force v3 signatures)</li>
+<li>Interface changes</li>
+<li>Bugfixes</li>
</ul>
<h2>1.0.5</h2>
<ul>
<li>Deutsche und Italienische Übersetzung</li>
-<li>viel kleineres Paket, dank reduzierter BC Quellen</li>
-<li>Neues Einstellungs-GUI</li>
-<li>Lay-Out-Anpassung für die Lokalisierung</li>
-<li>Fehler bei Signatur behoben</li>
+<li>Much smaller package, due to reduced BC sources</li>
+<li>New preferences GUI</li>
+<li>Layout adjustment for localization</li>
+<li>Signature bugfix</li>
</ul>
<h2>1.0.4</h2>
<ul>
-<li>Einen anderen crash behoben, verursacht von irgendeinen SDK bug mit dem query builder.</li>
+<li>Fixed another crash caused by some SDK bug with query builder</li>
</ul>
<h2>1.0.3</h2>
<ul>
-<li>Absturz während der Verschlüsselung/Signierung und möglicherweise Schlüsselexport behoben.</li>
+<li>Fixed crashes during encryption/signing and possibly key export</li>
</ul>
<h2>1.0.2</h2>
<ul>
-<li>Filterbare Schlüsselliste</li>
-<li>leichtere vorauswahl von Verschlüsselungsschlüsseln</li>
-<li>neues Intent händling für VIEW und SEND, erlaubt es Dateien zu ver-/entschlüsseln außerhalb des Dateimanagers.</li>
-<li>Fehlerbehebungen und Extras (Schlüssel vorauswahl) für K-9 Mail, neue Beta Versionen verfügbar.</li>
+<li>Filterable key lists</li>
+<li>Smarter pre-selection of encryption keys</li>
+<li>New Intent handling for VIEW and SEND, allows files to be encrypted/decrypted out of file managers</li>
+<li>Fixes and additional features (key preselection) for K-9 Mail, new beta build available</li>
</ul>
<h2>1.0.1</h2>
<ul>
@@ -146,11 +160,11 @@ Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Pa
<h2>1.0.0</h2>
<ul>
<li>K-9 Mail integration, APG unterstützt beta build von K-9 Mail</li>
-<li>Unterstützung von mehr Filemanagern (einschließlich ASTRO)</li>
+<li>Support of more file managers (including ASTRO)</li>
<li>Slowenische Übersetzung</li>
-<li>Neue Datenbank, viel schneller, weniger Speicherbedarf</li>
-<li>definierte intents und content provider für andere Apps</li>
-<li>Fehlerbehebungen</li>
+<li>New database, much faster, less memory usage</li>
+<li>Defined Intents and content provider for other apps</li>
+<li>Bugfixes</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-el/help_about.html b/OpenKeychain/src/main/res/raw-el/help_about.html
deleted file mode 100644
index ab3c19375..000000000
--- a/OpenKeychain/src/main/res/raw-el/help_about.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<html>
-<head></head>
-<body>
-<p><a href="http://www.openkeychain.org">http://www.openkeychain.org</a></p>
-<p><a href="http://www.openkeychain.org">OpenKeychain</a> is an OpenPGP implementation for Android.</p>
-<p>License: GPLv3+</p>
-
-<h2>Developers OpenKeychain</h2>
-<ul>
-<li>Dominik Schürmann (Lead developer)</li>
-<li>Ash Hughes (crypto patches)</li>
-<li>Brian C. Barnes</li>
-<li>Bahtiar 'kalkin' Gadimov (UI)</li>
-<li>Daniel Hammann</li>
-<li>Daniel Haß</li>
-<li>Greg Witczak</li>
-<li>Miroojin Bakshi</li>
-<li>Nikhil Peter Raj</li>
-<li>Paul Sarbinowski</li>
-<li>Sreeram Boyapati</li>
-<li>Vincent Breitmoser</li>
-<li>Tim Bray</li>
-</ul>
-<h2>Developers APG 1.x</h2>
-<ul>
-<li>Thialfihar (Lead developer)</li>
-<li>'Senecaso' (QRCode, sign key, upload key)</li>
-<li>Markus Doits</li>
-</ul>
-<h2>Libraries</h2>
-<ul>
-<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v4</a> (Apache License v2)</li>
-<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (Apache License v2)</li>
-<li>
-<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache License v2)</li>
-<li>
-<a href="https://github.com/Bearded-Hen/Android-Bootstrap">Android-Bootstrap</a> (MIT License)</li>
-<li>
-<a href="http://code.google.com/p/zxing/">ZXing</a> (Apache License v2)</li>
-<li>
-<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
-<li>
-<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Apache License v2)</li>
-<li>
-<a href="https://github.com/johnkil/Android-AppMsg">Android AppMsg Library</a> (Apache License v2)</li>
-</ul>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-el/help_changelog.html b/OpenKeychain/src/main/res/raw-el/help_changelog.html
deleted file mode 100644
index ebada67f9..000000000
--- a/OpenKeychain/src/main/res/raw-el/help_changelog.html
+++ /dev/null
@@ -1,156 +0,0 @@
-<html>
-<head></head>
-<body>
-<h2>2.7</h2>
-<ul>
-<li>Purple! (Dominik, Vincent)</li>
-<li>New key view design (Dominik, Vincent)</li>
-<li>New flat Android buttons (Dominik, Vincent)</li>
-<li>API fixes (Dominik)</li>
-<li>Keybase.io import (Tim Bray)</li>
-</ul>
-<h2>2.6.1</h2>
-<ul>
-<li>some fixes for regression bugs</li>
-</ul>
-<h2>2.6</h2>
-<ul>
-<li>key certifications (thanks to Vincent Breitmoser)</li>
-<li>support for GnuPG partial secret keys (thanks to Vincent Breitmoser)</li>
-<li>new design for signature verification</li>
-<li>custom key length (thanks to Greg Witczak)</li>
-<li>fix share-functionality from other apps</li>
-</ul>
-<h2>2.5</h2>
-<ul>
-<li>fix decryption of symmetric pgp messages/files</li>
-<li>refactored edit key screen (thanks to Ash Hughes)</li>
-<li>new modern design for encrypt/decrypt screens</li>
-<li>OpenPGP API version 3 (multiple api accounts, internal fixes, key lookup)</li>
-</ul>
-<h2>2.4</h2>
-<p>Thanks to all applicants of Google Summer of Code 2014 who made this release feature rich and bug free!
-Besides several small patches, a notable number of patches are made by the following people (in alphabetical order):
-Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Paul Sarbinowski, Sreeram Boyapati, Vincent Breitmoser.</p>
-<ul>
-<li>new unified key list</li>
-<li>colorized key fingerprint</li>
-<li>support for keyserver ports</li>
-<li>deactivate possibility to generate weak keys</li>
-<li>much more internal work on the API</li>
-<li>certify user ids</li>
-<li>keyserver query based on machine-readable output</li>
-<li>lock navigation drawer on tablets</li>
-<li>suggestions for emails on creation of keys</li>
-<li>search in public key lists</li>
-<li>and much more improvements and fixes…</li>
-</ul>
-<h2>2.3.1</h2>
-<ul>
-<li>hotfix for crash when upgrading from old versions</li>
-</ul>
-<h2>2.3</h2>
-<ul>
-<li>remove unnecessary export of public keys when exporting secret key (thanks to Ash Hughes)</li>
-<li>fix setting expiry dates on keys (thanks to Ash Hughes)</li>
-<li>more internal fixes when editing keys (thanks to Ash Hughes)</li>
-<li>querying keyservers directly from the import screen</li>
-<li>fix layout and dialog style on Android 2.2-3.0</li>
-<li>fix crash on keys with empty user ids</li>
-<li>fix crash and empty lists when coming back from signing screen</li>
-<li>Bouncy Castle (cryptography library) updated from 1.47 to 1.50 and build from source</li>
-<li>fix upload of key from signing screen</li>
-</ul>
-<h2>2.2</h2>
-<ul>
-<li>new design with navigation drawer</li>
-<li>new public key list design</li>
-<li>new public key view</li>
-<li>bug fixes for importing of keys</li>
-<li>key cross-certification (thanks to Ash Hughes)</li>
-<li>handle UTF-8 passwords properly (thanks to Ash Hughes)</li>
-<li>first version with new languages (thanks to the contributors on Transifex)</li>
-<li>sharing of keys via QR Codes fixed and improved</li>
-<li>package signature verification for API</li>
-</ul>
-<h2>2.1.1</h2>
-<ul>
-<li>API Updates, preparation for K-9 Mail integration</li>
-</ul>
-<h2>2.1</h2>
-<ul>
-<li>lots of bug fixes</li>
-<li>new API for developers</li>
-<li>PRNG bug fix by Google</li>
-</ul>
-<h2>2.0</h2>
-<ul>
-<li>complete redesign</li>
-<li>share public keys via qr codes, nfc beam</li>
-<li>sign keys</li>
-<li>upload keys to server</li>
-<li>fixes import issues</li>
-<li>new AIDL API</li>
-</ul>
-<h2>1.0.8</h2>
-<ul>
-<li>basic keyserver support</li>
-<li>app2sd</li>
-<li>more choices for pass phrase cache: 1, 2, 4, 8, hours</li>
-<li>translations: Norwegian (thanks, Sander Danielsen), Chinese (thanks, Zhang Fredrick)</li>
-<li>bugfixes</li>
-<li>optimizations</li>
-</ul>
-<h2>1.0.7</h2>
-<ul>
-<li>fixed problem with signature verification of texts with trailing newline</li>
-<li>more options for pass phrase cache time to live (20, 40, 60 mins)</li>
-</ul>
-<h2>1.0.6</h2>
-<ul>
-<li>account adding crash on Froyo fixed</li>
-<li>secure file deletion</li>
-<li>option to delete key file after import</li>
-<li>stream encryption/decryption (gallery, etc.)</li>
-<li>new options (language, force v3 signatures)</li>
-<li>interface changes</li>
-<li>bugfixes</li>
-</ul>
-<h2>1.0.5</h2>
-<ul>
-<li>German and Italian translation</li>
-<li>much smaller package, due to reduced BC sources</li>
-<li>new preferences GUI</li>
-<li>layout adjustment for localization</li>
-<li>signature bugfix</li>
-</ul>
-<h2>1.0.4</h2>
-<ul>
-<li>fixed another crash caused by some SDK bug with query builder</li>
-</ul>
-<h2>1.0.3</h2>
-<ul>
-<li>fixed crashes during encryption/signing and possibly key export</li>
-</ul>
-<h2>1.0.2</h2>
-<ul>
-<li>filterable key lists</li>
-<li>smarter pre-selection of encryption keys</li>
-<li>new Intent handling for VIEW and SEND, allows files to be encrypted/decrypted out of file managers</li>
-<li>fixes and additional features (key preselection) for K-9 Mail, new beta build available</li>
-</ul>
-<h2>1.0.1</h2>
-<ul>
-<li>GMail account listing was broken in 1.0.0, fixed again</li>
-</ul>
-<h2>1.0.0</h2>
-<ul>
-<li>K-9 Mail integration, APG supporting beta build of K-9 Mail</li>
-<li>support of more file managers (including ASTRO)</li>
-<li>Slovenian translation</li>
-<li>new database, much faster, less memory usage</li>
-<li>defined Intents and content provider for other apps</li>
-<li>bugfixes</li>
-</ul>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-el/help_nfc_beam.html b/OpenKeychain/src/main/res/raw-el/help_nfc_beam.html
deleted file mode 100644
index 88492731c..000000000
--- a/OpenKeychain/src/main/res/raw-el/help_nfc_beam.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<html>
-<head></head>
-<body>
-<h2>How to receive keys</h2>
-<ol>
-<li>Go to your partners contacts and open the contact you want to share.</li>
-<li>Hold the two devices back to back (they have to be almost touching) and you’ll feel a vibration.</li>
-<li>After it vibrates you’ll see the content on your partners device turn into a card-like object with Star Trek warp speed-looking animation in the background.</li>
-<li>Tap the card and the content will then load on the your device.</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-el/help_start.html b/OpenKeychain/src/main/res/raw-el/help_start.html
deleted file mode 100644
index 51a76c01e..000000000
--- a/OpenKeychain/src/main/res/raw-el/help_start.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<html>
-<head></head>
-<body>
-<h2>Getting started</h2>
-<p>First you need a personal secret key. Create one via the option menus in "Keys" or import existing secret keys. Afterwards, you can download your friends' keys or exchange them via QR Codes or NFC.</p>
-
-<p>It is recommended that you install <a href="market://details?id=org.openintents.filemanager">OI File Manager</a> for enhanced file selection and <a href="market://details?id=com.google.zxing.client.android">Barcode Scanner</a> to scan generated QR Codes. Clicking on the links will open Google Play Store or F-Droid for installation.</p>
-
-<h2>Applications</h2>
-<p>Several applications support OpenKeychain to encrypt/sign your private communication:<br><img src="apps_k9"><br>K-9 Mail: OpenKeychain support available in current <a href="https://github.com/k9mail/k-9/releases/tag/4.904">alpha build</a>!<br><a href="market://details?id=eu.siacs.conversations"><img src="apps_conversations"><br>Conversations</a>: Jabber/XMPP client<br><a href="market://details?id=org.lf_net.pgpunlocker"><img src="apps_pgpauth"><br>PGPAuth</a>: App to send a PGP-signed request to a server to open or close something, e.g. a door</p>
-
-<h2>I found a bug in OpenKeychain!</h2>
-<p>Please report the bug using the <a href="https://github.com/openpgp-keychain/openpgp-keychain/issues">issue tracker of OpenKeychain</a>.</p>
-
-<h2>Contribute</h2>
-<p>If you want to help us developing OpenKeychain by contributing code <a href="https://github.com/openpgp-keychain/openpgp-keychain#contribute-code">follow our small guide on Github</a>.</p>
-
-<h2>Translations</h2>
-<p>Help translating OpenKeychain! Everybody can participate at <a href="https://www.transifex.com/projects/p/openpgp-keychain/">OpenKeychain on Transifex</a>.</p>
-
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-el/help_wot.html b/OpenKeychain/src/main/res/raw-el/help_wot.html
deleted file mode 100644
index 29790139b..000000000
--- a/OpenKeychain/src/main/res/raw-el/help_wot.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<html>
-<head></head>
-<body>
-<h2>Web of Trust</h2>
-<p>The Web of Trust describes the part of PGP which deals with creation and bookkeeping of certifications. It provides mechanisms to help the user keep track of who a public key belongs to, and share this information with others; To ensure the privacy of encrypted communication, it is essential to know that the public key you encrypt to belongs to the person you think it does.</p>
-
-<h2>Support in OpenKeychain</h2>
-<p>There is only basic support for Web of Trust in OpenKeychain. This is a heavy work in progress and subject to changes in upcoming releases.</p>
-
-<h2>Trust Model</h2>
-<p>Trust evaluation is based on the simple assumption that all keys which have secret keys available are trusted. Public keys which contain at least one user id certified by a trusted key will be marked with a green dot in the key listings. It is not (yet) possible to specify trust levels for certificates of other known public keys.</p>
-
-<h2>Certifying keys</h2>
-<p>Support for key certification is available, and user ids can be certified individually. It is not yet possible to specify the level of trust or create local and other special types of certificates.</p>
-
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-el/nfc_beam_share.html b/OpenKeychain/src/main/res/raw-el/nfc_beam_share.html
deleted file mode 100644
index 083e055c7..000000000
--- a/OpenKeychain/src/main/res/raw-el/nfc_beam_share.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head></head>
-<body>
-<ol>
-<li>Make sure that NFC is turned on in Settings &gt; More &gt; NFC and make sure that Android Beam is also on in the same section.</li>
-<li>Hold the two devices back to back (they have to be almost touching) and you'll feel a vibration.</li>
-<li>After it vibrates you'll see the content on your device turn into a card-like object with Star Trek warp speed-looking animation in the background.</li>
-<li>Tap the card and the content will then load on the other person’s device.</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-es/help_about.html b/OpenKeychain/src/main/res/raw-es/help_about.html
index a6067c8b9..af8bc2f64 100644
--- a/OpenKeychain/src/main/res/raw-es/help_about.html
+++ b/OpenKeychain/src/main/res/raw-es/help_about.html
@@ -5,27 +5,27 @@
<p><a href="http://www.openkeychain.org">OpenKeychain</a> es una implementación de OpenPGP para Android.</p>
<p>Licencia: GPLv3+</p>
-<h2>Desarrolladores OpenKeychain</h2>
+<h2>Desarrolladores</h2>
<ul>
-<li>Dominik Schürmann (Desarrollador principal)</li>
-<li>Ash Hughes (Parches cryptográficos)</li>
+<li>Dominik Schürmann (Mantenedor)</li>
+<li>Art O Cathain</li>
+<li>Ash Hughes</li>
<li>Brian C. Barnes</li>
-<li>Bahtiar 'kalkin' Gadimov (UI)</li>
+<li>Bahtiar 'kalkin' Gadimov</li>
+<li>Daniel Albert</li>
<li>Daniel Hammann</li>
<li>Daniel Haß</li>
<li>Greg Witczak</li>
+<li>'mar-v-in'</li>
+<li>Markus Doits</li>
<li>Miroojin Bakshi</li>
<li>Nikhil Peter Raj</li>
<li>Paul Sarbinowski</li>
+<li>'Senecaso'</li>
<li>Sreeram Boyapati</li>
-<li>Vincent Breitmoser</li>
+<li>Thialfihar (APG 1.x)</li>
<li>Tim Bray</li>
-</ul>
-<h2>Desarrolladores de APG 1.x</h2>
-<ul>
-<li>Thialfihar (Desarrollador principal)</li>
-<li>'Senecaso' (Código QR, clave de firma, carga de clave)</li>
-<li>Markus Doits</li>
+<li>Vincent Breitmoser</li>
</ul>
<h2>Librerías</h2>
<ul>
@@ -34,17 +34,21 @@
<li>
<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (Licencia Apache v2)</li>
<li>
-<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Licencia Apache v2)</li>
+<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Licencia Apache v2)</li>
+<li>
+<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Licencia Apache v2)</li>
+<li>
+<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Licencia Apache v2)</li>
<li>
-<a href="https://github.com/Bearded-Hen/Android-Bootstrap">Android-Bootstrap</a> (Licencia MIT)</li>
+<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Licencia Apache v2)</li>
+<li>
+<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Licencia Apache v2)</li>
<li>
<a href="http://code.google.com/p/zxing/">ZXing</a> (Licencia Apache v2)</li>
<li>
<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (Licencia MIT X11)</li>
<li>
<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Licencia Apache v2)</li>
-<li>
-<a href="https://github.com/johnkil/Android-AppMsg">Librería Android AppMsg</a> (Licencia Apache v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-es/help_changelog.html b/OpenKeychain/src/main/res/raw-es/help_changelog.html
index 0cd3773a2..a6b2d269d 100644
--- a/OpenKeychain/src/main/res/raw-es/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw-es/help_changelog.html
@@ -1,6 +1,20 @@
<html>
<head></head>
<body>
+<h2>2.8</h2>
+<ul>
+<li>Se han reparado tantos fallos en esta versión que vamos a concentrarnos en las principales características nuevas</li>
+<li>Edición de clave: Tremendo nuevo diseño, revocación de clave</li>
+<li>Importación de clave: Impresionante nuevo diseño, conexiones seguras al servidor de claves vía hkps, el servidor de claves resuelve mediante registros DNS SRV</li>
+<li>Nueva pantalla de primer inicio</li>
+<li>Nueva pantalla de creación de clave: Autocompletado del nombre y correo electrónico basado en sus cuentas Android personales</li>
+<li>Cifrado de fichero: Pasmante nuevo diseño, soporte para cifrar múltiples ficheros.</li>
+<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>
+</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>
+
<h2>2.7</h2>
<ul>
<li>Purple! (Dominik, Vincent)</li>
@@ -11,21 +25,21 @@
</ul>
<h2>2.6.1</h2>
<ul>
-<li>algunas reparaciones para fallos recurrentes</li>
+<li>Algunas reparaciones para fallos regresivos (reaparecidos)</li>
</ul>
<h2>2.6</h2>
<ul>
-<li>certificaciones de clave (gracias a Vincent Breitmoser)</li>
-<li>soporte para claves secretas parciales de GnuPG (gracias a Vincent Breitmoser)</li>
-<li>nuevo diseño para la verificación de firma</li>
-<li>tamaño de clave personalizado (gracias a Greg Witczak)</li>
-<li>reparada funcionalidad-compartir desde otras aplicaciones</li>
+<li>Certificaciones de clave (gracias a Vincent Breitmoser)</li>
+<li>Soporte para claves secretas parciales de GnuPG (gracias a Vincent Breitmoser)</li>
+<li>Nuevo diseño para verificación de firma</li>
+<li>Tamaño de clave personalizado (gracias a Greg Witczak)</li>
+<li>Fix share-functionality from other apps</li>
</ul>
<h2>2.5</h2>
<ul>
-<li>corregido descifrado de mensajes/ficheros con pgp simétrico</li>
-<li>rediseñada la pantalla de edición de claves (gracias a Ash Hughes)</li>
-<li>diseño más moderno para las pantallas de cifrado/descifrado</li>
+<li>Fix decryption of symmetric pgp messages/files</li>
+<li>Refactored edit key screen (thanks to Ash Hughes)</li>
+<li>New modern design for encrypt/decrypt screens</li>
<li>OpenPGP API versión 3 (múltiples cuentas API, reparaciones internas, comprobación de claves)</li>
</ul>
<h2>2.4</h2>
@@ -33,45 +47,45 @@
Además de varios parches pequeños, un notable número de correcciones fueron hechas por las siguientes personas (en orden alfabético):
Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Paul Sarbinowski, Sreeram Boyapati, Vincent Breitmoser.</p>
<ul>
-<li>nueva lista unificada de claves</li>
-<li>huella digital de la clave coloreada</li>
-<li>compatibilidad con puertos del servidor de claves</li>
-<li>desactivar la posibilidad de generar claves débiles</li>
-<li>mucho más trabajo en el interior de la API</li>
-<li>certificar las IDs de usuario</li>
-<li>consulta al servidor de claves basadas ​​en lecturas mecánicas</li>
-<li>cerrar navigation drawer en tabletas</li>
-<li>sugerencias para emails en la creación de claves</li>
-<li>buscar en las listas de claves públicas</li>
-<li>y muchas más mejoras y correcciones...</li>
+<li>New unified key list</li>
+<li>Colorized key fingerprint</li>
+<li>Support for keyserver ports</li>
+<li>Deactivate possibility to generate weak keys</li>
+<li>Much more internal work on the API</li>
+<li>Certify user ids</li>
+<li>Keyserver query based on machine-readable output</li>
+<li>Lock navigation drawer on tablets</li>
+<li>Suggestions for emails on creation of keys</li>
+<li>Search in public key lists</li>
+<li>And much more improvements and fixes…</li>
</ul>
<h2>2.3.1</h2>
<ul>
-<li>corrección del fallo cuando se actualiza desde versiones anteriores</li>
+<li>Hotfix for crash when upgrading from old versions</li>
</ul>
<h2>2.3</h2>
<ul>
-<li>elimina la exportación innecesaria de claves públicas cuando se exporta la clave secreta (gracias a Ash Hughes)</li>
-<li>corrige la configuración de la fecha de caducidad en las claves (gracias a Ash Hughes)</li>
-<li>más correcciones internas cuando se editan claves (gracias a Ash Hughes)</li>
-<li>consultar los servidores de claves directamente desde la ventana de importación</li>
-<li>corrige el diseño y estilo de mensajes en Android 2.2-3.0</li>
-<li>corrige error en claves con IDs de usuario vacías</li>
-<li>corrige fallo y listados vacíos cuando se regresa desde la pantalla de firma</li>
+<li>Remove unnecessary export of public keys when exporting secret key (thanks to Ash Hughes)</li>
+<li>Fix setting expiry dates on keys (thanks to Ash Hughes)</li>
+<li>More internal fixes when editing keys (thanks to Ash Hughes)</li>
+<li>Querying keyservers directly from the import screen</li>
+<li>Fix layout and dialog style on Android 2.2-3.0</li>
+<li>Fix crash on keys with empty user ids</li>
+<li>Fix crash and empty lists when coming back from signing screen</li>
<li>Bouncy Castle (librería criptográfica) actualizada de 1.47 a 1.50 y compilada desde la fuente</li>
-<li>corrige la carga de la clave desde la pantalla de firma</li>
+<li>Fix upload of key from signing screen</li>
</ul>
<h2>2.2</h2>
<ul>
-<li>nuevo diseño con Navigation Drawer</li>
-<li>nuevo diseño de la lista de clave pública</li>
-<li>nueva vista de la clave pública</li>
-<li>correcciones en la importación de claves</li>
-<li>clave de certificación cruzada (gracias a Ash Hughes)</li>
-<li>manejo correcto de las contraseñas UTF-8 (gracias a Ash Hughes)</li>
-<li>primera versión con nuevos idiomas (gracias a los colaboradores en Transifex)</li>
-<li>compartir claves a través de códigos QR corregido y mejorado</li>
-<li>verificación por API del paquete de firma</li>
+<li>New design with navigation drawer</li>
+<li>New public key list design</li>
+<li>New public key view</li>
+<li>Bug fixes for importing of keys</li>
+<li>Key cross-certification (thanks to Ash Hughes)</li>
+<li>Handle UTF-8 passwords properly (thanks to Ash Hughes)</li>
+<li>First version with new languages (thanks to the contributors on Transifex)</li>
+<li>Sharing of keys via QR Codes fixed and improved</li>
+<li>Package signature verification for API</li>
</ul>
<h2>2.1.1</h2>
<ul>
@@ -79,65 +93,65 @@ Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Pa
</ul>
<h2>2.1</h2>
<ul>
-<li>corrección de muchos bugs</li>
-<li>nueva API para desarrolladores</li>
+<li>Lots of bug fixes</li>
+<li>New API for developers</li>
<li>corrección del bug PRNG por Google</li>
</ul>
<h2>2.0</h2>
<ul>
-<li>completo rediseño</li>
-<li>compartir claves públicas a través de códigos QR, NFC, Beam</li>
-<li>claves de firma</li>
-<li>cargar claves al servidor</li>
-<li>corrige problemas importantes</li>
-<li>nueva API AIDL</li>
+<li>Complete redesign</li>
+<li>Share public keys via qr codes, nfc beam</li>
+<li>Sign keys</li>
+<li>Upload keys to server</li>
+<li>Fixes import issues</li>
+<li>New AIDL API</li>
</ul>
<h2>1.0.8</h2>
<ul>
-<li>compatibilidad básica de los servidores de claves</li>
-<li>app-a-sd</li>
-<li>más opciones para la caché de la frase de contraseña: 1, 2, 4, 8 horas</li>
-<li>traducciones: noruego (gracias, Sander Danielsen), chino (gracias, Zhang Fredrick)</li>
-<li>correcciones de errores</li>
-<li>optimizaciones</li>
+<li>Basic keyserver support</li>
+<li>App2sd</li>
+<li>More choices for pass phrase cache: 1, 2, 4, 8, hours</li>
+<li>Translations: Norwegian (thanks, Sander Danielsen), Chinese (thanks, Zhang Fredrick)</li>
+<li>Bugfixes</li>
+<li>Optimizations</li>
</ul>
<h2>1.0.7</h2>
<ul>
-<li>corregido el problema con la verificación de firma de textos que arrastran a una nueva línea</li>
-<li>más opciones para el tiempo de la caché de la frase de contraseña hasta ahora (20, 40, 60 mins)</li>
+<li>Fixed problem with signature verification of texts with trailing newline</li>
+<li>More options for pass phrase cache time to live (20, 40, 60 mins)</li>
</ul>
<h2>1.0.6</h2>
<ul>
-<li>corregido el problema al añadir cuentas en Froyo</li>
-<li>borrado seguro de archivo</li>
-<li>opción para borrar el archivo de clave después de importarlo</li>
-<li>flujo de cifrado/descifrado (galería, etc.)</li>
-<li>nuevas opciones (idioma, forzar firmas v3)</li>
-<li>cambios en la interfaz</li>
-<li>correcciones de errores</li>
+<li>Account adding crash on Froyo fixed</li>
+<li>Secure file deletion</li>
+<li>Option to delete key file after import</li>
+<li>Stream encryption/decryption (gallery, etc.)</li>
+<li>New options (language, force v3 signatures)</li>
+<li>Interface changes</li>
+<li>Bugfixes</li>
</ul>
<h2>1.0.5</h2>
<ul>
<li>traducciones a alemán e italiano</li>
-<li>paquete de mucho menos tamaño, debido a fuentes BC reducidas</li>
-<li>nuevas preferencias en la GUI</li>
-<li>ajuste del diseño para localización</li>
-<li>corrección de error en la firma</li>
+<li>Much smaller package, due to reduced BC sources</li>
+<li>New preferences GUI</li>
+<li>Layout adjustment for localization</li>
+<li>Signature bugfix</li>
</ul>
<h2>1.0.4</h2>
<ul>
-<li>corregido otro error causado por algún bug en el SDK con el constructor de consultas</li>
+<li>Fixed another crash caused by some SDK bug with query builder</li>
</ul>
<h2>1.0.3</h2>
<ul>
-<li>corregidos los errores durante el cifrado/firma y probablemente en la exportación de la clave</li>
+<li>Fixed crashes during encryption/signing and possibly key export</li>
</ul>
<h2>1.0.2</h2>
<ul>
-<li>listas de claves con filtro</li>
-<li>preselección de claves de cifrado más inteligente</li>
-<li>nuevo intento en el manejo para VER y ENVIAR, permite que los archivos sean cifrados/descifrados fuera de los gestores de archivos</li>
-<li>corrige y añade características (preselección de clave) para K-9 Mail, nueva compilación disponible</li>
+<li>Filterable key lists</li>
+<li>Smarter pre-selection of encryption keys</li>
+<li>New Intent handling for VIEW and SEND, allows files to be encrypted/decrypted out of file managers</li>
+<li>Fixes and additional features (key preselection) for K-9 Mail, new beta build available</li>
</ul>
<h2>1.0.1</h2>
<ul>
@@ -146,11 +160,11 @@ Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Pa
<h2>1.0.0</h2>
<ul>
<li>integración con K-9 Mail, APG compatible con la compilación beta de K-9 Mail</li>
-<li>compatibilidad para más gestores de archivos (incluyendo ASTRO)</li>
+<li>Support of more file managers (including ASTRO)</li>
<li>traducción al esloveno</li>
-<li>nueva base de datos, más rápida, con menos demanda de memoria</li>
-<li>definidos los intentos y el proveedor de contenido para otras aplicaciones</li>
-<li>correcciones de errores</li>
+<li>New database, much faster, less memory usage</li>
+<li>Defined Intents and content provider for other apps</li>
+<li>Bugfixes</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-et/help_about.html b/OpenKeychain/src/main/res/raw-et/help_about.html
index ab3c19375..f536fecbd 100644
--- a/OpenKeychain/src/main/res/raw-et/help_about.html
+++ b/OpenKeychain/src/main/res/raw-et/help_about.html
@@ -5,27 +5,27 @@
<p><a href="http://www.openkeychain.org">OpenKeychain</a> is an OpenPGP implementation for Android.</p>
<p>License: GPLv3+</p>
-<h2>Developers OpenKeychain</h2>
+<h2>Developers</h2>
<ul>
-<li>Dominik Schürmann (Lead developer)</li>
-<li>Ash Hughes (crypto patches)</li>
+<li>Dominik Schürmann (Maintainer)</li>
+<li>Art O Cathain</li>
+<li>Ash Hughes</li>
<li>Brian C. Barnes</li>
-<li>Bahtiar 'kalkin' Gadimov (UI)</li>
+<li>Bahtiar 'kalkin' Gadimov</li>
+<li>Daniel Albert</li>
<li>Daniel Hammann</li>
<li>Daniel Haß</li>
<li>Greg Witczak</li>
+<li>'mar-v-in'</li>
+<li>Markus Doits</li>
<li>Miroojin Bakshi</li>
<li>Nikhil Peter Raj</li>
<li>Paul Sarbinowski</li>
+<li>'Senecaso'</li>
<li>Sreeram Boyapati</li>
-<li>Vincent Breitmoser</li>
+<li>Thialfihar (APG 1.x)</li>
<li>Tim Bray</li>
-</ul>
-<h2>Developers APG 1.x</h2>
-<ul>
-<li>Thialfihar (Lead developer)</li>
-<li>'Senecaso' (QRCode, sign key, upload key)</li>
-<li>Markus Doits</li>
+<li>Vincent Breitmoser</li>
</ul>
<h2>Libraries</h2>
<ul>
@@ -34,17 +34,21 @@
<li>
<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache License v2)</li>
+<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/Bearded-Hen/Android-Bootstrap">Android-Bootstrap</a> (MIT License)</li>
+<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache License v2)</li>
<li>
<a href="http://code.google.com/p/zxing/">ZXing</a> (Apache License v2)</li>
<li>
<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
<li>
<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Apache License v2)</li>
-<li>
-<a href="https://github.com/johnkil/Android-AppMsg">Android AppMsg Library</a> (Apache License v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-et/help_changelog.html b/OpenKeychain/src/main/res/raw-et/help_changelog.html
index ebada67f9..e27ac7475 100644
--- a/OpenKeychain/src/main/res/raw-et/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw-et/help_changelog.html
@@ -1,6 +1,20 @@
<html>
<head></head>
<body>
+<h2>2.8</h2>
+<ul>
+<li>So many bugs have been fixed in this release that we focus on the main new features</li>
+<li>Key edit: awesome new design, key revocation</li>
+<li>Key import: awesome new design, secure keyserver connections via hkps, keyserver resolving via DNS SRV records</li>
+<li>New first time screen</li>
+<li>New create key screen: autocompletion of name and email based on your personal Android accounts</li>
+<li>File encryption: awesome new design, support for encrypting multiple files</li>
+<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>
+</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>
+
<h2>2.7</h2>
<ul>
<li>Purple! (Dominik, Vincent)</li>
@@ -11,21 +25,21 @@
</ul>
<h2>2.6.1</h2>
<ul>
-<li>some fixes for regression bugs</li>
+<li>Some fixes for regression bugs</li>
</ul>
<h2>2.6</h2>
<ul>
-<li>key certifications (thanks to Vincent Breitmoser)</li>
-<li>support for GnuPG partial secret keys (thanks to Vincent Breitmoser)</li>
-<li>new design for signature verification</li>
-<li>custom key length (thanks to Greg Witczak)</li>
-<li>fix share-functionality from other apps</li>
+<li>Key certifications (thanks to Vincent Breitmoser)</li>
+<li>Support for GnuPG partial secret keys (thanks to Vincent Breitmoser)</li>
+<li>New design for signature verification</li>
+<li>Custom key length (thanks to Greg Witczak)</li>
+<li>Fix share-functionality from other apps</li>
</ul>
<h2>2.5</h2>
<ul>
-<li>fix decryption of symmetric pgp messages/files</li>
-<li>refactored edit key screen (thanks to Ash Hughes)</li>
-<li>new modern design for encrypt/decrypt screens</li>
+<li>Fix decryption of symmetric pgp messages/files</li>
+<li>Refactored edit key screen (thanks to Ash Hughes)</li>
+<li>New modern design for encrypt/decrypt screens</li>
<li>OpenPGP API version 3 (multiple api accounts, internal fixes, key lookup)</li>
</ul>
<h2>2.4</h2>
@@ -33,45 +47,45 @@
Besides several small patches, a notable number of patches are made by the following people (in alphabetical order):
Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Paul Sarbinowski, Sreeram Boyapati, Vincent Breitmoser.</p>
<ul>
-<li>new unified key list</li>
-<li>colorized key fingerprint</li>
-<li>support for keyserver ports</li>
-<li>deactivate possibility to generate weak keys</li>
-<li>much more internal work on the API</li>
-<li>certify user ids</li>
-<li>keyserver query based on machine-readable output</li>
-<li>lock navigation drawer on tablets</li>
-<li>suggestions for emails on creation of keys</li>
-<li>search in public key lists</li>
-<li>and much more improvements and fixes…</li>
+<li>New unified key list</li>
+<li>Colorized key fingerprint</li>
+<li>Support for keyserver ports</li>
+<li>Deactivate possibility to generate weak keys</li>
+<li>Much more internal work on the API</li>
+<li>Certify user ids</li>
+<li>Keyserver query based on machine-readable output</li>
+<li>Lock navigation drawer on tablets</li>
+<li>Suggestions for emails on creation of keys</li>
+<li>Search in public key lists</li>
+<li>And much more improvements and fixes…</li>
</ul>
<h2>2.3.1</h2>
<ul>
-<li>hotfix for crash when upgrading from old versions</li>
+<li>Hotfix for crash when upgrading from old versions</li>
</ul>
<h2>2.3</h2>
<ul>
-<li>remove unnecessary export of public keys when exporting secret key (thanks to Ash Hughes)</li>
-<li>fix setting expiry dates on keys (thanks to Ash Hughes)</li>
-<li>more internal fixes when editing keys (thanks to Ash Hughes)</li>
-<li>querying keyservers directly from the import screen</li>
-<li>fix layout and dialog style on Android 2.2-3.0</li>
-<li>fix crash on keys with empty user ids</li>
-<li>fix crash and empty lists when coming back from signing screen</li>
+<li>Remove unnecessary export of public keys when exporting secret key (thanks to Ash Hughes)</li>
+<li>Fix setting expiry dates on keys (thanks to Ash Hughes)</li>
+<li>More internal fixes when editing keys (thanks to Ash Hughes)</li>
+<li>Querying keyservers directly from the import screen</li>
+<li>Fix layout and dialog style on Android 2.2-3.0</li>
+<li>Fix crash on keys with empty user ids</li>
+<li>Fix crash and empty lists when coming back from signing screen</li>
<li>Bouncy Castle (cryptography library) updated from 1.47 to 1.50 and build from source</li>
-<li>fix upload of key from signing screen</li>
+<li>Fix upload of key from signing screen</li>
</ul>
<h2>2.2</h2>
<ul>
-<li>new design with navigation drawer</li>
-<li>new public key list design</li>
-<li>new public key view</li>
-<li>bug fixes for importing of keys</li>
-<li>key cross-certification (thanks to Ash Hughes)</li>
-<li>handle UTF-8 passwords properly (thanks to Ash Hughes)</li>
-<li>first version with new languages (thanks to the contributors on Transifex)</li>
-<li>sharing of keys via QR Codes fixed and improved</li>
-<li>package signature verification for API</li>
+<li>New design with navigation drawer</li>
+<li>New public key list design</li>
+<li>New public key view</li>
+<li>Bug fixes for importing of keys</li>
+<li>Key cross-certification (thanks to Ash Hughes)</li>
+<li>Handle UTF-8 passwords properly (thanks to Ash Hughes)</li>
+<li>First version with new languages (thanks to the contributors on Transifex)</li>
+<li>Sharing of keys via QR Codes fixed and improved</li>
+<li>Package signature verification for API</li>
</ul>
<h2>2.1.1</h2>
<ul>
@@ -79,65 +93,65 @@ Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Pa
</ul>
<h2>2.1</h2>
<ul>
-<li>lots of bug fixes</li>
-<li>new API for developers</li>
+<li>Lots of bug fixes</li>
+<li>New API for developers</li>
<li>PRNG bug fix by Google</li>
</ul>
<h2>2.0</h2>
<ul>
-<li>complete redesign</li>
-<li>share public keys via qr codes, nfc beam</li>
-<li>sign keys</li>
-<li>upload keys to server</li>
-<li>fixes import issues</li>
-<li>new AIDL API</li>
+<li>Complete redesign</li>
+<li>Share public keys via qr codes, nfc beam</li>
+<li>Sign keys</li>
+<li>Upload keys to server</li>
+<li>Fixes import issues</li>
+<li>New AIDL API</li>
</ul>
<h2>1.0.8</h2>
<ul>
-<li>basic keyserver support</li>
-<li>app2sd</li>
-<li>more choices for pass phrase cache: 1, 2, 4, 8, hours</li>
-<li>translations: Norwegian (thanks, Sander Danielsen), Chinese (thanks, Zhang Fredrick)</li>
-<li>bugfixes</li>
-<li>optimizations</li>
+<li>Basic keyserver support</li>
+<li>App2sd</li>
+<li>More choices for pass phrase cache: 1, 2, 4, 8, hours</li>
+<li>Translations: Norwegian (thanks, Sander Danielsen), Chinese (thanks, Zhang Fredrick)</li>
+<li>Bugfixes</li>
+<li>Optimizations</li>
</ul>
<h2>1.0.7</h2>
<ul>
-<li>fixed problem with signature verification of texts with trailing newline</li>
-<li>more options for pass phrase cache time to live (20, 40, 60 mins)</li>
+<li>Fixed problem with signature verification of texts with trailing newline</li>
+<li>More options for pass phrase cache time to live (20, 40, 60 mins)</li>
</ul>
<h2>1.0.6</h2>
<ul>
-<li>account adding crash on Froyo fixed</li>
-<li>secure file deletion</li>
-<li>option to delete key file after import</li>
-<li>stream encryption/decryption (gallery, etc.)</li>
-<li>new options (language, force v3 signatures)</li>
-<li>interface changes</li>
-<li>bugfixes</li>
+<li>Account adding crash on Froyo fixed</li>
+<li>Secure file deletion</li>
+<li>Option to delete key file after import</li>
+<li>Stream encryption/decryption (gallery, etc.)</li>
+<li>New options (language, force v3 signatures)</li>
+<li>Interface changes</li>
+<li>Bugfixes</li>
</ul>
<h2>1.0.5</h2>
<ul>
<li>German and Italian translation</li>
-<li>much smaller package, due to reduced BC sources</li>
-<li>new preferences GUI</li>
-<li>layout adjustment for localization</li>
-<li>signature bugfix</li>
+<li>Much smaller package, due to reduced BC sources</li>
+<li>New preferences GUI</li>
+<li>Layout adjustment for localization</li>
+<li>Signature bugfix</li>
</ul>
<h2>1.0.4</h2>
<ul>
-<li>fixed another crash caused by some SDK bug with query builder</li>
+<li>Fixed another crash caused by some SDK bug with query builder</li>
</ul>
<h2>1.0.3</h2>
<ul>
-<li>fixed crashes during encryption/signing and possibly key export</li>
+<li>Fixed crashes during encryption/signing and possibly key export</li>
</ul>
<h2>1.0.2</h2>
<ul>
-<li>filterable key lists</li>
-<li>smarter pre-selection of encryption keys</li>
-<li>new Intent handling for VIEW and SEND, allows files to be encrypted/decrypted out of file managers</li>
-<li>fixes and additional features (key preselection) for K-9 Mail, new beta build available</li>
+<li>Filterable key lists</li>
+<li>Smarter pre-selection of encryption keys</li>
+<li>New Intent handling for VIEW and SEND, allows files to be encrypted/decrypted out of file managers</li>
+<li>Fixes and additional features (key preselection) for K-9 Mail, new beta build available</li>
</ul>
<h2>1.0.1</h2>
<ul>
@@ -146,11 +160,11 @@ Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Pa
<h2>1.0.0</h2>
<ul>
<li>K-9 Mail integration, APG supporting beta build of K-9 Mail</li>
-<li>support of more file managers (including ASTRO)</li>
+<li>Support of more file managers (including ASTRO)</li>
<li>Slovenian translation</li>
-<li>new database, much faster, less memory usage</li>
-<li>defined Intents and content provider for other apps</li>
-<li>bugfixes</li>
+<li>New database, much faster, less memory usage</li>
+<li>Defined Intents and content provider for other apps</li>
+<li>Bugfixes</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-fr/help_about.html b/OpenKeychain/src/main/res/raw-fr/help_about.html
index 351bdc8f4..828e2f31c 100644
--- a/OpenKeychain/src/main/res/raw-fr/help_about.html
+++ b/OpenKeychain/src/main/res/raw-fr/help_about.html
@@ -5,27 +5,27 @@
<p><a href="http://www.openkeychain.org">OpenKeychain</a> est une implémentation d'OpenPGP pour Android.</p>
<p>Licence : GPLv3+</p>
-<h2>Les développeurs d'OpenKeychain</h2>
+<h2>Développeurs</h2>
<ul>
-<li>Dominik Schürmann (développeur principal)</li>
-<li>Ash Hughes (correctif crypto)</li>
+<li>Dominik Schürmann (mainteneur)</li>
+<li>Art O Cathain</li>
+<li>Ash Hughes</li>
<li>Brian C. Barnes</li>
-<li>Bahtiar « kalkin » Gadimov (interface utilisateur)</li>
+<li>Bahtiar « kalkin » Gadimov</li>
+<li>Daniel Albert</li>
<li>Daniel Hammann</li>
<li>Daniel Haß</li>
<li>Greg Witczak</li>
+<li>« mar-v-in »</li>
+<li>Markus Doits</li>
<li>Miroojin Bakshi</li>
<li>Nikhil Peter Raj</li>
<li>Paul Sarbinowski</li>
+<li>« 'Senecaso »</li>
<li>Sreeram Boyapati</li>
-<li>Vincent Breitmoser</li>
+<li>Thialfihar (APG 1.x)</li>
<li>Tim Bray</li>
-</ul>
-<h2>Les développeurs d'APG 1.x</h2>
-<ul>
-<li>Thialfihar (développeur principal)</li>
-<li>« Senecaso » (Code QR, signer/téléverser la clef)</li>
-<li>Markus Doits</li>
+<li>Vincent Breitmoser</li>
</ul>
<h2>Bibliothèques</h2>
<ul>
@@ -34,17 +34,21 @@
<li>
<a href="http://developer.android.com/tools/support-library/index.html">Bibliothèque de soutien Android v7 « appcompat »</a> (Licence Apache v2)</li>
<li>
-<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Licence Apache v2)</li>
+<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Licence Apache v2)</li>
+<li>
+<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (License Apache v2)</li>
+<li>
+<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (License Apache v2)</li>
<li>
-<a href="https://github.com/Bearded-Hen/Android-Bootstrap">Android-Bootstrap</a> ( Licence MIT)</li>
+<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (License Apache v2)</li>
+<li>
+<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Licence Apache v2)</li>
<li>
<a href="http://code.google.com/p/zxing/">ZXing</a> (Licence Apache v2)</li>
<li>
<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (Licence MIT X11)</li>
<li>
<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Licence Apache v2)</li>
-<li>
-<a href="https://github.com/johnkil/Android-AppMsg">Bibliothèque Android AppMsg</a> (Licence Apache v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-fr/help_changelog.html b/OpenKeychain/src/main/res/raw-fr/help_changelog.html
index 82486cdcc..43618398d 100644
--- a/OpenKeychain/src/main/res/raw-fr/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw-fr/help_changelog.html
@@ -1,6 +1,20 @@
<html>
<head></head>
<body>
+<h2>2.8</h2>
+<ul>
+<li>Tellement de bogues ont été réglés dans cette version que nous nous concentrons sur les nouvelles caractéristiques principales.</li>
+<li>Modification des clefs : nouvelle et superbe conception, révocations des clefs </li>
+<li>Importation des clefs : nouvelle et superbe conception, connexion sécurisé aux serveurs de clefs par hkps, résolution des serveurs de clefs par transactions DNS SRV</li>
+<li>Nouvel écran de premier lancement</li>
+<li>Nouvel écran de création de clef : autoremplissage du nom et du courriel d'après vos coordonnées Android</li>
+<li>Chiffrement des fichiers : nouvelle et superbe conception, prise en charge du chiffrement de fichiers multiples</li>
+<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>
+</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>
+
<h2>2.7</h2>
<ul>
<li>Violet ! (Dominik, Vincent)</li>
@@ -11,21 +25,21 @@
</ul>
<h2>2.6.1</h2>
<ul>
-<li>quelques correctifs de bogues de régression</li>
+<li>Quelques correctifs de bogues de régression</li>
</ul>
<h2>2.6</h2>
<ul>
-<li>certifications des clefs (merci à Vincent Breitmoser)</li>
-<li>prise en charge des clefs secrètes partielles de GnuPG (merci à Vincent Breitmoser)</li>
-<li>nouvelle conception de la vérification des signatures</li>
-<li>longueur de clef personnalisée (merci à Greg Witczak)</li>
-<li>correction de la fonctionnalité partagée avec d'autres applis</li>
+<li>Certifications des clefs (merci à Vincent Breitmoser)</li>
+<li>Prise en charge clefs secrètes partielles de GnuPG (merci à Vincent Breitmoser)</li>
+<li>Nouvelle conception de la vérification de signatures</li>
+<li>Longueur de clef personnalisée (merci à Greg Witczak)</li>
+<li>Correctif - fonctionnalités partagées d'autres applis</li>
</ul>
<h2>2.5</h2>
<ul>
-<li>corrige le déchiffrement des messages/fichiers pgp symétriques</li>
-<li>écran réusiné de modification des clefs (merci à Ash Hughes)</li>
-<li>nouveau style moderne des écrans de chiffrement/déchiffrement</li>
+<li>Correctif - déchiffrement de messages/fichiers pgp symétriques</li>
+<li>Nouvel mouture de l'écran de modification des clefs (merci à Ash Hughes)</li>
+<li>Nouvelle conception moderne pour les écrans de chiffrement/déchiffrement</li>
<li>API OpenPGP version 3 (comptes multiples d'api, correctifs internes, recherche de clefs)</li>
</ul>
<h2>2.4</h2>
@@ -34,44 +48,44 @@
Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Paul Sarbinowski, Sreeram Boyapati, Vincent Breitmoser.</p>
<ul>
<li>Nouvelle liste de clefs unifiée</li>
-<li>empreinte de clef colorée</li>
-<li>prise en charge des ports du serveur de clefs</li>
-<li>désactiver la possibilité de générer des clefs faibles</li>
-<li>bien plus de travail interne sur l'API</li>
-<li>certifier les ID d'utilisateurs</li>
-<li>requête du serveur de clef basée sur une sortie lisible par la machine</li>
-<li>verrouiller le tiroir de navigation sur les tablettes</li>
-<li>suggestions de courriels à la création des clefs</li>
-<li>recherche dans les listes de clefs publiques</li>
-<li>et bien plus d'améliorations et de correctifs...</li>
+<li>Empreintes de clefs colorées</li>
+<li>Prise en charge des ports des serveurs de clefs</li>
+<li>Désactiver la possibilité de générer des clefs faibles</li>
+<li>Encore plus de travail interne dans l'API</li>
+<li>Certifier les ID d'utilisateurs</li>
+<li>Requêtes des serveurs de clefs basées sur des sorties assimilables par la machine</li>
+<li>Verrouiller les tiroirs de navigation sur les tablettes</li>
+<li>Suggestion de courriels à la création de clefs</li>
+<li>Rechercher dans les listes de clefs publiques</li>
+<li>Et bien plus d'améliorations et de correctifs</li>
</ul>
<h2>2.3.1</h2>
<ul>
-<li>correctif de plantage lors de la mise à niveau des anciennes versions</li>
+<li>Correctif d'urgence pour le plantage lors de la mise à niveau à partir d'anciennes versions</li>
</ul>
<h2>2.3</h2>
<ul>
-<li>supprimer l'exportation non nécessaire des clefs publiques lors de l'exportation d'une clef secrète</li>
-<li>correctif de définition de la date date de péremption des clefs (merci à Ash Hughes)</li>
-<li>autres correctifs internes affectant la modifications des clefs (merci à Ash hughes)</li>
-<li>interrogation des serveurs de clefs directement depuis l'écran d'importation</li>
-<li>correctif de mise en page et du style des fenêtres de dialogue sur Android 2.2-3.0</li>
-<li>corriger un plantage pour les clefs avec des ID d'utilisateurs vides</li>
-<li>corrige un plantage et des listes vides en revenant de l'écran de signature</li>
+<li>Suppressions de l'exportation non nécessaire des clefs publiques lors de l'exportation de clefs secrètes (merci à Ash Hughes)</li>
+<li>Correctif - définition de la date de péremption des clefs (merci à Ash Hughes)</li>
+<li>Plus de correctifs internes affectant la modifications des clefs (merci à Ash hughes)</li>
+<li>Interrogation des serveurs de clefs directement depuis l'écran d'importation</li>
+<li>Correctif - mise en page et du style des fenêtres de dialogue sur Android 2.2-3.0</li>
+<li>Correctif - plantage pour les clefs avec des ID d'utilisateur vides</li>
+<li>Correctif - plantage et listes vides en revenant de l'écran de signature</li>
<li>Bouncy Castle (bibliothèque cryptographique) mise à jour de 1.47 à 1.50 et compilée depuis la source</li>
-<li>correction du téléversement d'une clef depuis l'écran de signature</li>
+<li>Correctif - téléversement d'une clef depuis l'écran de signature</li>
</ul>
<h2>2.2</h2>
<ul>
-<li>nouvelle conception avec tiroir de navigation</li>
-<li>nouveau style de liste des clefs publics</li>
-<li>nouvel affichage des clefs publics</li>
-<li>correctif de bogues d'importation de clefs</li>
-<li>certification croisée des clefs (merci à Ash Hughes)</li>
-<li>bonne gestion des mots de passe UTF-8 (merci à Ash Hughes)</li>
-<li>première version avec de nouvelles langues (merci aux contributeurs sur Transifex)</li>
-<li>correctif et amélioration du partage des clefs par codes QR</li>
-<li>vérification de la signature des paquets pour l'API</li>
+<li>Nouvelle conception avec tiroir de navigation</li>
+<li>Nouvelle conception de la liste des clefs publics</li>
+<li>Nouvelle vue des clefs publics</li>
+<li>Correctif de bogues d'importation de clefs</li>
+<li>Certification croisée des clefs (merci à Ash Hughes)</li>
+<li>Bonne gestion des mots de passe UTF-8 (merci à Ash Hughes)</li>
+<li>Première version avec de nouvelles langues (merci aux contributeurs sur Transifex)</li>
+<li>Correctif et amélioration du partage de clefs par codes QR</li>
+<li>Vérification de la signature des paquets pour l'API</li>
</ul>
<h2>2.1.1</h2>
<ul>
@@ -79,65 +93,65 @@ Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Pa
</ul>
<h2>2.1</h2>
<ul>
-<li>beaucoup de bogues corrigés</li>
-<li>nouvelle API pour les développeurs</li>
+<li>Beaucoup de bogues corrigés</li>
+<li>Nouvelle API pour les développeurs</li>
<li>Correctif du blogue PRNG par Google</li>
</ul>
<h2>2.0</h2>
<ul>
-<li>conception complètement repensée</li>
-<li>partage de clefs publiques par codes QR, faisceau NFC</li>
-<li>signer les clefs</li>
-<li>téléverser les clefs vers le serveur</li>
-<li>corrige les problèmes d'importation</li>
-<li>nouvelle API AIDL</li>
+<li>Conception complètement repensée</li>
+<li>Partage de clefs publiques par codes QR, faisceau NFC</li>
+<li>Signer les clefs</li>
+<li>Téléverser les clefs vers le serveur</li>
+<li>Corrige des problèmes d'importation</li>
+<li>Nouvelle API AIDL</li>
</ul>
<h2>1.0.8</h2>
<ul>
-<li>prise en charge de base du serveur de clef</li>
-<li>app2sd</li>
-<li>plus de choix pour le cache de phrase de passe : 1, 2, 4, 8 heures</li>
-<li>traductions : norvégien (merci Sander Danielsen), chinois (merci Zhang Fredrick)</li>
-<li>correctifs de bogues</li>
-<li>optimisations</li>
+<li>Prise en charge de base du serveur de clefs</li>
+<li>App2sd</li>
+<li>Plus de choix pour le cache des phrases de passe : 1, 2, 4, 8 heures</li>
+<li>Traductions : norvégien (merci Sander Danielsen), chinois (merci Zhang Fredrick)</li>
+<li>Correctifs de bogues</li>
+<li>Optimisations</li>
</ul>
<h2>1.0.7</h2>
<ul>
-<li>problème corrigé avec la vérification de la signature des textes se terminant par un retour à la ligne</li>
-<li>plus de choix pour la durée de vie de la phrase de passe : (20, 40, 60 min)</li>
+<li>Problème corrigé avec la vérification de la signature des textes se terminant par un retour à la ligne</li>
+<li>Plus de choix pour la durée de vie de la phrase de passe : (20, 40, 60 min)</li>
</ul>
<h2>1.0.6</h2>
<ul>
-<li>correction de l'ajout de compte sur Froyo</li>
-<li>suppression sécurisée de fichiers</li>
-<li>option de suppression du fichier de clef après l'importation</li>
-<li>chiffrement/déchiffrement de flux (galerie, etc.)</li>
-<li>nouvelles options (langue, forcer les signatures v3)</li>
-<li>changements dans l'interface</li>
-<li>correctifs de bogues</li>
+<li>Correctif - plantage lors de l'ajout de compte sur Froyo</li>
+<li>Suppression sécurisée de fichiers</li>
+<li>Option de suppression du fichier de clef après l'importation</li>
+<li>Chiffrement/déchiffrement de flux (galerie, etc.)</li>
+<li>Nouvelles options (langue, forcer les signatures v3)</li>
+<li>Changements dans l'interface</li>
+<li>Correctifs de bogues</li>
</ul>
<h2>1.0.5</h2>
<ul>
<li>Traduction allemande et italienne</li>
-<li>paquet beaucoup plus petit grâce à des sources BC réduites</li>
-<li>nouvelle interface utilisateur pour les paramètres</li>
-<li>ajustement de la mise en page pour les localisations</li>
-<li>correctif d'un bogue de signature</li>
+<li>Paquet beaucoup plus petit grâce à des sources BC réduites</li>
+<li>Nouvelle IUG pour les préférences</li>
+<li>Ajustement de la mise en page pour les localisations</li>
+<li>Correctif de bogue de signature</li>
</ul>
<h2>1.0.4</h2>
<ul>
-<li>correction d'un autre plantage causé par quelque bogue SDK avec le constructeur de requêtes</li>
+<li>Correction d'un autre plantage causé par quelque bogue SDK avec le constructeur de requêtes</li>
</ul>
<h2>1.0.3</h2>
<ul>
-<li>corrections de plantages durant le chiffrement/la signature et aussi peut-être l'exportation de clef</li>
+<li>Corrections de plantages durant le chiffrement/la signature et possiblement l'exportation de clefs</li>
</ul>
<h2>1.0.2</h2>
<ul>
-<li>listes de clefs filtrables</li>
-<li>présélection plus intelligente des clefs de chiffrement</li>
-<li>nouvelle gestion des intentions pour VIEW et SEND, permet le chiffrement/déchiffrement des fichiers depuis les gestionnaires de fichiers</li>
-<li>correctifs et fonctions additionnelles (présélection des clefs) pour K-9-Mail, nouvelle version bêta disponible.</li>
+<li>Listes de clefs filtrables</li>
+<li>Présélection plus intelligente des clefs de chiffrement</li>
+<li>Nouvelle gestion des intentions pour VIEW et SEND, permet le chiffrement/déchiffrement des fichiers depuis les gestionnaires de fichiers</li>
+<li>Correctifs et fonctions additionnelles (présélection des clefs) pour K-9-Mail, nouvelle version bêta disponible</li>
</ul>
<h2>1.0.1</h2>
<ul>
@@ -146,11 +160,11 @@ Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Pa
<h2>1.0.0</h2>
<ul>
<li>Intégration à K-9 Mail, APG prenant en charge la version bêta de K-9 Mail</li>
-<li>prise en charge de plus de gestionnaires de fichiers (incluant ASTRO)</li>
+<li>Prise en charge de plus de gestionnaires de fichiers (incluant ASTRO)</li>
<li>Traduction slovène</li>
-<li>nouvelle base de données, bien plus rapide, utilisation de la mémoire moindre</li>
-<li>intentions définies et fournisseur de contenu pour d'autres applis</li>
-<li>correctifs de bogues</li>
+<li>Nouvelle base de données, bien plus rapide, utilisation de la mémoire moindre</li>
+<li>Intentions définies et fournisseur de contenu pour d'autres applis</li>
+<li>Correctifs de bogues</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-it/help_about.html b/OpenKeychain/src/main/res/raw-it/help_about.html
index 4c8c0af07..e26c8e246 100644
--- a/OpenKeychain/src/main/res/raw-it/help_about.html
+++ b/OpenKeychain/src/main/res/raw-it/help_about.html
@@ -5,27 +5,27 @@
<p><a href="http://www.openkeychain.org">OpenKeychain</a> un implementazione OpenPGP per Android.</p>
<p>Licenza: GPLv3+</p>
-<h2>Sviluppatori OpenKeychain</h2>
+<h2>Developers</h2>
<ul>
-<li>Dominik Schürmann (Capo Sviluppatore)</li>
-<li>Ash Hughes (Patch crittografia)</li>
+<li>Dominik Schürmann (Maintainer)</li>
+<li>Art O Cathain</li>
+<li>Ash Hughes</li>
<li>Brian C. Barnes</li>
-<li>Bahtiar 'kalkin' Gadimov (Interfaccia Utente)</li>
+<li>Bahtiar 'kalkin' Gadimov</li>
+<li>Daniel Albert</li>
<li>Daniel Hammann</li>
<li>Daniel Haß</li>
<li>Greg Witczak</li>
+<li>'mar-v-in'</li>
+<li>Markus Doits</li>
<li>Miroojin Bakshi</li>
<li>Nikhil Peter Raj</li>
<li>Paul Sarbinowski</li>
+<li>'Senecaso'</li>
<li>Sreeram Boyapati</li>
-<li>Vincent Breitmoser</li>
+<li>Thialfihar (APG 1.x)</li>
<li>Tim Bray</li>
-</ul>
-<h2>Sviluppatori APG 1.x</h2>
-<ul>
-<li>Thialfihar (Capo Sviluppatore)</li>
-<li>'Senecaso' (QRCode, firma chiavi, caricamento chiavi)</li>
-<li>Markus Doits</li>
+<li>Vincent Breitmoser</li>
</ul>
<h2>Librerie</h2>
<ul>
@@ -34,17 +34,21 @@
<li>
<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (Licenza Apache v2)</li>
<li>
-<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Licenza Apache v2)</li>
+<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/Bearded-Hen/Android-Bootstrap">Android-Bootstrap</a> (Licenza MIT)</li>
+<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Licenza Apache v2)</li>
<li>
<a href="http://code.google.com/p/zxing/">ZXing</a> (Licenza Apache v2)</li>
<li>
<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (Licenza MIT X11)</li>
<li>
<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Licenza Apache v2)</li>
-<li>
-<a href="https://github.com/johnkil/Android-AppMsg">Android AppMsg Library</a> (Licenza Apache v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-it/help_changelog.html b/OpenKeychain/src/main/res/raw-it/help_changelog.html
index ee6a56e15..6b39c43c0 100644
--- a/OpenKeychain/src/main/res/raw-it/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw-it/help_changelog.html
@@ -1,6 +1,20 @@
<html>
<head></head>
<body>
+<h2>2.8</h2>
+<ul>
+<li>So many bugs have been fixed in this release that we focus on the main new features</li>
+<li>Key edit: awesome new design, key revocation</li>
+<li>Key import: awesome new design, secure keyserver connections via hkps, keyserver resolving via DNS SRV records</li>
+<li>New first time screen</li>
+<li>New create key screen: autocompletion of name and email based on your personal Android accounts</li>
+<li>File encryption: awesome new design, support for encrypting multiple files</li>
+<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>
+</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>
+
<h2>2.7</h2>
<ul>
<li>Porpora! (Dominik, Vincent)</li>
@@ -11,21 +25,21 @@
</ul>
<h2>2.6.1</h2>
<ul>
-<li>alcune correzioni per i bug di regressione</li>
+<li>Some fixes for regression bugs</li>
</ul>
<h2>2.6</h2>
<ul>
-<li>certificazioni chiave (grazie a Vincent Breitmoser)</li>
-<li>supporto per chiavi segrete parziali GnuPG (grazie a Vincent Breitmoser)</li>
-<li>nuovo design per la verifica della firma</li>
-<li>lunghezza chiave personalizzata (grazie a Greg Witczak)</li>
-<li>fix funzionalità di condivisione da altre app</li>
+<li>Key certifications (thanks to Vincent Breitmoser)</li>
+<li>Support for GnuPG partial secret keys (thanks to Vincent Breitmoser)</li>
+<li>New design for signature verification</li>
+<li>Custom key length (thanks to Greg Witczak)</li>
+<li>Fix share-functionality from other apps</li>
</ul>
<h2>2.5</h2>
<ul>
-<li>Corretta la decodifica di messaggi PGP / file simmetrici</li>
-<li>Refactoring della schermata di modifica chiave (grazie a Ash Hughes)</li>
-<li>nuovo design moderno per le schermate di codifica / decodifica</li>
+<li>Fix decryption of symmetric pgp messages/files</li>
+<li>Refactored edit key screen (thanks to Ash Hughes)</li>
+<li>New modern design for encrypt/decrypt screens</li>
<li>OpenPGP API versione 3 (api account multipli, correzioni interne, ricerca chiavi)</li>
</ul>
<h2>2.4</h2>
@@ -33,45 +47,45 @@
Oltre a numerose piccole correzioni, un notevole numero di patch sono state fatte dalle seguenti persone (in ordine alfabetico):
Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Paolo Sarbinowski, Sreeram Boyapati, Vincent Breitmoser.</p>
<ul>
-<li>nuova lista chiave unificata</li>
-<li>impronta chiave colorata</li>
-<li>supporto per porte</li>
-<li>disattiva la possibilità di generare chiavi deboli</li>
-<li>molto più lavoro interno sulle API</li>
-<li>certificazione ID utente</li>
-<li>interrogazione keyserver basate su output leggibile a livello macchina</li>
-<li>blocco del menu di navigazione sui tablet</li>
-<li>suggerimenti per e-mail sulla creazione di chiavi</li>
-<li>ricerca nelle liste di chiavi pubbliche</li>
-<li>e molti altri miglioramenti e correzioni ...</li>
+<li>New unified key list</li>
+<li>Colorized key fingerprint</li>
+<li>Support for keyserver ports</li>
+<li>Deactivate possibility to generate weak keys</li>
+<li>Much more internal work on the API</li>
+<li>Certify user ids</li>
+<li>Keyserver query based on machine-readable output</li>
+<li>Lock navigation drawer on tablets</li>
+<li>Suggestions for emails on creation of keys</li>
+<li>Search in public key lists</li>
+<li>And much more improvements and fixes…</li>
</ul>
<h2>2.3.1</h2>
<ul>
-<li>correzione del crash quando si aggiorna da versioni precedenti</li>
+<li>Hotfix for crash when upgrading from old versions</li>
</ul>
<h2>2.3</h2>
<ul>
-<li>rimossa esportazione non necessaria delle chiavi pubbliche quando si esportano le chiavi private (grazie a Ash Hughes)</li>
-<li>corretto impostazione data di scadenza delle chiavi (grazie a Ash Hughes)</li>
-<li>altre correzioni interne quando si modificano le chiavi (grazie a Ash Hughes)</li>
-<li>interrogazione server delle chiavi direttamente dalla schermata di importazione</li>
-<li>corretto layout e dialog style su Android 2.2-3.0</li>
-<li>corretto crash su chiavi con id utente vuoto</li>
-<li>corretto crash e liste vuote quando si torna dalla schermata di firma</li>
+<li>Remove unnecessary export of public keys when exporting secret key (thanks to Ash Hughes)</li>
+<li>Fix setting expiry dates on keys (thanks to Ash Hughes)</li>
+<li>More internal fixes when editing keys (thanks to Ash Hughes)</li>
+<li>Querying keyservers directly from the import screen</li>
+<li>Fix layout and dialog style on Android 2.2-3.0</li>
+<li>Fix crash on keys with empty user ids</li>
+<li>Fix crash and empty lists when coming back from signing screen</li>
<li>Bouncy Castle (libreria crittografica) aggiornata da 1.47 a 1.50 e compilata da sorgente</li>
-<li>corretto upload delle chiavi dalla schermata di firma</li>
+<li>Fix upload of key from signing screen</li>
</ul>
<h2>2.2</h2>
<ul>
-<li>nuovo design con drawer di navigazione</li>
-<li>nuovo design per la lista chiavi pubbliche</li>
-<li>nuova visuale chiavi pubbliche</li>
-<li>correzione bug per importazione chiavi</li>
-<li>Chiave certificazione incrociata (grazie a Ash Hughes)</li>
-<li>password UTF-8 gestite correttamente (grazie a Ash Hughes)</li>
-<li>Prima versione con nuove lingue (grazie ai contributori su Transifex)</li>
-<li>condivisione di chiavi via Codici QR corretta e migliorata</li>
-<li>Verifica firma pacchetto per API</li>
+<li>New design with navigation drawer</li>
+<li>New public key list design</li>
+<li>New public key view</li>
+<li>Bug fixes for importing of keys</li>
+<li>Key cross-certification (thanks to Ash Hughes)</li>
+<li>Handle UTF-8 passwords properly (thanks to Ash Hughes)</li>
+<li>First version with new languages (thanks to the contributors on Transifex)</li>
+<li>Sharing of keys via QR Codes fixed and improved</li>
+<li>Package signature verification for API</li>
</ul>
<h2>2.1.1</h2>
<ul>
@@ -79,65 +93,65 @@ Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Pa
</ul>
<h2>2.1</h2>
<ul>
-<li>molte correzioni di bug</li>
-<li>nuove API per sviluppatori</li>
+<li>Lots of bug fixes</li>
+<li>New API for developers</li>
<li>PRNG bug fix by Google</li>
</ul>
<h2>2.0</h2>
<ul>
-<li>completo restyle</li>
-<li>condivisione chiavi pubbliche via codici qr, nfc beam</li>
-<li>firma chiavi</li>
-<li>Carica chiavi sul server</li>
-<li>corrette caratteristiche di importazione</li>
-<li>nuova AIDL API</li>
+<li>Complete redesign</li>
+<li>Share public keys via qr codes, nfc beam</li>
+<li>Sign keys</li>
+<li>Upload keys to server</li>
+<li>Fixes import issues</li>
+<li>New AIDL API</li>
</ul>
<h2>1.0.8</h2>
<ul>
-<li>supporto base per server delle chiavi</li>
-<li>app2sd</li>
-<li>Aggiunte opzioni per la cache della frase di accesso: 1, 2, 4, 8 ore</li>
-<li>Traduzioni: Norvegese (grazie, Sander Danielsen), Cinese (grazie, Zhang Fredrick)</li>
-<li>correzione bug</li>
-<li>ottimizzazioni</li>
+<li>Basic keyserver support</li>
+<li>App2sd</li>
+<li>More choices for pass phrase cache: 1, 2, 4, 8, hours</li>
+<li>Translations: Norwegian (thanks, Sander Danielsen), Chinese (thanks, Zhang Fredrick)</li>
+<li>Bugfixes</li>
+<li>Optimizations</li>
</ul>
<h2>1.0.7</h2>
<ul>
-<li>corretto problema con la verifica firma di testi con capo finale</li>
-<li>maggiori opzioni per il tempo di mantenimento della cache della frase di accesso (20, 40, 60 minuti)</li>
+<li>Fixed problem with signature verification of texts with trailing newline</li>
+<li>More options for pass phrase cache time to live (20, 40, 60 mins)</li>
</ul>
<h2>1.0.6</h2>
<ul>
-<li>crash della aggiunta degli account risolto su Froyo</li>
-<li>Cancellazione sicura dei file</li>
-<li>opzione per cancellare file delle chiavi dopo l'importazione</li>
-<li>flusso codifica/decodifica (galleria, ecc.)</li>
-<li>nuove opzioni (lingua, forza firme v3)</li>
-<li>cambiamenti interfaccia</li>
-<li>correzione bug</li>
+<li>Account adding crash on Froyo fixed</li>
+<li>Secure file deletion</li>
+<li>Option to delete key file after import</li>
+<li>Stream encryption/decryption (gallery, etc.)</li>
+<li>New options (language, force v3 signatures)</li>
+<li>Interface changes</li>
+<li>Bugfixes</li>
</ul>
<h2>1.0.5</h2>
<ul>
<li>Traduzione Italiana e Tedesca</li>
-<li>dimensioni pacchetto ridotte, a causa della riduzione dei sorgenti BC</li>
-<li>Nuove preferenze GUI</li>
-<li>Regolazione layout per la localizzazione</li>
-<li>correzione bug firma</li>
+<li>Much smaller package, due to reduced BC sources</li>
+<li>New preferences GUI</li>
+<li>Layout adjustment for localization</li>
+<li>Signature bugfix</li>
</ul>
<h2>1.0.4</h2>
<ul>
-<li>corretto altro crash causato da alcuni bug SDK con query builder</li>
+<li>Fixed another crash caused by some SDK bug with query builder</li>
</ul>
<h2>1.0.3</h2>
<ul>
-<li>corretto crash durante codifica/firma e possibilita' di esportare chiave</li>
+<li>Fixed crashes during encryption/signing and possibly key export</li>
</ul>
<h2>1.0.2</h2>
<ul>
-<li>liste chiavi filtrabili</li>
-<li>preselezione di chiavi di codifica intelligente</li>
-<li>nuovo gestore intent per VIEW e SEND, permette la codifica/decodifica file all'infuori di file manager</li>
-<li>caratteristiche corrette e aggiunte (preselezione chiavi) per K-9 Mail. nuova build beta disponibile</li>
+<li>Filterable key lists</li>
+<li>Smarter pre-selection of encryption keys</li>
+<li>New Intent handling for VIEW and SEND, allows files to be encrypted/decrypted out of file managers</li>
+<li>Fixes and additional features (key preselection) for K-9 Mail, new beta build available</li>
</ul>
<h2>1.0.1</h2>
<ul>
@@ -146,11 +160,11 @@ Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Pa
<h2>1.0.0</h2>
<ul>
<li>integrazione K-9 Mail, APG supporto beta build di K-9 Mail</li>
-<li>supporto per altri file manager (incluso ASTRO)</li>
+<li>Support of more file managers (including ASTRO)</li>
<li>traduzione Slovena</li>
-<li>Nuovo database, piu' veloce, utilizzo memoria ridotto</li>
-<li>Definiti Intent e ContentProvider per le altre app</li>
-<li>correzione bug</li>
+<li>New database, much faster, less memory usage</li>
+<li>Defined Intents and content provider for other apps</li>
+<li>Bugfixes</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-ja/help_about.html b/OpenKeychain/src/main/res/raw-ja/help_about.html
index a4670e103..834d9f6de 100644
--- a/OpenKeychain/src/main/res/raw-ja/help_about.html
+++ b/OpenKeychain/src/main/res/raw-ja/help_about.html
@@ -5,27 +5,27 @@
<p><a href="http://www.openkeychain.org">OpenKeychain</a> は Android における OpenPGP 実装です。</p>
<p>ライセンス: GPLv3以降</p>
-<h2>OpenKeychain開発者</h2>
+<h2>開発者</h2>
<ul>
-<li>Dominik Schürmann (主任開発者)</li>
-<li>Ash Hughes (暗号関係パッチ提供)</li>
+<li>Dominik Schürmann (メンテナ)</li>
+<li>Art O Cathain</li>
+<li>Ash Hughes</li>
<li>Brian C. Barnes</li>
-<li>Bahtiar 'kalkin' Gadimov (UI)</li>
+<li>Bahtiar 'kalkin' Gadimov</li>
+<li>Daniel Albert</li>
<li>Daniel Hammann</li>
<li>Daniel Haß</li>
<li>Greg Witczak</li>
+<li>'mar-v-in'</li>
+<li>Markus Doits</li>
<li>Miroojin Bakshi</li>
<li>Nikhil Peter Raj</li>
<li>Paul Sarbinowski</li>
+<li>'Senecaso'</li>
<li>Sreeram Boyapati</li>
-<li>Vincent Breitmoser</li>
+<li>Thialfihar (APG 1.x)</li>
<li>Tim Bray</li>
-</ul>
-<h2>APG 1.xの開発者達</h2>
-<ul>
-<li>Thialfihar (主任開発者)</li>
-<li>'Senecaso' (QRコード, 鍵署名, 鍵アップロード関係)</li>
-<li>Markus Doits</li>
+<li>Vincent Breitmoser</li>
</ul>
<h2>ライブラリ</h2>
<ul>
@@ -34,17 +34,21 @@
<li>
<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache License v2)</li>
+<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/Bearded-Hen/Android-Bootstrap">Android-Bootstrap</a> (MIT License)</li>
+<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache License v2)</li>
<li>
<a href="http://code.google.com/p/zxing/">ZXing</a> (Apache License v2)</li>
<li>
<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
<li>
<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Apache License v2)</li>
-<li>
-<a href="https://github.com/johnkil/Android-AppMsg">Android AppMsg Library</a> (Apache License v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-ja/help_changelog.html b/OpenKeychain/src/main/res/raw-ja/help_changelog.html
index 0bde8d000..21f0fa230 100644
--- a/OpenKeychain/src/main/res/raw-ja/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw-ja/help_changelog.html
@@ -1,6 +1,20 @@
<html>
<head></head>
<body>
+<h2>2.8</h2>
+<ul>
+<li>そして主要な新しい機能を主眼としたこのリリースでたくさんのバグが修正されました</li>
+<li>鍵編集: 新しいすごいデザイン、鍵の破棄</li>
+<li>鍵インポート: 新しいすごいデザイン、hkps経由での鍵サーバとの安全な接続、そしてDNS SRVレコードによる鍵サーバの解決</li>
+<li>新しい初回表示</li>
+<li>新しい鍵生成画面: Androidのあなたの個人アカウントをベースとした名前とメールの自動補完</li>
+<li>ファイル暗号化: 新しいすごいデザイン、複数ファイルの暗号化をサポートする</li>
+<li>鍵のステータス表示の新しいアイコン(Brennan Novak提供)</li>
+<li>重要なバグ修正: 巨大な鍵コレクションをファイルからインポートするのが可能になりました</li>
+<li>キャッシュしたパスフレーズの通知表示</li>
+</ul>
+<p> Vincent Breitmoser (GSoC 2014), mar-v-in (GSoC 2014), Daniel Albert, Art O Cathain, Daniel Haß, Tim Bray, Thialfiharの働きなくしてはこのリリースはありませんでした</p>
+
<h2>2.7</h2>
<ul>
<li>Purple! (Dominik, Vincent)</li>
@@ -15,16 +29,16 @@
</ul>
<h2>2.6</h2>
<ul>
-<li>鍵証明 (thanks to Vincent Breitmoser)</li>
-<li>GnuPGの部分秘密鍵のサポート (thanks to Vincent Breitmoser)</li>
+<li>鍵証明 (ありがとうVincent Breitmoser)</li>
+<li>GnuPGの部分秘密鍵のサポート (ありがとうVincent Breitmoser)</li>
<li>新しいデザインでの署名の検証</li>
-<li>カスタムの鍵長 (thanks to Greg Witczak)</li>
+<li>カスタムの鍵長 (ありがとうGreg Witczak)</li>
<li>他のアプリからの共有ファンクションの修正</li>
</ul>
<h2>2.5</h2>
<ul>
<li>対称暗号化PGPメッセージ/ファイルの復号化を修正</li>
-<li>鍵編集画面のリファクタ (thanks to Ash Hughes)</li>
+<li>鍵編集画面のリファクタ (ありがとうAsh Hughes)</li>
<li>暗号化/復号化画面を新しいモダンなデザインに</li>
<li>OpenPGP API バージョン 3 (複数APIアカウント, 内部修正,鍵検索)</li>
</ul>
@@ -33,15 +47,15 @@
また、以下の人達(アルファベット順)の作ってくれたいくつもののさなパッチや相当数のパッチにも:
Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Paul Sarbinowski, Sreeram Boyapati, Vincent Breitmoser.</p>
<ul>
-<li>新しい統合鍵リスト</li>
+<li>新しい統合キーリスト</li>
<li>鍵指紋のカラー化</li>
<li>鍵サーバのポート設定のサポート</li>
-<li>弱い鍵の生成が可能だったのを無効化</li>
+<li>弱い鍵の生成をしてしまうのを無効化</li>
<li>さらなるAPIでの内部動作</li>
-<li>ユーザIDの証明</li>
+<li>ユーザーIDの証明</li>
<li>鍵サーバへの要求をマシンリーダブル出力を基盤にした</li>
<li>タブレットでのナビゲーションドロワーのロック</li>
-<li>鍵の生成についてメールでのサジェスト</li>
+<li>鍵の生成でのメールについての提案</li>
<li>公開鍵リスト内での検索</li>
<li>そしてさらなる改善と修正...</li>
</ul>
@@ -51,9 +65,9 @@ Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Pa
</ul>
<h2>2.3</h2>
<ul>
-<li>秘密鍵のエクスポート時における必要でない公開鍵のエクスポートの削除 (thanks to Ash Hughes)</li>
-<li>鍵の期限日時設定の修正 (thanks to Ash Hughes)</li>
-<li>鍵編集時のさらなる内部修正 (thanks to Ash Hughes)</li>
+<li>秘密鍵のエクスポート時における必要でない公開鍵のエクスポートの削除 (ありがとうAsh Hughes)</li>
+<li>鍵の期限日時設定の修正 (ありがとうAsh Hughes)</li>
+<li>鍵編集時のさらなる内部修正 (ありがとうAsh Hughes)</li>
<li>インポート画面から直接鍵サーバへ要求するようにした</li>
<li>Android 2.2から3.0でのレイアウトとダイアログスタイルの修正</li>
<li>空ユーザIDの鍵でのクラッシュ修正</li>
@@ -63,13 +77,13 @@ Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Pa
</ul>
<h2>2.2</h2>
<ul>
-<li>ナビゲーションドロワーの新しいデザイン</li>
+<li>ナビゲーションドロワー付きの新しいデザイン</li>
<li>新しい公開鍵リストデザイン</li>
<li>新しい公開鍵ビュー</li>
<li>鍵のインポート時のバグ修正</li>
-<li>鍵のクロス証明 (thanks to Ash Hughes)</li>
-<li>適切な UTF-8 パスワード処理 (thanks to Ash Hughes)</li>
-<li>新しい言語での最初のバージョン (thanks to the contributors on Transifex)</li>
+<li>鍵のクロス証明 (ありがとうAsh Hughes)</li>
+<li>適切な UTF-8 パスワード処理 (ありがとうAsh Hughes)</li>
+<li>新しい言語での最初のバージョン (ありがとうTransifexの貢献者達)</li>
<li>QRコードによる鍵共有の修正と改善</li>
<li>APIでのパッケージ署名検証</li>
</ul>
@@ -97,7 +111,7 @@ Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Pa
<li>鍵サーバの基本サポート</li>
<li>App2SD</li>
<li>パスフレーズのキャッシュ時間について1,2,4,8時間の選択肢追加</li>
-<li>翻訳: ノルウェー語 (thanks, Sander Danielsen), 中国語 (thanks, Zhang Fredrick) 追加</li>
+<li>翻訳: ノルウェー語 (ありがとう、Sander Danielsen)、中国語 (ありがとう、Zhang Fredrick) 追加</li>
<li>バグ修正</li>
<li>最適化</li>
</ul>
diff --git a/OpenKeychain/src/main/res/raw-ko/help_about.html b/OpenKeychain/src/main/res/raw-ko/help_about.html
deleted file mode 100644
index ab3c19375..000000000
--- a/OpenKeychain/src/main/res/raw-ko/help_about.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<html>
-<head></head>
-<body>
-<p><a href="http://www.openkeychain.org">http://www.openkeychain.org</a></p>
-<p><a href="http://www.openkeychain.org">OpenKeychain</a> is an OpenPGP implementation for Android.</p>
-<p>License: GPLv3+</p>
-
-<h2>Developers OpenKeychain</h2>
-<ul>
-<li>Dominik Schürmann (Lead developer)</li>
-<li>Ash Hughes (crypto patches)</li>
-<li>Brian C. Barnes</li>
-<li>Bahtiar 'kalkin' Gadimov (UI)</li>
-<li>Daniel Hammann</li>
-<li>Daniel Haß</li>
-<li>Greg Witczak</li>
-<li>Miroojin Bakshi</li>
-<li>Nikhil Peter Raj</li>
-<li>Paul Sarbinowski</li>
-<li>Sreeram Boyapati</li>
-<li>Vincent Breitmoser</li>
-<li>Tim Bray</li>
-</ul>
-<h2>Developers APG 1.x</h2>
-<ul>
-<li>Thialfihar (Lead developer)</li>
-<li>'Senecaso' (QRCode, sign key, upload key)</li>
-<li>Markus Doits</li>
-</ul>
-<h2>Libraries</h2>
-<ul>
-<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v4</a> (Apache License v2)</li>
-<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (Apache License v2)</li>
-<li>
-<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache License v2)</li>
-<li>
-<a href="https://github.com/Bearded-Hen/Android-Bootstrap">Android-Bootstrap</a> (MIT License)</li>
-<li>
-<a href="http://code.google.com/p/zxing/">ZXing</a> (Apache License v2)</li>
-<li>
-<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
-<li>
-<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Apache License v2)</li>
-<li>
-<a href="https://github.com/johnkil/Android-AppMsg">Android AppMsg Library</a> (Apache License v2)</li>
-</ul>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-ko/help_changelog.html b/OpenKeychain/src/main/res/raw-ko/help_changelog.html
deleted file mode 100644
index ebada67f9..000000000
--- a/OpenKeychain/src/main/res/raw-ko/help_changelog.html
+++ /dev/null
@@ -1,156 +0,0 @@
-<html>
-<head></head>
-<body>
-<h2>2.7</h2>
-<ul>
-<li>Purple! (Dominik, Vincent)</li>
-<li>New key view design (Dominik, Vincent)</li>
-<li>New flat Android buttons (Dominik, Vincent)</li>
-<li>API fixes (Dominik)</li>
-<li>Keybase.io import (Tim Bray)</li>
-</ul>
-<h2>2.6.1</h2>
-<ul>
-<li>some fixes for regression bugs</li>
-</ul>
-<h2>2.6</h2>
-<ul>
-<li>key certifications (thanks to Vincent Breitmoser)</li>
-<li>support for GnuPG partial secret keys (thanks to Vincent Breitmoser)</li>
-<li>new design for signature verification</li>
-<li>custom key length (thanks to Greg Witczak)</li>
-<li>fix share-functionality from other apps</li>
-</ul>
-<h2>2.5</h2>
-<ul>
-<li>fix decryption of symmetric pgp messages/files</li>
-<li>refactored edit key screen (thanks to Ash Hughes)</li>
-<li>new modern design for encrypt/decrypt screens</li>
-<li>OpenPGP API version 3 (multiple api accounts, internal fixes, key lookup)</li>
-</ul>
-<h2>2.4</h2>
-<p>Thanks to all applicants of Google Summer of Code 2014 who made this release feature rich and bug free!
-Besides several small patches, a notable number of patches are made by the following people (in alphabetical order):
-Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Paul Sarbinowski, Sreeram Boyapati, Vincent Breitmoser.</p>
-<ul>
-<li>new unified key list</li>
-<li>colorized key fingerprint</li>
-<li>support for keyserver ports</li>
-<li>deactivate possibility to generate weak keys</li>
-<li>much more internal work on the API</li>
-<li>certify user ids</li>
-<li>keyserver query based on machine-readable output</li>
-<li>lock navigation drawer on tablets</li>
-<li>suggestions for emails on creation of keys</li>
-<li>search in public key lists</li>
-<li>and much more improvements and fixes…</li>
-</ul>
-<h2>2.3.1</h2>
-<ul>
-<li>hotfix for crash when upgrading from old versions</li>
-</ul>
-<h2>2.3</h2>
-<ul>
-<li>remove unnecessary export of public keys when exporting secret key (thanks to Ash Hughes)</li>
-<li>fix setting expiry dates on keys (thanks to Ash Hughes)</li>
-<li>more internal fixes when editing keys (thanks to Ash Hughes)</li>
-<li>querying keyservers directly from the import screen</li>
-<li>fix layout and dialog style on Android 2.2-3.0</li>
-<li>fix crash on keys with empty user ids</li>
-<li>fix crash and empty lists when coming back from signing screen</li>
-<li>Bouncy Castle (cryptography library) updated from 1.47 to 1.50 and build from source</li>
-<li>fix upload of key from signing screen</li>
-</ul>
-<h2>2.2</h2>
-<ul>
-<li>new design with navigation drawer</li>
-<li>new public key list design</li>
-<li>new public key view</li>
-<li>bug fixes for importing of keys</li>
-<li>key cross-certification (thanks to Ash Hughes)</li>
-<li>handle UTF-8 passwords properly (thanks to Ash Hughes)</li>
-<li>first version with new languages (thanks to the contributors on Transifex)</li>
-<li>sharing of keys via QR Codes fixed and improved</li>
-<li>package signature verification for API</li>
-</ul>
-<h2>2.1.1</h2>
-<ul>
-<li>API Updates, preparation for K-9 Mail integration</li>
-</ul>
-<h2>2.1</h2>
-<ul>
-<li>lots of bug fixes</li>
-<li>new API for developers</li>
-<li>PRNG bug fix by Google</li>
-</ul>
-<h2>2.0</h2>
-<ul>
-<li>complete redesign</li>
-<li>share public keys via qr codes, nfc beam</li>
-<li>sign keys</li>
-<li>upload keys to server</li>
-<li>fixes import issues</li>
-<li>new AIDL API</li>
-</ul>
-<h2>1.0.8</h2>
-<ul>
-<li>basic keyserver support</li>
-<li>app2sd</li>
-<li>more choices for pass phrase cache: 1, 2, 4, 8, hours</li>
-<li>translations: Norwegian (thanks, Sander Danielsen), Chinese (thanks, Zhang Fredrick)</li>
-<li>bugfixes</li>
-<li>optimizations</li>
-</ul>
-<h2>1.0.7</h2>
-<ul>
-<li>fixed problem with signature verification of texts with trailing newline</li>
-<li>more options for pass phrase cache time to live (20, 40, 60 mins)</li>
-</ul>
-<h2>1.0.6</h2>
-<ul>
-<li>account adding crash on Froyo fixed</li>
-<li>secure file deletion</li>
-<li>option to delete key file after import</li>
-<li>stream encryption/decryption (gallery, etc.)</li>
-<li>new options (language, force v3 signatures)</li>
-<li>interface changes</li>
-<li>bugfixes</li>
-</ul>
-<h2>1.0.5</h2>
-<ul>
-<li>German and Italian translation</li>
-<li>much smaller package, due to reduced BC sources</li>
-<li>new preferences GUI</li>
-<li>layout adjustment for localization</li>
-<li>signature bugfix</li>
-</ul>
-<h2>1.0.4</h2>
-<ul>
-<li>fixed another crash caused by some SDK bug with query builder</li>
-</ul>
-<h2>1.0.3</h2>
-<ul>
-<li>fixed crashes during encryption/signing and possibly key export</li>
-</ul>
-<h2>1.0.2</h2>
-<ul>
-<li>filterable key lists</li>
-<li>smarter pre-selection of encryption keys</li>
-<li>new Intent handling for VIEW and SEND, allows files to be encrypted/decrypted out of file managers</li>
-<li>fixes and additional features (key preselection) for K-9 Mail, new beta build available</li>
-</ul>
-<h2>1.0.1</h2>
-<ul>
-<li>GMail account listing was broken in 1.0.0, fixed again</li>
-</ul>
-<h2>1.0.0</h2>
-<ul>
-<li>K-9 Mail integration, APG supporting beta build of K-9 Mail</li>
-<li>support of more file managers (including ASTRO)</li>
-<li>Slovenian translation</li>
-<li>new database, much faster, less memory usage</li>
-<li>defined Intents and content provider for other apps</li>
-<li>bugfixes</li>
-</ul>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-ko/help_nfc_beam.html b/OpenKeychain/src/main/res/raw-ko/help_nfc_beam.html
deleted file mode 100644
index 88492731c..000000000
--- a/OpenKeychain/src/main/res/raw-ko/help_nfc_beam.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<html>
-<head></head>
-<body>
-<h2>How to receive keys</h2>
-<ol>
-<li>Go to your partners contacts and open the contact you want to share.</li>
-<li>Hold the two devices back to back (they have to be almost touching) and you’ll feel a vibration.</li>
-<li>After it vibrates you’ll see the content on your partners device turn into a card-like object with Star Trek warp speed-looking animation in the background.</li>
-<li>Tap the card and the content will then load on the your device.</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-ko/help_start.html b/OpenKeychain/src/main/res/raw-ko/help_start.html
deleted file mode 100644
index 51a76c01e..000000000
--- a/OpenKeychain/src/main/res/raw-ko/help_start.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<html>
-<head></head>
-<body>
-<h2>Getting started</h2>
-<p>First you need a personal secret key. Create one via the option menus in "Keys" or import existing secret keys. Afterwards, you can download your friends' keys or exchange them via QR Codes or NFC.</p>
-
-<p>It is recommended that you install <a href="market://details?id=org.openintents.filemanager">OI File Manager</a> for enhanced file selection and <a href="market://details?id=com.google.zxing.client.android">Barcode Scanner</a> to scan generated QR Codes. Clicking on the links will open Google Play Store or F-Droid for installation.</p>
-
-<h2>Applications</h2>
-<p>Several applications support OpenKeychain to encrypt/sign your private communication:<br><img src="apps_k9"><br>K-9 Mail: OpenKeychain support available in current <a href="https://github.com/k9mail/k-9/releases/tag/4.904">alpha build</a>!<br><a href="market://details?id=eu.siacs.conversations"><img src="apps_conversations"><br>Conversations</a>: Jabber/XMPP client<br><a href="market://details?id=org.lf_net.pgpunlocker"><img src="apps_pgpauth"><br>PGPAuth</a>: App to send a PGP-signed request to a server to open or close something, e.g. a door</p>
-
-<h2>I found a bug in OpenKeychain!</h2>
-<p>Please report the bug using the <a href="https://github.com/openpgp-keychain/openpgp-keychain/issues">issue tracker of OpenKeychain</a>.</p>
-
-<h2>Contribute</h2>
-<p>If you want to help us developing OpenKeychain by contributing code <a href="https://github.com/openpgp-keychain/openpgp-keychain#contribute-code">follow our small guide on Github</a>.</p>
-
-<h2>Translations</h2>
-<p>Help translating OpenKeychain! Everybody can participate at <a href="https://www.transifex.com/projects/p/openpgp-keychain/">OpenKeychain on Transifex</a>.</p>
-
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-ko/help_wot.html b/OpenKeychain/src/main/res/raw-ko/help_wot.html
deleted file mode 100644
index 29790139b..000000000
--- a/OpenKeychain/src/main/res/raw-ko/help_wot.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<html>
-<head></head>
-<body>
-<h2>Web of Trust</h2>
-<p>The Web of Trust describes the part of PGP which deals with creation and bookkeeping of certifications. It provides mechanisms to help the user keep track of who a public key belongs to, and share this information with others; To ensure the privacy of encrypted communication, it is essential to know that the public key you encrypt to belongs to the person you think it does.</p>
-
-<h2>Support in OpenKeychain</h2>
-<p>There is only basic support for Web of Trust in OpenKeychain. This is a heavy work in progress and subject to changes in upcoming releases.</p>
-
-<h2>Trust Model</h2>
-<p>Trust evaluation is based on the simple assumption that all keys which have secret keys available are trusted. Public keys which contain at least one user id certified by a trusted key will be marked with a green dot in the key listings. It is not (yet) possible to specify trust levels for certificates of other known public keys.</p>
-
-<h2>Certifying keys</h2>
-<p>Support for key certification is available, and user ids can be certified individually. It is not yet possible to specify the level of trust or create local and other special types of certificates.</p>
-
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-ko/nfc_beam_share.html b/OpenKeychain/src/main/res/raw-ko/nfc_beam_share.html
deleted file mode 100644
index 083e055c7..000000000
--- a/OpenKeychain/src/main/res/raw-ko/nfc_beam_share.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head></head>
-<body>
-<ol>
-<li>Make sure that NFC is turned on in Settings &gt; More &gt; NFC and make sure that Android Beam is also on in the same section.</li>
-<li>Hold the two devices back to back (they have to be almost touching) and you'll feel a vibration.</li>
-<li>After it vibrates you'll see the content on your device turn into a card-like object with Star Trek warp speed-looking animation in the background.</li>
-<li>Tap the card and the content will then load on the other person’s device.</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-nl/help_about.html b/OpenKeychain/src/main/res/raw-nl/help_about.html
index 0ac14d919..1996bf267 100644
--- a/OpenKeychain/src/main/res/raw-nl/help_about.html
+++ b/OpenKeychain/src/main/res/raw-nl/help_about.html
@@ -5,27 +5,27 @@
<p><a href="http://www.openkeychain.org">OpenKeychain</a> is een OpenPGP implementatie voor Android.</p>
<p>Licentie: GPLv3+</p>
-<h2>Ontwikkelaars OpenKeychain</h2>
+<h2>Developers</h2>
<ul>
-<li>Dominik Schürmann (hoofdontwikkelaar)</li>
-<li>Ash Hughes (crypto patches)</li>
+<li>Dominik Schürmann (Maintainer)</li>
+<li>Art O Cathain</li>
+<li>Ash Hughes</li>
<li>Brian C. Barnes</li>
-<li>Bahtiar 'kalkin' Gadimov (UI)</li>
+<li>Bahtiar 'kalkin' Gadimov</li>
+<li>Daniel Albert</li>
<li>Daniel Hammann</li>
<li>Daniel Haß</li>
<li>Greg Witczak</li>
+<li>'mar-v-in'</li>
+<li>Markus Doits</li>
<li>Miroojin Bakshi</li>
<li>Nikhil Peter Raj</li>
<li>Paul Sarbinowski</li>
+<li>'Senecaso'</li>
<li>Sreeram Boyapati</li>
-<li>Vincent Breitmoser</li>
+<li>Thialfihar (APG 1.x)</li>
<li>Tim Bray</li>
-</ul>
-<h2>Ontwikkelaars APG 1.x</h2>
-<ul>
-<li>Thialfihar (Hoofdontwikkelaar)</li>
-<li>'Senecaso' (QRCode, signeersleutel, uploadsleutel)</li>
-<li>Markus Doits</li>
+<li>Vincent Breitmoser</li>
</ul>
<h2>Bibliotheken</h2>
<ul>
@@ -34,17 +34,21 @@
<li>
<a href="http://developer.android.com/tools/support-library/index.html">Android Support Bibliotheek v7 'appcompat'</a> (Apache Licentie v2)</li>
<li>
-<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache Licentie v2)</li>
+<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/Bearded-Hen/Android-Bootstrap">Android-Bootstrap</a> (MIT Licentie)</li>
+<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache Licentie v2)</li>
<li>
<a href="http://code.google.com/p/zxing/">ZXing</a> (Apache Licentie v2)</li>
<li>
<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 Licentie)</li>
<li>
<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Apache Licentie v2)</li>
-<li>
-<a href="https://github.com/johnkil/Android-AppMsg">Android AppMsg Library</a> (Apache Licentie v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-nl/help_changelog.html b/OpenKeychain/src/main/res/raw-nl/help_changelog.html
index 38da3d57c..3bc039642 100644
--- a/OpenKeychain/src/main/res/raw-nl/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw-nl/help_changelog.html
@@ -1,6 +1,20 @@
<html>
<head></head>
<body>
+<h2>2.8</h2>
+<ul>
+<li>So many bugs have been fixed in this release that we focus on the main new features</li>
+<li>Key edit: awesome new design, key revocation</li>
+<li>Key import: awesome new design, secure keyserver connections via hkps, keyserver resolving via DNS SRV records</li>
+<li>New first time screen</li>
+<li>New create key screen: autocompletion of name and email based on your personal Android accounts</li>
+<li>File encryption: awesome new design, support for encrypting multiple files</li>
+<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>
+</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>
+
<h2>2.7</h2>
<ul>
<li>Paars! (Dominik, Vincent)</li>
@@ -11,21 +25,21 @@
</ul>
<h2>2.6.1</h2>
<ul>
-<li>enige fixes voor regressie bugs</li>
+<li>Some fixes for regression bugs</li>
</ul>
<h2>2.6</h2>
<ul>
-<li>sleutel certificaties (dank aan Vincent Breitmoser)</li>
-<li>support voor GnuPG deel geheime sleutels (dank aan Vincent Breitmoser)</li>
-<li>nieuw design voor handtekeningsverificatie</li>
-<li>aangepaste sleutellengte (dank aan Greg Witczak)</li>
-<li>fix deel-functionaliteit van andere apps</li>
+<li>Key certifications (thanks to Vincent Breitmoser)</li>
+<li>Support for GnuPG partial secret keys (thanks to Vincent Breitmoser)</li>
+<li>New design for signature verification</li>
+<li>Custom key length (thanks to Greg Witczak)</li>
+<li>Fix share-functionality from other apps</li>
</ul>
<h2>2.5</h2>
<ul>
-<li>fix decodering van symmetrische pgp berichten/bestanden</li>
-<li>bewerk sleutel scherm opnieuw gedaan (dank aan Ash Hughes)</li>
-<li>nieuw modern design voor codeer/decodeer schermen</li>
+<li>Fix decryption of symmetric pgp messages/files</li>
+<li>Refactored edit key screen (thanks to Ash Hughes)</li>
+<li>New modern design for encrypt/decrypt screens</li>
<li>OpenPGP API versie 3 (meerdere api accounts, interne fixes, sleutel lookup)</li>
</ul>
<h2>2.4</h2>
@@ -33,45 +47,45 @@
Naast meerdere kleine patches zijn een redelijk aantal patches gemaakt door de volgende mensen (in alfabetische volgorde):
Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Paul Sarbinowski, Sreeram Boyapati, Vincent Breitmoser.</p>
<ul>
-<li>nieuwe verenigde sleutellijst</li>
-<li>gekleurde sleutel vingerafdruk</li>
-<li>support voor sleutelserver ports</li>
-<li>deactiveer mogelijkheid om zwakke sleutels te genereren</li>
-<li>veel meer intern werk aan het API</li>
-<li>certificeer gebruiker ids</li>
-<li>sleutelserver opdracht gebaseerd op machine-leesbare output</li>
-<li>Versleutel navigatiemenu op tablets</li>
-<li>suggesties voor e-mails bij aanmaken van sleutels</li>
-<li>zoek in publieke sleutel lijsten</li>
-<li>en veel meer verbeteringen en fixes...</li>
+<li>New unified key list</li>
+<li>Colorized key fingerprint</li>
+<li>Support for keyserver ports</li>
+<li>Deactivate possibility to generate weak keys</li>
+<li>Much more internal work on the API</li>
+<li>Certify user ids</li>
+<li>Keyserver query based on machine-readable output</li>
+<li>Lock navigation drawer on tablets</li>
+<li>Suggestions for emails on creation of keys</li>
+<li>Search in public key lists</li>
+<li>And much more improvements and fixes…</li>
</ul>
<h2>2.3.1</h2>
<ul>
-<li>hotfix voor crash bij het upgraden van oude versies</li>
+<li>Hotfix for crash when upgrading from old versions</li>
</ul>
<h2>2.3</h2>
<ul>
-<li>verwijder onnodige export van publieke sleutels bij het exporteren van de geheime sleutel (dank aan Ash Hughes)</li>
-<li>fix instellingen verloopdata op sleutels (dank aan Ash Hughes)</li>
-<li>meer interne fixes tijdens het bewerken van sleutels (dank aan Ash Hughes)</li>
-<li>sleutelservers direct van het importeerscherm zoeken</li>
-<li>fix layout en dialoog stijl op Android 2.2-3.0</li>
-<li>fix crash op sleutels met lege gebruiker id's</li>
-<li>fix crash en lege lijsten bij het terugkomen van het ondertekenscherm</li>
+<li>Remove unnecessary export of public keys when exporting secret key (thanks to Ash Hughes)</li>
+<li>Fix setting expiry dates on keys (thanks to Ash Hughes)</li>
+<li>More internal fixes when editing keys (thanks to Ash Hughes)</li>
+<li>Querying keyservers directly from the import screen</li>
+<li>Fix layout and dialog style on Android 2.2-3.0</li>
+<li>Fix crash on keys with empty user ids</li>
+<li>Fix crash and empty lists when coming back from signing screen</li>
<li>Bouncy Castle (cryptografie bibliotheek) bijgewerkt van 1.47 naar 1.50 en versie van bron</li>
-<li>fix uploaden van sleutel van ondertekenscherm</li>
+<li>Fix upload of key from signing screen</li>
</ul>
<h2>2.2</h2>
<ul>
-<li>nieuw design met navigatiemenu</li>
-<li>nieuw publieke sleutel lijst design</li>
-<li>nieuw publieke sleutel uiterlijk</li>
-<li>bug fixes voor importeren van sleutels</li>
-<li>sleutel kruis-certificatie (dank aan Ash Hughes)</li>
-<li>behandelt UTF-8 wachtwoorden goed (dank aan Ash Hughes)</li>
-<li>eerste versie met nieuwe talen (dank aan de medewerkers bij Transifex)</li>
-<li>delen van sleutels via QR Codes gefixt en verbeterd</li>
-<li>pakket handtekening verificatie voor API</li>
+<li>New design with navigation drawer</li>
+<li>New public key list design</li>
+<li>New public key view</li>
+<li>Bug fixes for importing of keys</li>
+<li>Key cross-certification (thanks to Ash Hughes)</li>
+<li>Handle UTF-8 passwords properly (thanks to Ash Hughes)</li>
+<li>First version with new languages (thanks to the contributors on Transifex)</li>
+<li>Sharing of keys via QR Codes fixed and improved</li>
+<li>Package signature verification for API</li>
</ul>
<h2>2.1.1</h2>
<ul>
@@ -79,65 +93,65 @@ Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Pa
</ul>
<h2>2.1</h2>
<ul>
-<li>veel bugfixes</li>
-<li>nieuwe API voor ontwikkelaars</li>
+<li>Lots of bug fixes</li>
+<li>New API for developers</li>
<li>PRNG bug fix door Google</li>
</ul>
<h2>2.0</h2>
<ul>
-<li>complete herdesign</li>
-<li>deel publieke sleutels via qr codes, nfc beam</li>
-<li>sleutels ondertekenen</li>
-<li>upload sleutels naar server</li>
-<li>fixt importeerfouten</li>
-<li>nieuwe AIDL API</li>
+<li>Complete redesign</li>
+<li>Share public keys via qr codes, nfc beam</li>
+<li>Sign keys</li>
+<li>Upload keys to server</li>
+<li>Fixes import issues</li>
+<li>New AIDL API</li>
</ul>
<h2>1.0.8</h2>
<ul>
-<li>basis sleutelserver support</li>
-<li>app2sd</li>
-<li>meer keuzes voor wachtwoord cache: 1, 2, 4, 8, uren</li>
-<li>vertalingen: Noors (bedankt, Sander Danielsen), Chinees (bedankt, Zhang Fredrick)</li>
-<li>bugfixes</li>
-<li>optimalisaties</li>
+<li>Basic keyserver support</li>
+<li>App2sd</li>
+<li>More choices for pass phrase cache: 1, 2, 4, 8, hours</li>
+<li>Translations: Norwegian (thanks, Sander Danielsen), Chinese (thanks, Zhang Fredrick)</li>
+<li>Bugfixes</li>
+<li>Optimizations</li>
</ul>
<h2>1.0.7</h2>
<ul>
-<li>probleem met handtekeningverificatie van teksten met nieuwe trailing newline gefixt</li>
-<li>meer opties voor wachtwoord cache tijd te leven (20, 40, 60 minuten)</li>
+<li>Fixed problem with signature verification of texts with trailing newline</li>
+<li>More options for pass phrase cache time to live (20, 40, 60 mins)</li>
</ul>
<h2>1.0.6</h2>
<ul>
-<li>account toevoegen crash op Froyo gefixt</li>
-<li>veilige bestandsverwijdering</li>
-<li>optie om sleutel te verwijderen na importeren</li>
-<li>stream codering/decodering (gallery, etc.)</li>
-<li>nieuwe opties (taal, force v3 handtekeningen)</li>
-<li>interface veranderingen</li>
-<li>bugfixes</li>
+<li>Account adding crash on Froyo fixed</li>
+<li>Secure file deletion</li>
+<li>Option to delete key file after import</li>
+<li>Stream encryption/decryption (gallery, etc.)</li>
+<li>New options (language, force v3 signatures)</li>
+<li>Interface changes</li>
+<li>Bugfixes</li>
</ul>
<h2>1.0.5</h2>
<ul>
<li>Duitse en Italiaanse vertaling</li>
-<li>veel kleiner pakket, door verminderde BC bronnen</li>
-<li>nieuwe voorkeuren GUI</li>
-<li>layout aanpassing voor plaatsbepaling</li>
-<li>handtekening bugfix</li>
+<li>Much smaller package, due to reduced BC sources</li>
+<li>New preferences GUI</li>
+<li>Layout adjustment for localization</li>
+<li>Signature bugfix</li>
</ul>
<h2>1.0.4</h2>
<ul>
-<li>nog een crash gefixt veroorzaakt door een SDK bug met query builder</li>
+<li>Fixed another crash caused by some SDK bug with query builder</li>
</ul>
<h2>1.0.3</h2>
<ul>
-<li>crashes tijdens codering/signering en mogelijk sleutel importeren gefixt</li>
+<li>Fixed crashes during encryption/signing and possibly key export</li>
</ul>
<h2>1.0.2</h2>
<ul>
-<li>filterbare sleutellijsten</li>
-<li>slimmere voor-selectie van codeersleutels</li>
-<li>nieuwe Intent behandeling voor VIEW en SEND, maakt het mogelijk om bestanden te coderen/decoderen uit bestandsmanagers</li>
-<li>fixes en meer functies (sleutel voorselectie) voor K-9 Mail, nieuwe beta versie beschikbaar</li>
+<li>Filterable key lists</li>
+<li>Smarter pre-selection of encryption keys</li>
+<li>New Intent handling for VIEW and SEND, allows files to be encrypted/decrypted out of file managers</li>
+<li>Fixes and additional features (key preselection) for K-9 Mail, new beta build available</li>
</ul>
<h2>1.0.1</h2>
<ul>
@@ -146,11 +160,11 @@ Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Pa
<h2>1.0.0</h2>
<ul>
<li>K-9 Mail integratie, APG ondersteunende beta versie van K-9 Mail</li>
-<li>support voor meer bestandsmanagers (inclusief ASTRO)</li>
+<li>Support of more file managers (including ASTRO)</li>
<li>Slovenische vertaling</li>
-<li>nieuwe database, veel sneller, minder geheugenverbruik</li>
-<li>gedefinieerde Intents en inhoudsprovider voor andere apps</li>
-<li>bugfixes</li>
+<li>New database, much faster, less memory usage</li>
+<li>Defined Intents and content provider for other apps</li>
+<li>Bugfixes</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-pl/help_about.html b/OpenKeychain/src/main/res/raw-pl/help_about.html
index 68cc2810e..0ec1ceefe 100644
--- a/OpenKeychain/src/main/res/raw-pl/help_about.html
+++ b/OpenKeychain/src/main/res/raw-pl/help_about.html
@@ -5,27 +5,27 @@
<p><a href="http://www.openkeychain.org">OpenKeychain</a> to implementacja OpenPGP na platformę Android.</p>
<p>Licencja: GPLv3+</p>
-<h2>Deweloperzy OpenKeychain</h2>
+<h2>Developers</h2>
<ul>
-<li>Dominik Schürmann (Wiodący developer)</li>
-<li>Ash Hughes (łatki crypto)</li>
+<li>Dominik Schürmann (Maintainer)</li>
+<li>Art O Cathain</li>
+<li>Ash Hughes</li>
<li>Brian C. Barnes</li>
-<li>Bahtiar 'kalkin' Gadimov (Interfejs Użytkownika)</li>
+<li>Bahtiar 'kalkin' Gadimov</li>
+<li>Daniel Albert</li>
<li>Daniel Hammann</li>
<li>Daniel Haß</li>
<li>Greg Witczak</li>
+<li>'mar-v-in'</li>
+<li>Markus Doits</li>
<li>Miroojin Bakshi</li>
<li>Nikhil Peter Raj</li>
<li>Paul Sarbinowski</li>
+<li>'Senecaso'</li>
<li>Sreeram Boyapati</li>
-<li>Vincent Breitmoser</li>
+<li>Thialfihar (APG 1.x)</li>
<li>Tim Bray</li>
-</ul>
-<h2>Deweloperzy APG 1.x</h2>
-<ul>
-<li>Thialfihar (Wiodący deweloper)</li>
-<li>'Senecaso' (kody QR, podpisy kluczy, wysyłanie kluczy)</li>
-<li>Markus Doits</li>
+<li>Vincent Breitmoser</li>
</ul>
<h2>Biblioteki</h2>
<ul>
@@ -34,17 +34,21 @@
<li>
<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (Licencja Apache v2)</li>
<li>
-<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Licencja Apache v2)</li>
+<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/Bearded-Hen/Android-Bootstrap">Android-Bootstrap</a> (Licencja MIT)</li>
+<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Licencja Apache v2)</li>
<li>
<a href="http://code.google.com/p/zxing/">ZXing</a> (Licencja Apache v2)</li>
<li>
<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (Licencja MIT X11)</li>
<li>
<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Licencja Apache v2)</li>
-<li>
-<a href="https://github.com/johnkil/Android-AppMsg">Android AppMsg Library</a> (Licencja Apache v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-pl/help_changelog.html b/OpenKeychain/src/main/res/raw-pl/help_changelog.html
index 8fce6c475..eded2c8c4 100644
--- a/OpenKeychain/src/main/res/raw-pl/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw-pl/help_changelog.html
@@ -1,6 +1,20 @@
<html>
<head></head>
<body>
+<h2>2.8</h2>
+<ul>
+<li>So many bugs have been fixed in this release that we focus on the main new features</li>
+<li>Key edit: awesome new design, key revocation</li>
+<li>Key import: awesome new design, secure keyserver connections via hkps, keyserver resolving via DNS SRV records</li>
+<li>New first time screen</li>
+<li>New create key screen: autocompletion of name and email based on your personal Android accounts</li>
+<li>File encryption: awesome new design, support for encrypting multiple files</li>
+<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>
+</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>
+
<h2>2.7</h2>
<ul>
<li>Purple! (Dominik, Vincent)</li>
@@ -11,21 +25,21 @@
</ul>
<h2>2.6.1</h2>
<ul>
-<li>kilka poprawionych błędów regresji</li>
+<li>Some fixes for regression bugs</li>
</ul>
<h2>2.6</h2>
<ul>
-<li>certyfikacja kluczy (podziękowania dla Vincent Breitmoser)</li>
-<li>dodano wsparcie dla dzielonych kluczy prywatnych GnuPG (podziękowania dla Vincent Breitmoser)</li>
-<li>nowy wygląd dla weryfikacji podpisu</li>
-<li>niestandardowa długość klucza (podziękowania dla Greg Witczak)</li>
-<li>naprawiono funkcję udostępniania przez inne aplikacje</li>
+<li>Key certifications (thanks to Vincent Breitmoser)</li>
+<li>Support for GnuPG partial secret keys (thanks to Vincent Breitmoser)</li>
+<li>New design for signature verification</li>
+<li>Custom key length (thanks to Greg Witczak)</li>
+<li>Fix share-functionality from other apps</li>
</ul>
<h2>2.5</h2>
<ul>
-<li>naprawiono deszyfrowanie symetrycznych wiadomości/plików PGP</li>
-<li>przerobiono ekran edytowania klucza (podziękowania dla Ash Hughes)</li>
-<li>nowy nowoczesny design dla ekranów szyfrowania/deszyfrowania</li>
+<li>Fix decryption of symmetric pgp messages/files</li>
+<li>Refactored edit key screen (thanks to Ash Hughes)</li>
+<li>New modern design for encrypt/decrypt screens</li>
<li>OpenPGP API wersja 3 (wiele kont API, wewnętrzne poprawki, wyszukiwanie kluczy)</li>
</ul>
<h2>2.4</h2>
@@ -33,45 +47,45 @@
Poza kilkoma małymi poprawkami, znaczna ilość aktualizacji została wykonana przez poniższe osoby (w kolejności alfabetycznej):
Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Paul Sarbinowski, Sreeram Boyapati, Vincent Breitmoser.</p>
<ul>
-<li>nowa ujednolicona lista kluczy</li>
-<li>pokolowane odciski klucza</li>
-<li>obsługa portów w serwerach kluczy</li>
-<li>zablokowana możliwość generowania słabych kluczy</li>
-<li>wiele wewnętrznych prac nad API</li>
-<li>podpisywanie identyfikatorów użytkowników</li>
-<li>zapytania do serwera kluczy wykorzystują wydajniejszą komunikację maszynową</li>
-<li>zablokowany panel nawigacyjny na tabletach</li>
-<li>podpowiedzi do adresu email przy tworzeniu kluczy</li>
-<li>wyszukiwanie w liście publicznych kluczy</li>
-<li>i wiele innych usprawnień i poprawek...</li>
+<li>New unified key list</li>
+<li>Colorized key fingerprint</li>
+<li>Support for keyserver ports</li>
+<li>Deactivate possibility to generate weak keys</li>
+<li>Much more internal work on the API</li>
+<li>Certify user ids</li>
+<li>Keyserver query based on machine-readable output</li>
+<li>Lock navigation drawer on tablets</li>
+<li>Suggestions for emails on creation of keys</li>
+<li>Search in public key lists</li>
+<li>And much more improvements and fixes…</li>
</ul>
<h2>2.3.1</h2>
<ul>
-<li>szybka poprawka awarii aplikacji przy aktualizacji ze starszej wersji</li>
+<li>Hotfix for crash when upgrading from old versions</li>
</ul>
<h2>2.3</h2>
<ul>
-<li>usunięto zbędne eksportowanie kluczy publicznych przy eksportowaniu kluczy prywatnych (podziękowania dla Ash Hughes)</li>
-<li>naprawiono błąd z ustawianiem daty wygaśnięcia kluczy (podziękowania dla Ash Hugens)</li>
-<li>więcej wewnętrznych poprawek przy edytowaniu kluczy (podziękowania dla Ash Hughes)</li>
-<li>wysyłanie zapytań do serwera kluczy bezpośrednio z ekranu importu</li>
-<li>poprawiony wygląd interfejsu i okienek na Androidzie 2.2-3.0</li>
-<li>naprawiono awarię programu dla kluczy z pustym identyfikatorem użytkownika</li>
-<li>naprawiono awarię aplikacji przy powrocie z ekranu podpisywania</li>
+<li>Remove unnecessary export of public keys when exporting secret key (thanks to Ash Hughes)</li>
+<li>Fix setting expiry dates on keys (thanks to Ash Hughes)</li>
+<li>More internal fixes when editing keys (thanks to Ash Hughes)</li>
+<li>Querying keyservers directly from the import screen</li>
+<li>Fix layout and dialog style on Android 2.2-3.0</li>
+<li>Fix crash on keys with empty user ids</li>
+<li>Fix crash and empty lists when coming back from signing screen</li>
<li>Bouncy Castle (biblioteka kryptograficzna) zaktualizowana z wersji 1.47 do 1.50 i kompilowana ze źródeł</li>
-<li>naprawiony błąd przy wysyłaniu klucza z ekranu podpisywania</li>
+<li>Fix upload of key from signing screen</li>
</ul>
<h2>2.2</h2>
<ul>
-<li>nowy wygląd z panelem nawigacji</li>
-<li>nowy wygląd listy kluczy publicznych</li>
-<li>nowy widok klucza publicznego</li>
-<li>naprawiono błędy związane z importowaniem kluczy</li>
-<li>krzyżowa certyfikacja kluczy (podziękowania dla Ash Hughes)</li>
-<li>hasła zapisane w UTF-8 są teraz prawidłowo obsługiwane (podziękowania dla Ash Hughes)</li>
-<li>pierwsza wersja z nowymi językami (podziękowania dla tłumaczy-wolontariuszy z Transifex)</li>
-<li>udostępnianie kluczy przez kody QR zostało poprawione i ulepszone</li>
-<li>weryfikacja podpisu paczki dla API</li>
+<li>New design with navigation drawer</li>
+<li>New public key list design</li>
+<li>New public key view</li>
+<li>Bug fixes for importing of keys</li>
+<li>Key cross-certification (thanks to Ash Hughes)</li>
+<li>Handle UTF-8 passwords properly (thanks to Ash Hughes)</li>
+<li>First version with new languages (thanks to the contributors on Transifex)</li>
+<li>Sharing of keys via QR Codes fixed and improved</li>
+<li>Package signature verification for API</li>
</ul>
<h2>2.1.1</h2>
<ul>
@@ -79,65 +93,65 @@ Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Pa
</ul>
<h2>2.1</h2>
<ul>
-<li>wiele poprawek błędów</li>
-<li>nowe API dla programistów</li>
+<li>Lots of bug fixes</li>
+<li>New API for developers</li>
<li>Naprawiono błąd generatora liczb losowych (PRNG), Google.</li>
</ul>
<h2>2.0</h2>
<ul>
-<li>kompletna przebudowa</li>
-<li>udostępnianie kluczy publicznych przez kody QR oraz NFC</li>
-<li>możliwość podpisywania kluczem</li>
-<li>wysyłanie kluczy na serwer</li>
-<li>naprawiono problemy związane z importowaniem</li>
-<li>nowy AIDL API</li>
+<li>Complete redesign</li>
+<li>Share public keys via qr codes, nfc beam</li>
+<li>Sign keys</li>
+<li>Upload keys to server</li>
+<li>Fixes import issues</li>
+<li>New AIDL API</li>
</ul>
<h2>1.0.8</h2>
<ul>
-<li>podstawowa obsługa serwerów kluczy</li>
-<li>app2sd</li>
-<li>dodano więcej przedziałów czasowych zapamiętywania hasła: 1, 2, 4, 8 godzin</li>
-<li>tłumaczenia: norweski (podziękowania dla Sander Danielsen), chiński (podziękowania dla Zhang Fredrick)</li>
-<li>naprawione błędy</li>
-<li>usprawnienia</li>
+<li>Basic keyserver support</li>
+<li>App2sd</li>
+<li>More choices for pass phrase cache: 1, 2, 4, 8, hours</li>
+<li>Translations: Norwegian (thanks, Sander Danielsen), Chinese (thanks, Zhang Fredrick)</li>
+<li>Bugfixes</li>
+<li>Optimizations</li>
</ul>
<h2>1.0.7</h2>
<ul>
-<li>naprawiono problem z weryfikowaniem podpisu tekstów kończących się znakiem nowej linii</li>
-<li>dodano więcej przedziałów czasowych zapamiętywania hasła (20, 40, 60 minut)</li>
+<li>Fixed problem with signature verification of texts with trailing newline</li>
+<li>More options for pass phrase cache time to live (20, 40, 60 mins)</li>
</ul>
<h2>1.0.6</h2>
<ul>
-<li>naprawiono błąd powodujący awarię aplikacji przy dodawaniu nowego konta na Androidzie 2.2 Froyo</li>
-<li>dodano bezpieczne usuwanie plików</li>
-<li>Dodano możliwość usuwania plików kluczy po zaimportowaniu</li>
-<li>możliwość strumieniowego szyfrowania/deszyfrowania (galeria i inne)</li>
-<li>nowe opcje (języki, wymuszanie podpisów v3)</li>
-<li>zmiany w interfejsie</li>
-<li>naprawione błędy</li>
+<li>Account adding crash on Froyo fixed</li>
+<li>Secure file deletion</li>
+<li>Option to delete key file after import</li>
+<li>Stream encryption/decryption (gallery, etc.)</li>
+<li>New options (language, force v3 signatures)</li>
+<li>Interface changes</li>
+<li>Bugfixes</li>
</ul>
<h2>1.0.5</h2>
<ul>
<li>tłumaczenie na niemiecki i włoski</li>
-<li>znaczne zmniejszenie rozmiaru paczki, z powodu zredukowania źródeł BC</li>
-<li>nowy interfejs graficzny Właściwości</li>
-<li>usprawnienia wyglądu dla lokalizacji</li>
-<li>naprawa błędu z podpisami</li>
+<li>Much smaller package, due to reduced BC sources</li>
+<li>New preferences GUI</li>
+<li>Layout adjustment for localization</li>
+<li>Signature bugfix</li>
</ul>
<h2>1.0.4</h2>
<ul>
-<li>naprawiono kolejny błąd powodujący awarię aplikacji, spowodowany przez jakąś usterkę w SDK przy budowaniu zapytań</li>
+<li>Fixed another crash caused by some SDK bug with query builder</li>
</ul>
<h2>1.0.3</h2>
<ul>
-<li>naprawiono błąd w trakcie szyfrowania/podpisywania i prawdopodobnie eksportowania klucza</li>
+<li>Fixed crashes during encryption/signing and possibly key export</li>
</ul>
<h2>1.0.2</h2>
<ul>
-<li>dodano możliwość filtrowania listy kluczy</li>
-<li>sprytniejsze automatyczne wybieranie kluczy szyfrujących</li>
-<li>dodano nowy sposób obsługi intencji "wyświetl" i "wyślij", umożliwia szyfrowanie/deszyfrowanie plików wprost z menadżera plików.</li>
-<li>poprawki i dodatkowe funkcje (podpowiedź wyboru klucza) dla K-9 Mail, nowe wydanie beta dostępne</li>
+<li>Filterable key lists</li>
+<li>Smarter pre-selection of encryption keys</li>
+<li>New Intent handling for VIEW and SEND, allows files to be encrypted/decrypted out of file managers</li>
+<li>Fixes and additional features (key preselection) for K-9 Mail, new beta build available</li>
</ul>
<h2>1.0.1</h2>
<ul>
@@ -146,11 +160,11 @@ Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Pa
<h2>1.0.0</h2>
<ul>
<li>integracja z K-9 Mail, APG obsługuje wersję beta K-9 Mail</li>
-<li>dodano wsparcie dla większej liczby menadżerów plików (włącznie z ASTRO)</li>
+<li>Support of more file managers (including ASTRO)</li>
<li>tłumaczenie na słoweński</li>
-<li>Wykorzystanie nowej bazy danych, która jest znacznie szybsza i mniej pamięciożerna</li>
-<li>zdefiniowano intecję i dostawców treści dla pozostałych aplikacji</li>
-<li>naprawione błędy</li>
+<li>New database, much faster, less memory usage</li>
+<li>Defined Intents and content provider for other apps</li>
+<li>Bugfixes</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-ro/help_about.html b/OpenKeychain/src/main/res/raw-ro/help_about.html
deleted file mode 100644
index ab3c19375..000000000
--- a/OpenKeychain/src/main/res/raw-ro/help_about.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<html>
-<head></head>
-<body>
-<p><a href="http://www.openkeychain.org">http://www.openkeychain.org</a></p>
-<p><a href="http://www.openkeychain.org">OpenKeychain</a> is an OpenPGP implementation for Android.</p>
-<p>License: GPLv3+</p>
-
-<h2>Developers OpenKeychain</h2>
-<ul>
-<li>Dominik Schürmann (Lead developer)</li>
-<li>Ash Hughes (crypto patches)</li>
-<li>Brian C. Barnes</li>
-<li>Bahtiar 'kalkin' Gadimov (UI)</li>
-<li>Daniel Hammann</li>
-<li>Daniel Haß</li>
-<li>Greg Witczak</li>
-<li>Miroojin Bakshi</li>
-<li>Nikhil Peter Raj</li>
-<li>Paul Sarbinowski</li>
-<li>Sreeram Boyapati</li>
-<li>Vincent Breitmoser</li>
-<li>Tim Bray</li>
-</ul>
-<h2>Developers APG 1.x</h2>
-<ul>
-<li>Thialfihar (Lead developer)</li>
-<li>'Senecaso' (QRCode, sign key, upload key)</li>
-<li>Markus Doits</li>
-</ul>
-<h2>Libraries</h2>
-<ul>
-<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v4</a> (Apache License v2)</li>
-<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (Apache License v2)</li>
-<li>
-<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache License v2)</li>
-<li>
-<a href="https://github.com/Bearded-Hen/Android-Bootstrap">Android-Bootstrap</a> (MIT License)</li>
-<li>
-<a href="http://code.google.com/p/zxing/">ZXing</a> (Apache License v2)</li>
-<li>
-<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
-<li>
-<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Apache License v2)</li>
-<li>
-<a href="https://github.com/johnkil/Android-AppMsg">Android AppMsg Library</a> (Apache License v2)</li>
-</ul>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-ro/help_changelog.html b/OpenKeychain/src/main/res/raw-ro/help_changelog.html
deleted file mode 100644
index ebada67f9..000000000
--- a/OpenKeychain/src/main/res/raw-ro/help_changelog.html
+++ /dev/null
@@ -1,156 +0,0 @@
-<html>
-<head></head>
-<body>
-<h2>2.7</h2>
-<ul>
-<li>Purple! (Dominik, Vincent)</li>
-<li>New key view design (Dominik, Vincent)</li>
-<li>New flat Android buttons (Dominik, Vincent)</li>
-<li>API fixes (Dominik)</li>
-<li>Keybase.io import (Tim Bray)</li>
-</ul>
-<h2>2.6.1</h2>
-<ul>
-<li>some fixes for regression bugs</li>
-</ul>
-<h2>2.6</h2>
-<ul>
-<li>key certifications (thanks to Vincent Breitmoser)</li>
-<li>support for GnuPG partial secret keys (thanks to Vincent Breitmoser)</li>
-<li>new design for signature verification</li>
-<li>custom key length (thanks to Greg Witczak)</li>
-<li>fix share-functionality from other apps</li>
-</ul>
-<h2>2.5</h2>
-<ul>
-<li>fix decryption of symmetric pgp messages/files</li>
-<li>refactored edit key screen (thanks to Ash Hughes)</li>
-<li>new modern design for encrypt/decrypt screens</li>
-<li>OpenPGP API version 3 (multiple api accounts, internal fixes, key lookup)</li>
-</ul>
-<h2>2.4</h2>
-<p>Thanks to all applicants of Google Summer of Code 2014 who made this release feature rich and bug free!
-Besides several small patches, a notable number of patches are made by the following people (in alphabetical order):
-Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Paul Sarbinowski, Sreeram Boyapati, Vincent Breitmoser.</p>
-<ul>
-<li>new unified key list</li>
-<li>colorized key fingerprint</li>
-<li>support for keyserver ports</li>
-<li>deactivate possibility to generate weak keys</li>
-<li>much more internal work on the API</li>
-<li>certify user ids</li>
-<li>keyserver query based on machine-readable output</li>
-<li>lock navigation drawer on tablets</li>
-<li>suggestions for emails on creation of keys</li>
-<li>search in public key lists</li>
-<li>and much more improvements and fixes…</li>
-</ul>
-<h2>2.3.1</h2>
-<ul>
-<li>hotfix for crash when upgrading from old versions</li>
-</ul>
-<h2>2.3</h2>
-<ul>
-<li>remove unnecessary export of public keys when exporting secret key (thanks to Ash Hughes)</li>
-<li>fix setting expiry dates on keys (thanks to Ash Hughes)</li>
-<li>more internal fixes when editing keys (thanks to Ash Hughes)</li>
-<li>querying keyservers directly from the import screen</li>
-<li>fix layout and dialog style on Android 2.2-3.0</li>
-<li>fix crash on keys with empty user ids</li>
-<li>fix crash and empty lists when coming back from signing screen</li>
-<li>Bouncy Castle (cryptography library) updated from 1.47 to 1.50 and build from source</li>
-<li>fix upload of key from signing screen</li>
-</ul>
-<h2>2.2</h2>
-<ul>
-<li>new design with navigation drawer</li>
-<li>new public key list design</li>
-<li>new public key view</li>
-<li>bug fixes for importing of keys</li>
-<li>key cross-certification (thanks to Ash Hughes)</li>
-<li>handle UTF-8 passwords properly (thanks to Ash Hughes)</li>
-<li>first version with new languages (thanks to the contributors on Transifex)</li>
-<li>sharing of keys via QR Codes fixed and improved</li>
-<li>package signature verification for API</li>
-</ul>
-<h2>2.1.1</h2>
-<ul>
-<li>API Updates, preparation for K-9 Mail integration</li>
-</ul>
-<h2>2.1</h2>
-<ul>
-<li>lots of bug fixes</li>
-<li>new API for developers</li>
-<li>PRNG bug fix by Google</li>
-</ul>
-<h2>2.0</h2>
-<ul>
-<li>complete redesign</li>
-<li>share public keys via qr codes, nfc beam</li>
-<li>sign keys</li>
-<li>upload keys to server</li>
-<li>fixes import issues</li>
-<li>new AIDL API</li>
-</ul>
-<h2>1.0.8</h2>
-<ul>
-<li>basic keyserver support</li>
-<li>app2sd</li>
-<li>more choices for pass phrase cache: 1, 2, 4, 8, hours</li>
-<li>translations: Norwegian (thanks, Sander Danielsen), Chinese (thanks, Zhang Fredrick)</li>
-<li>bugfixes</li>
-<li>optimizations</li>
-</ul>
-<h2>1.0.7</h2>
-<ul>
-<li>fixed problem with signature verification of texts with trailing newline</li>
-<li>more options for pass phrase cache time to live (20, 40, 60 mins)</li>
-</ul>
-<h2>1.0.6</h2>
-<ul>
-<li>account adding crash on Froyo fixed</li>
-<li>secure file deletion</li>
-<li>option to delete key file after import</li>
-<li>stream encryption/decryption (gallery, etc.)</li>
-<li>new options (language, force v3 signatures)</li>
-<li>interface changes</li>
-<li>bugfixes</li>
-</ul>
-<h2>1.0.5</h2>
-<ul>
-<li>German and Italian translation</li>
-<li>much smaller package, due to reduced BC sources</li>
-<li>new preferences GUI</li>
-<li>layout adjustment for localization</li>
-<li>signature bugfix</li>
-</ul>
-<h2>1.0.4</h2>
-<ul>
-<li>fixed another crash caused by some SDK bug with query builder</li>
-</ul>
-<h2>1.0.3</h2>
-<ul>
-<li>fixed crashes during encryption/signing and possibly key export</li>
-</ul>
-<h2>1.0.2</h2>
-<ul>
-<li>filterable key lists</li>
-<li>smarter pre-selection of encryption keys</li>
-<li>new Intent handling for VIEW and SEND, allows files to be encrypted/decrypted out of file managers</li>
-<li>fixes and additional features (key preselection) for K-9 Mail, new beta build available</li>
-</ul>
-<h2>1.0.1</h2>
-<ul>
-<li>GMail account listing was broken in 1.0.0, fixed again</li>
-</ul>
-<h2>1.0.0</h2>
-<ul>
-<li>K-9 Mail integration, APG supporting beta build of K-9 Mail</li>
-<li>support of more file managers (including ASTRO)</li>
-<li>Slovenian translation</li>
-<li>new database, much faster, less memory usage</li>
-<li>defined Intents and content provider for other apps</li>
-<li>bugfixes</li>
-</ul>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-ro/help_nfc_beam.html b/OpenKeychain/src/main/res/raw-ro/help_nfc_beam.html
deleted file mode 100644
index 88492731c..000000000
--- a/OpenKeychain/src/main/res/raw-ro/help_nfc_beam.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<html>
-<head></head>
-<body>
-<h2>How to receive keys</h2>
-<ol>
-<li>Go to your partners contacts and open the contact you want to share.</li>
-<li>Hold the two devices back to back (they have to be almost touching) and you’ll feel a vibration.</li>
-<li>After it vibrates you’ll see the content on your partners device turn into a card-like object with Star Trek warp speed-looking animation in the background.</li>
-<li>Tap the card and the content will then load on the your device.</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-ro/help_start.html b/OpenKeychain/src/main/res/raw-ro/help_start.html
deleted file mode 100644
index 51a76c01e..000000000
--- a/OpenKeychain/src/main/res/raw-ro/help_start.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<html>
-<head></head>
-<body>
-<h2>Getting started</h2>
-<p>First you need a personal secret key. Create one via the option menus in "Keys" or import existing secret keys. Afterwards, you can download your friends' keys or exchange them via QR Codes or NFC.</p>
-
-<p>It is recommended that you install <a href="market://details?id=org.openintents.filemanager">OI File Manager</a> for enhanced file selection and <a href="market://details?id=com.google.zxing.client.android">Barcode Scanner</a> to scan generated QR Codes. Clicking on the links will open Google Play Store or F-Droid for installation.</p>
-
-<h2>Applications</h2>
-<p>Several applications support OpenKeychain to encrypt/sign your private communication:<br><img src="apps_k9"><br>K-9 Mail: OpenKeychain support available in current <a href="https://github.com/k9mail/k-9/releases/tag/4.904">alpha build</a>!<br><a href="market://details?id=eu.siacs.conversations"><img src="apps_conversations"><br>Conversations</a>: Jabber/XMPP client<br><a href="market://details?id=org.lf_net.pgpunlocker"><img src="apps_pgpauth"><br>PGPAuth</a>: App to send a PGP-signed request to a server to open or close something, e.g. a door</p>
-
-<h2>I found a bug in OpenKeychain!</h2>
-<p>Please report the bug using the <a href="https://github.com/openpgp-keychain/openpgp-keychain/issues">issue tracker of OpenKeychain</a>.</p>
-
-<h2>Contribute</h2>
-<p>If you want to help us developing OpenKeychain by contributing code <a href="https://github.com/openpgp-keychain/openpgp-keychain#contribute-code">follow our small guide on Github</a>.</p>
-
-<h2>Translations</h2>
-<p>Help translating OpenKeychain! Everybody can participate at <a href="https://www.transifex.com/projects/p/openpgp-keychain/">OpenKeychain on Transifex</a>.</p>
-
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-ro/help_wot.html b/OpenKeychain/src/main/res/raw-ro/help_wot.html
deleted file mode 100644
index 29790139b..000000000
--- a/OpenKeychain/src/main/res/raw-ro/help_wot.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<html>
-<head></head>
-<body>
-<h2>Web of Trust</h2>
-<p>The Web of Trust describes the part of PGP which deals with creation and bookkeeping of certifications. It provides mechanisms to help the user keep track of who a public key belongs to, and share this information with others; To ensure the privacy of encrypted communication, it is essential to know that the public key you encrypt to belongs to the person you think it does.</p>
-
-<h2>Support in OpenKeychain</h2>
-<p>There is only basic support for Web of Trust in OpenKeychain. This is a heavy work in progress and subject to changes in upcoming releases.</p>
-
-<h2>Trust Model</h2>
-<p>Trust evaluation is based on the simple assumption that all keys which have secret keys available are trusted. Public keys which contain at least one user id certified by a trusted key will be marked with a green dot in the key listings. It is not (yet) possible to specify trust levels for certificates of other known public keys.</p>
-
-<h2>Certifying keys</h2>
-<p>Support for key certification is available, and user ids can be certified individually. It is not yet possible to specify the level of trust or create local and other special types of certificates.</p>
-
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-ro/nfc_beam_share.html b/OpenKeychain/src/main/res/raw-ro/nfc_beam_share.html
deleted file mode 100644
index 083e055c7..000000000
--- a/OpenKeychain/src/main/res/raw-ro/nfc_beam_share.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head></head>
-<body>
-<ol>
-<li>Make sure that NFC is turned on in Settings &gt; More &gt; NFC and make sure that Android Beam is also on in the same section.</li>
-<li>Hold the two devices back to back (they have to be almost touching) and you'll feel a vibration.</li>
-<li>After it vibrates you'll see the content on your device turn into a card-like object with Star Trek warp speed-looking animation in the background.</li>
-<li>Tap the card and the content will then load on the other person’s device.</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-ru/help_about.html b/OpenKeychain/src/main/res/raw-ru/help_about.html
index 4ffd2ba18..21446affa 100644
--- a/OpenKeychain/src/main/res/raw-ru/help_about.html
+++ b/OpenKeychain/src/main/res/raw-ru/help_about.html
@@ -5,27 +5,27 @@
<p><a href="http://www.openkeychain.org">OpenKeychain</a> - реализация OpenPGP для Android.</p>
<p>Лицензия: GPLv3+</p>
-<h2>Разработчики OpenKeychain</h2>
+<h2>Developers</h2>
<ul>
-<li>Dominik Schürmann (главный разработчик)</li>
-<li>Ash Hughes (патчи криптографии)</li>
+<li>Dominik Schürmann (Maintainer)</li>
+<li>Art O Cathain</li>
+<li>Ash Hughes</li>
<li>Brian C. Barnes</li>
-<li>Bahtiar 'kalkin' Gadimov (UI)</li>
+<li>Bahtiar 'kalkin' Gadimov</li>
+<li>Daniel Albert</li>
<li>Daniel Hammann</li>
<li>Daniel Haß</li>
<li>Greg Witczak</li>
+<li>'mar-v-in'</li>
+<li>Markus Doits</li>
<li>Miroojin Bakshi</li>
<li>Nikhil Peter Raj</li>
<li>Paul Sarbinowski</li>
+<li>'Senecaso'</li>
<li>Sreeram Boyapati</li>
-<li>Vincent Breitmoser</li>
+<li>Thialfihar (APG 1.x)</li>
<li>Tim Bray</li>
-</ul>
-<h2>Разработчики APG 1.x</h2>
-<ul>
-<li>Thialfihar (главный разработчик)</li>
-<li>'Senecaso' (QR коды, подписание и загрузка ключей)</li>
-<li>Markus Doits</li>
+<li>Vincent Breitmoser</li>
</ul>
<h2>Компоненты</h2>
<ul>
@@ -34,17 +34,21 @@
<li>
<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache License v2)</li>
+<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/Bearded-Hen/Android-Bootstrap">Android-Bootstrap</a> (MIT License)</li>
+<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache License v2)</li>
<li>
<a href="http://code.google.com/p/zxing/">ZXing</a> (Apache License v2)</li>
<li>
<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
<li>
<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Apache License v2)</li>
-<li>
-<a href="https://github.com/johnkil/Android-AppMsg">Библиотека Android AppMsg</a> (Apache License v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-ru/help_changelog.html b/OpenKeychain/src/main/res/raw-ru/help_changelog.html
index fc258a623..f74a54762 100644
--- a/OpenKeychain/src/main/res/raw-ru/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw-ru/help_changelog.html
@@ -1,6 +1,20 @@
<html>
<head></head>
<body>
+<h2>2.8</h2>
+<ul>
+<li>So many bugs have been fixed in this release that we focus on the main new features</li>
+<li>Key edit: awesome new design, key revocation</li>
+<li>Key import: awesome new design, secure keyserver connections via hkps, keyserver resolving via DNS SRV records</li>
+<li>New first time screen</li>
+<li>New create key screen: autocompletion of name and email based on your personal Android accounts</li>
+<li>File encryption: awesome new design, support for encrypting multiple files</li>
+<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>
+</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>
+
<h2>2.7</h2>
<ul>
<li>Пурпурный! (Dominik, Vincent)</li>
@@ -11,21 +25,21 @@
</ul>
<h2>2.6.1</h2>
<ul>
-<li>исправления найденных ошибок</li>
+<li>Some fixes for regression bugs</li>
</ul>
<h2>2.6</h2>
<ul>
-<li>сертификация ключей (благодаря Vincent Breitmoser)</li>
-<li>поддержка частично-секретных ключей GnuPG (благодаря Vincent Breitmoser)</li>
-<li>новый дизайн проверки подписи</li>
-<li>произв. длина ключей (благодаря Greg Witczak)</li>
-<li>исправление ошибки получения данных от других приложений</li>
+<li>Key certifications (thanks to Vincent Breitmoser)</li>
+<li>Support for GnuPG partial secret keys (thanks to Vincent Breitmoser)</li>
+<li>New design for signature verification</li>
+<li>Custom key length (thanks to Greg Witczak)</li>
+<li>Fix share-functionality from other apps</li>
</ul>
<h2>2.5</h2>
<ul>
-<li>исправлено симметричное шифрование сообщений/файлов</li>
-<li>переработано окно изменения ключа (благодаря Ash Hughes)</li>
-<li>новый дизайн для окон шифрования/расшифровки</li>
+<li>Fix decryption of symmetric pgp messages/files</li>
+<li>Refactored edit key screen (thanks to Ash Hughes)</li>
+<li>New modern design for encrypt/decrypt screens</li>
<li>OpenPGP API версии 3 (множественные аккаунты, внутренние исправления, поиск ключей)</li>
</ul>
<h2>2.4</h2>
@@ -33,45 +47,45 @@
Из общего числа патчей, особенный вклад внесли следующие люди (в алфавитном порядке):
Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Paul Sarbinowski, Sreeram Boyapati, Vincent Breitmoser.</p>
<ul>
-<li>новый объединенный список ключей</li>
-<li>цветовая индикация отпечатков ключей</li>
-<li>поддержка портов серверов ключей</li>
-<li>отключена возможность создавать слабые ключи</li>
-<li>ещё больше улучшений работы API</li>
-<li>сертификация пользовательских данных</li>
-<li>запрос к серверу ключей основывается на машинном формате вывода</li>
-<li>фиксация панели на планшетах</li>
-<li>подсказки email при создании ключей</li>
-<li>поиск в списках публичных ключей</li>
-<li>и множество других исправлений и улучшений...</li>
+<li>New unified key list</li>
+<li>Colorized key fingerprint</li>
+<li>Support for keyserver ports</li>
+<li>Deactivate possibility to generate weak keys</li>
+<li>Much more internal work on the API</li>
+<li>Certify user ids</li>
+<li>Keyserver query based on machine-readable output</li>
+<li>Lock navigation drawer on tablets</li>
+<li>Suggestions for emails on creation of keys</li>
+<li>Search in public key lists</li>
+<li>And much more improvements and fixes…</li>
</ul>
<h2>2.3.1</h2>
<ul>
-<li>исправление ошибки при обновлении со старых версий</li>
+<li>Hotfix for crash when upgrading from old versions</li>
</ul>
<h2>2.3</h2>
<ul>
-<li>удален не требующийся экспорт публичного ключа при экспорте секретного ключа (спасибо, Ash Hughes)</li>
-<li>исправлена ошибка срока годности ключей (спасибо, Ash Hughes)</li>
-<li>исправления ошибок при изменении ключей (спасибо, Ash Hughes)</li>
-<li>запрос ключа с сервера прямо из окна импорта ключей</li>
-<li>исправление внешнего вида для Android 2.2-3.0</li>
-<li>исправлено падение когда ключ не содержал имя пользователя</li>
-<li>исправлено падение и пустой список при возвращении из окна подписания</li>
+<li>Remove unnecessary export of public keys when exporting secret key (thanks to Ash Hughes)</li>
+<li>Fix setting expiry dates on keys (thanks to Ash Hughes)</li>
+<li>More internal fixes when editing keys (thanks to Ash Hughes)</li>
+<li>Querying keyservers directly from the import screen</li>
+<li>Fix layout and dialog style on Android 2.2-3.0</li>
+<li>Fix crash on keys with empty user ids</li>
+<li>Fix crash and empty lists when coming back from signing screen</li>
<li>криптографическая библиотека Bouncy Castle обновлена до версии 1.50</li>
-<li>исправлена загрузка ключа из окна подписания</li>
+<li>Fix upload of key from signing screen</li>
</ul>
<h2>2.2</h2>
<ul>
-<li>новый дизайн с боковой панелью</li>
-<li>новый дизайн списка ключей</li>
-<li>новый вид просмотра ключа</li>
-<li>исправление ошибок импорта ключей</li>
-<li>кросс-сертификация ключей (спасибо, Ash Hughes)</li>
-<li>правильная обработка паролей в UTF-8 (спасибо, Ash Hughes)</li>
-<li>первая версия с новыми языками (спасибо переводчикам с Transifex)</li>
-<li>исправление и улучшение передачи ключей через QR коды</li>
-<li>проверка подписей пакетов для API</li>
+<li>New design with navigation drawer</li>
+<li>New public key list design</li>
+<li>New public key view</li>
+<li>Bug fixes for importing of keys</li>
+<li>Key cross-certification (thanks to Ash Hughes)</li>
+<li>Handle UTF-8 passwords properly (thanks to Ash Hughes)</li>
+<li>First version with new languages (thanks to the contributors on Transifex)</li>
+<li>Sharing of keys via QR Codes fixed and improved</li>
+<li>Package signature verification for API</li>
</ul>
<h2>2.1.1</h2>
<ul>
@@ -79,65 +93,65 @@ Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Pa
</ul>
<h2>2.1</h2>
<ul>
-<li>множество исправлений ошибок</li>
-<li>новый API для разработчиков</li>
+<li>Lots of bug fixes</li>
+<li>New API for developers</li>
<li>исправление ошибки генератора случайных чисел</li>
</ul>
<h2>2.0</h2>
<ul>
-<li>переработка дизайна</li>
-<li>передача ключей через QR коды и NFC</li>
-<li>подписание ключей</li>
-<li>загрузка ключей на сервер</li>
-<li>исправление проблем импорта</li>
-<li>новый AIDL API</li>
+<li>Complete redesign</li>
+<li>Share public keys via qr codes, nfc beam</li>
+<li>Sign keys</li>
+<li>Upload keys to server</li>
+<li>Fixes import issues</li>
+<li>New AIDL API</li>
</ul>
<h2>1.0.8</h2>
<ul>
-<li>поддержка серверов ключей</li>
-<li>App2SD</li>
-<li>больше вариантов сохранения кэша пароля: 1, 2, 4, 8 часов</li>
-<li>переводы: норвежский (спасибо, Sander Danielsen), китайский (спасибо, Zhang Fredrick)</li>
-<li>исправления ошибок</li>
-<li>оптимизация</li>
+<li>Basic keyserver support</li>
+<li>App2sd</li>
+<li>More choices for pass phrase cache: 1, 2, 4, 8, hours</li>
+<li>Translations: Norwegian (thanks, Sander Danielsen), Chinese (thanks, Zhang Fredrick)</li>
+<li>Bugfixes</li>
+<li>Optimizations</li>
</ul>
<h2>1.0.7</h2>
<ul>
-<li>исправление ошибки при проверке подписи текста с переводом строки</li>
-<li>больше вариантов сохранения кэша пароля: 20, 40, 60 минут</li>
+<li>Fixed problem with signature verification of texts with trailing newline</li>
+<li>More options for pass phrase cache time to live (20, 40, 60 mins)</li>
</ul>
<h2>1.0.6</h2>
<ul>
-<li>исправление ошибки создания записи на Froyo</li>
-<li>безопасное удаление файлов</li>
-<li>удаление файла ключа после импорта</li>
-<li>передача шифрования (галерея и т.д.)</li>
-<li>новые возможности (язык, v3 подписи)</li>
-<li>изменения интерфейса</li>
-<li>исправления ошибок</li>
+<li>Account adding crash on Froyo fixed</li>
+<li>Secure file deletion</li>
+<li>Option to delete key file after import</li>
+<li>Stream encryption/decryption (gallery, etc.)</li>
+<li>New options (language, force v3 signatures)</li>
+<li>Interface changes</li>
+<li>Bugfixes</li>
</ul>
<h2>1.0.5</h2>
<ul>
<li>новые языки: немецкий, итальянский</li>
-<li>уменьшение размера программы</li>
-<li>новый интерфейс настроек</li>
-<li>изменение вида для локализации</li>
-<li>исправление ошибки подписи</li>
+<li>Much smaller package, due to reduced BC sources</li>
+<li>New preferences GUI</li>
+<li>Layout adjustment for localization</li>
+<li>Signature bugfix</li>
</ul>
<h2>1.0.4</h2>
<ul>
-<li>исправление еще одной ошибки, возникающей в SDK</li>
+<li>Fixed another crash caused by some SDK bug with query builder</li>
</ul>
<h2>1.0.3</h2>
<ul>
-<li>исправление ошибок при шифровании/подписании и экспорте ключей</li>
+<li>Fixed crashes during encryption/signing and possibly key export</li>
</ul>
<h2>1.0.2</h2>
<ul>
-<li>фильтр списка ключей</li>
-<li>улучшение выбора ключей шифрования</li>
-<li>добавлена возможность шифровать файлы прямо из файлового менеджера</li>
-<li>исправления ошибок и новые возможности для интеграции с K-9 Mail</li>
+<li>Filterable key lists</li>
+<li>Smarter pre-selection of encryption keys</li>
+<li>New Intent handling for VIEW and SEND, allows files to be encrypted/decrypted out of file managers</li>
+<li>Fixes and additional features (key preselection) for K-9 Mail, new beta build available</li>
</ul>
<h2>1.0.1</h2>
<ul>
@@ -146,11 +160,11 @@ Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Pa
<h2>1.0.0</h2>
<ul>
<li>интеграция с K-9 Mail, APG поддерживает beta-версию K-9 Mail</li>
-<li>поддержка сторонних файловых менеджеров (в т.ч. ASTRO)</li>
+<li>Support of more file managers (including ASTRO)</li>
<li>Словенский перевод</li>
-<li>новая база данных, еще быстрее и компактнее</li>
-<li>добавлены обработчики для взаимодействия с другими приложениями</li>
-<li>исправления ошибок</li>
+<li>New database, much faster, less memory usage</li>
+<li>Defined Intents and content provider for other apps</li>
+<li>Bugfixes</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-sk/help_about.html b/OpenKeychain/src/main/res/raw-sk/help_about.html
deleted file mode 100644
index ab3c19375..000000000
--- a/OpenKeychain/src/main/res/raw-sk/help_about.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<html>
-<head></head>
-<body>
-<p><a href="http://www.openkeychain.org">http://www.openkeychain.org</a></p>
-<p><a href="http://www.openkeychain.org">OpenKeychain</a> is an OpenPGP implementation for Android.</p>
-<p>License: GPLv3+</p>
-
-<h2>Developers OpenKeychain</h2>
-<ul>
-<li>Dominik Schürmann (Lead developer)</li>
-<li>Ash Hughes (crypto patches)</li>
-<li>Brian C. Barnes</li>
-<li>Bahtiar 'kalkin' Gadimov (UI)</li>
-<li>Daniel Hammann</li>
-<li>Daniel Haß</li>
-<li>Greg Witczak</li>
-<li>Miroojin Bakshi</li>
-<li>Nikhil Peter Raj</li>
-<li>Paul Sarbinowski</li>
-<li>Sreeram Boyapati</li>
-<li>Vincent Breitmoser</li>
-<li>Tim Bray</li>
-</ul>
-<h2>Developers APG 1.x</h2>
-<ul>
-<li>Thialfihar (Lead developer)</li>
-<li>'Senecaso' (QRCode, sign key, upload key)</li>
-<li>Markus Doits</li>
-</ul>
-<h2>Libraries</h2>
-<ul>
-<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v4</a> (Apache License v2)</li>
-<li>
-<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (Apache License v2)</li>
-<li>
-<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache License v2)</li>
-<li>
-<a href="https://github.com/Bearded-Hen/Android-Bootstrap">Android-Bootstrap</a> (MIT License)</li>
-<li>
-<a href="http://code.google.com/p/zxing/">ZXing</a> (Apache License v2)</li>
-<li>
-<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
-<li>
-<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Apache License v2)</li>
-<li>
-<a href="https://github.com/johnkil/Android-AppMsg">Android AppMsg Library</a> (Apache License v2)</li>
-</ul>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-sk/help_changelog.html b/OpenKeychain/src/main/res/raw-sk/help_changelog.html
deleted file mode 100644
index ebada67f9..000000000
--- a/OpenKeychain/src/main/res/raw-sk/help_changelog.html
+++ /dev/null
@@ -1,156 +0,0 @@
-<html>
-<head></head>
-<body>
-<h2>2.7</h2>
-<ul>
-<li>Purple! (Dominik, Vincent)</li>
-<li>New key view design (Dominik, Vincent)</li>
-<li>New flat Android buttons (Dominik, Vincent)</li>
-<li>API fixes (Dominik)</li>
-<li>Keybase.io import (Tim Bray)</li>
-</ul>
-<h2>2.6.1</h2>
-<ul>
-<li>some fixes for regression bugs</li>
-</ul>
-<h2>2.6</h2>
-<ul>
-<li>key certifications (thanks to Vincent Breitmoser)</li>
-<li>support for GnuPG partial secret keys (thanks to Vincent Breitmoser)</li>
-<li>new design for signature verification</li>
-<li>custom key length (thanks to Greg Witczak)</li>
-<li>fix share-functionality from other apps</li>
-</ul>
-<h2>2.5</h2>
-<ul>
-<li>fix decryption of symmetric pgp messages/files</li>
-<li>refactored edit key screen (thanks to Ash Hughes)</li>
-<li>new modern design for encrypt/decrypt screens</li>
-<li>OpenPGP API version 3 (multiple api accounts, internal fixes, key lookup)</li>
-</ul>
-<h2>2.4</h2>
-<p>Thanks to all applicants of Google Summer of Code 2014 who made this release feature rich and bug free!
-Besides several small patches, a notable number of patches are made by the following people (in alphabetical order):
-Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Paul Sarbinowski, Sreeram Boyapati, Vincent Breitmoser.</p>
-<ul>
-<li>new unified key list</li>
-<li>colorized key fingerprint</li>
-<li>support for keyserver ports</li>
-<li>deactivate possibility to generate weak keys</li>
-<li>much more internal work on the API</li>
-<li>certify user ids</li>
-<li>keyserver query based on machine-readable output</li>
-<li>lock navigation drawer on tablets</li>
-<li>suggestions for emails on creation of keys</li>
-<li>search in public key lists</li>
-<li>and much more improvements and fixes…</li>
-</ul>
-<h2>2.3.1</h2>
-<ul>
-<li>hotfix for crash when upgrading from old versions</li>
-</ul>
-<h2>2.3</h2>
-<ul>
-<li>remove unnecessary export of public keys when exporting secret key (thanks to Ash Hughes)</li>
-<li>fix setting expiry dates on keys (thanks to Ash Hughes)</li>
-<li>more internal fixes when editing keys (thanks to Ash Hughes)</li>
-<li>querying keyservers directly from the import screen</li>
-<li>fix layout and dialog style on Android 2.2-3.0</li>
-<li>fix crash on keys with empty user ids</li>
-<li>fix crash and empty lists when coming back from signing screen</li>
-<li>Bouncy Castle (cryptography library) updated from 1.47 to 1.50 and build from source</li>
-<li>fix upload of key from signing screen</li>
-</ul>
-<h2>2.2</h2>
-<ul>
-<li>new design with navigation drawer</li>
-<li>new public key list design</li>
-<li>new public key view</li>
-<li>bug fixes for importing of keys</li>
-<li>key cross-certification (thanks to Ash Hughes)</li>
-<li>handle UTF-8 passwords properly (thanks to Ash Hughes)</li>
-<li>first version with new languages (thanks to the contributors on Transifex)</li>
-<li>sharing of keys via QR Codes fixed and improved</li>
-<li>package signature verification for API</li>
-</ul>
-<h2>2.1.1</h2>
-<ul>
-<li>API Updates, preparation for K-9 Mail integration</li>
-</ul>
-<h2>2.1</h2>
-<ul>
-<li>lots of bug fixes</li>
-<li>new API for developers</li>
-<li>PRNG bug fix by Google</li>
-</ul>
-<h2>2.0</h2>
-<ul>
-<li>complete redesign</li>
-<li>share public keys via qr codes, nfc beam</li>
-<li>sign keys</li>
-<li>upload keys to server</li>
-<li>fixes import issues</li>
-<li>new AIDL API</li>
-</ul>
-<h2>1.0.8</h2>
-<ul>
-<li>basic keyserver support</li>
-<li>app2sd</li>
-<li>more choices for pass phrase cache: 1, 2, 4, 8, hours</li>
-<li>translations: Norwegian (thanks, Sander Danielsen), Chinese (thanks, Zhang Fredrick)</li>
-<li>bugfixes</li>
-<li>optimizations</li>
-</ul>
-<h2>1.0.7</h2>
-<ul>
-<li>fixed problem with signature verification of texts with trailing newline</li>
-<li>more options for pass phrase cache time to live (20, 40, 60 mins)</li>
-</ul>
-<h2>1.0.6</h2>
-<ul>
-<li>account adding crash on Froyo fixed</li>
-<li>secure file deletion</li>
-<li>option to delete key file after import</li>
-<li>stream encryption/decryption (gallery, etc.)</li>
-<li>new options (language, force v3 signatures)</li>
-<li>interface changes</li>
-<li>bugfixes</li>
-</ul>
-<h2>1.0.5</h2>
-<ul>
-<li>German and Italian translation</li>
-<li>much smaller package, due to reduced BC sources</li>
-<li>new preferences GUI</li>
-<li>layout adjustment for localization</li>
-<li>signature bugfix</li>
-</ul>
-<h2>1.0.4</h2>
-<ul>
-<li>fixed another crash caused by some SDK bug with query builder</li>
-</ul>
-<h2>1.0.3</h2>
-<ul>
-<li>fixed crashes during encryption/signing and possibly key export</li>
-</ul>
-<h2>1.0.2</h2>
-<ul>
-<li>filterable key lists</li>
-<li>smarter pre-selection of encryption keys</li>
-<li>new Intent handling for VIEW and SEND, allows files to be encrypted/decrypted out of file managers</li>
-<li>fixes and additional features (key preselection) for K-9 Mail, new beta build available</li>
-</ul>
-<h2>1.0.1</h2>
-<ul>
-<li>GMail account listing was broken in 1.0.0, fixed again</li>
-</ul>
-<h2>1.0.0</h2>
-<ul>
-<li>K-9 Mail integration, APG supporting beta build of K-9 Mail</li>
-<li>support of more file managers (including ASTRO)</li>
-<li>Slovenian translation</li>
-<li>new database, much faster, less memory usage</li>
-<li>defined Intents and content provider for other apps</li>
-<li>bugfixes</li>
-</ul>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-sk/help_nfc_beam.html b/OpenKeychain/src/main/res/raw-sk/help_nfc_beam.html
deleted file mode 100644
index 88492731c..000000000
--- a/OpenKeychain/src/main/res/raw-sk/help_nfc_beam.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<html>
-<head></head>
-<body>
-<h2>How to receive keys</h2>
-<ol>
-<li>Go to your partners contacts and open the contact you want to share.</li>
-<li>Hold the two devices back to back (they have to be almost touching) and you’ll feel a vibration.</li>
-<li>After it vibrates you’ll see the content on your partners device turn into a card-like object with Star Trek warp speed-looking animation in the background.</li>
-<li>Tap the card and the content will then load on the your device.</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-sk/help_start.html b/OpenKeychain/src/main/res/raw-sk/help_start.html
deleted file mode 100644
index 51a76c01e..000000000
--- a/OpenKeychain/src/main/res/raw-sk/help_start.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<html>
-<head></head>
-<body>
-<h2>Getting started</h2>
-<p>First you need a personal secret key. Create one via the option menus in "Keys" or import existing secret keys. Afterwards, you can download your friends' keys or exchange them via QR Codes or NFC.</p>
-
-<p>It is recommended that you install <a href="market://details?id=org.openintents.filemanager">OI File Manager</a> for enhanced file selection and <a href="market://details?id=com.google.zxing.client.android">Barcode Scanner</a> to scan generated QR Codes. Clicking on the links will open Google Play Store or F-Droid for installation.</p>
-
-<h2>Applications</h2>
-<p>Several applications support OpenKeychain to encrypt/sign your private communication:<br><img src="apps_k9"><br>K-9 Mail: OpenKeychain support available in current <a href="https://github.com/k9mail/k-9/releases/tag/4.904">alpha build</a>!<br><a href="market://details?id=eu.siacs.conversations"><img src="apps_conversations"><br>Conversations</a>: Jabber/XMPP client<br><a href="market://details?id=org.lf_net.pgpunlocker"><img src="apps_pgpauth"><br>PGPAuth</a>: App to send a PGP-signed request to a server to open or close something, e.g. a door</p>
-
-<h2>I found a bug in OpenKeychain!</h2>
-<p>Please report the bug using the <a href="https://github.com/openpgp-keychain/openpgp-keychain/issues">issue tracker of OpenKeychain</a>.</p>
-
-<h2>Contribute</h2>
-<p>If you want to help us developing OpenKeychain by contributing code <a href="https://github.com/openpgp-keychain/openpgp-keychain#contribute-code">follow our small guide on Github</a>.</p>
-
-<h2>Translations</h2>
-<p>Help translating OpenKeychain! Everybody can participate at <a href="https://www.transifex.com/projects/p/openpgp-keychain/">OpenKeychain on Transifex</a>.</p>
-
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-sk/help_wot.html b/OpenKeychain/src/main/res/raw-sk/help_wot.html
deleted file mode 100644
index 29790139b..000000000
--- a/OpenKeychain/src/main/res/raw-sk/help_wot.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<html>
-<head></head>
-<body>
-<h2>Web of Trust</h2>
-<p>The Web of Trust describes the part of PGP which deals with creation and bookkeeping of certifications. It provides mechanisms to help the user keep track of who a public key belongs to, and share this information with others; To ensure the privacy of encrypted communication, it is essential to know that the public key you encrypt to belongs to the person you think it does.</p>
-
-<h2>Support in OpenKeychain</h2>
-<p>There is only basic support for Web of Trust in OpenKeychain. This is a heavy work in progress and subject to changes in upcoming releases.</p>
-
-<h2>Trust Model</h2>
-<p>Trust evaluation is based on the simple assumption that all keys which have secret keys available are trusted. Public keys which contain at least one user id certified by a trusted key will be marked with a green dot in the key listings. It is not (yet) possible to specify trust levels for certificates of other known public keys.</p>
-
-<h2>Certifying keys</h2>
-<p>Support for key certification is available, and user ids can be certified individually. It is not yet possible to specify the level of trust or create local and other special types of certificates.</p>
-
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-sk/nfc_beam_share.html b/OpenKeychain/src/main/res/raw-sk/nfc_beam_share.html
deleted file mode 100644
index 083e055c7..000000000
--- a/OpenKeychain/src/main/res/raw-sk/nfc_beam_share.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<head></head>
-<body>
-<ol>
-<li>Make sure that NFC is turned on in Settings &gt; More &gt; NFC and make sure that Android Beam is also on in the same section.</li>
-<li>Hold the two devices back to back (they have to be almost touching) and you'll feel a vibration.</li>
-<li>After it vibrates you'll see the content on your device turn into a card-like object with Star Trek warp speed-looking animation in the background.</li>
-<li>Tap the card and the content will then load on the other person’s device.</li>
-</ol>
-</body>
-</html>
diff --git a/OpenKeychain/src/main/res/raw-sl/help_about.html b/OpenKeychain/src/main/res/raw-sl/help_about.html
index 40c487265..85d26f0b3 100644
--- a/OpenKeychain/src/main/res/raw-sl/help_about.html
+++ b/OpenKeychain/src/main/res/raw-sl/help_about.html
@@ -5,27 +5,27 @@
<p><a href="http://www.openkeychain.org">OpenKeychain</a> je implementacija OpenPGP za Android.</p>
<p>Licenca: GPLv3+</p>
-<h2>Razvijalci OpenKeychain</h2>
+<h2>Developers</h2>
<ul>
-<li>Dominik Schürmann (glavni razvijalec)</li>
-<li>Ash Hughes (kriptografski popravki)</li>
+<li>Dominik Schürmann (Maintainer)</li>
+<li>Art O Cathain</li>
+<li>Ash Hughes</li>
<li>Brian C. Barnes</li>
-<li>Bahtiar 'kalkin' Gadimov (grafični vmesnik)</li>
+<li>Bahtiar 'kalkin' Gadimov</li>
+<li>Daniel Albert</li>
<li>Daniel Hammann</li>
<li>Daniel Haß</li>
<li>Greg Witczak</li>
+<li>'mar-v-in'</li>
+<li>Markus Doits</li>
<li>Miroojin Bakshi</li>
<li>Nikhil Peter Raj</li>
<li>Paul Sarbinowski</li>
+<li>'Senecaso'</li>
<li>Sreeram Boyapati</li>
-<li>Vincent Breitmoser</li>
+<li>Thialfihar (APG 1.x)</li>
<li>Tim Bray</li>
-</ul>
-<h2>Razvijalci APG 1.x</h2>
-<ul>
-<li>Thialfihar (glavni razvijalec)</li>
-<li>'Senecaso' (kode QR, podpisovanje ključev, nalaganje ključev na strežnik)</li>
-<li>Markus Doits</li>
+<li>Vincent Breitmoser</li>
</ul>
<h2>Knjižnice</h2>
<ul>
@@ -34,17 +34,21 @@
<li>
<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (licenca Apache v2)</li>
<li>
-<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (licenca Apache v2)</li>
+<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/Bearded-Hen/Android-Bootstrap">Android-Bootstrap</a> (licenca MIT)</li>
+<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (licenca Apache v2)</li>
<li>
<a href="http://code.google.com/p/zxing/">ZXing</a> (licenca Apache v2)</li>
<li>
<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (licenca MIT X11)</li>
<li>
<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (licenca Apache v2)</li>
-<li>
-<a href="https://github.com/johnkil/Android-AppMsg">Android AppMsg Library</a> (licenca Apache v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-sl/help_changelog.html b/OpenKeychain/src/main/res/raw-sl/help_changelog.html
index 1b48552ab..e5ff10005 100644
--- a/OpenKeychain/src/main/res/raw-sl/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw-sl/help_changelog.html
@@ -1,6 +1,20 @@
<html>
<head></head>
<body>
+<h2>2.8</h2>
+<ul>
+<li>So many bugs have been fixed in this release that we focus on the main new features</li>
+<li>Key edit: awesome new design, key revocation</li>
+<li>Key import: awesome new design, secure keyserver connections via hkps, keyserver resolving via DNS SRV records</li>
+<li>New first time screen</li>
+<li>New create key screen: autocompletion of name and email based on your personal Android accounts</li>
+<li>File encryption: awesome new design, support for encrypting multiple files</li>
+<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>
+</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>
+
<h2>2.7</h2>
<ul>
<li>Vijolična! (Dominik, Vincent)</li>
@@ -11,21 +25,21 @@
</ul>
<h2>2.6.1</h2>
<ul>
-<li>popravki hroščev ob posodobitvi iz prejšnjih različic</li>
+<li>Some fixes for regression bugs</li>
</ul>
<h2>2.6</h2>
<ul>
-<li>overjanje ključev (hvala, Vincent Breitmoser)</li>
-<li>podpora delnim zasebnim ključem GnuPG (hvala, Vincent Breitmoser)</li>
-<li>nova podoba za preverjanje podpisov</li>
-<li>izbirna dolžina ključev (hvala, Greg Witczak)</li>
-<li>popravek za deljenje iz drugih aplikacij</li>
+<li>Key certifications (thanks to Vincent Breitmoser)</li>
+<li>Support for GnuPG partial secret keys (thanks to Vincent Breitmoser)</li>
+<li>New design for signature verification</li>
+<li>Custom key length (thanks to Greg Witczak)</li>
+<li>Fix share-functionality from other apps</li>
</ul>
<h2>2.5</h2>
<ul>
-<li>popravek pri dešifriranju simetrično šifriranih sporočil pgp</li>
-<li>popravki kode za okno 'uredi ključ' (hvala, Ash Hughes)</li>
-<li>nova, sodobnejša podoba za okna 'šifriraj/dešifriraj'</li>
+<li>Fix decryption of symmetric pgp messages/files</li>
+<li>Refactored edit key screen (thanks to Ash Hughes)</li>
+<li>New modern design for encrypt/decrypt screens</li>
<li>API OpenPGP, verzija 3 (podpora za več API računov, interni popravki, iskanje ključev)</li>
</ul>
<h2>2.4</h2>
@@ -33,45 +47,45 @@
Največje število popravkov je bilo s strani naslednjih ljudi (po abecednem vrstnem redu):
Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Paul Sarbinowski, Sreeram Boyapati, Vincent Breitmoser.</p>
<ul>
-<li>nov enoten seznam ključev</li>
-<li>obarvanje prstnih odtisov ključev</li>
-<li>podpora za vrata strežnikov</li>
-<li>odstranitev možnosti generiranja šibkih ključev</li>
-<li>veliko internega dela na API-ju</li>
-<li>overjanje uporabniških ID-jev</li>
-<li>iskanje po strežnikih na osnovi strojno berljivih izpisov</li>
-<li>zaklep navigacijskega poteznika na tabličnih računalnikih</li>
-<li>namigi za izbiro e-poštnih naslovov pri ustvarjanju ključev</li>
-<li>iskanje po seznamu javnih ključev</li>
-<li>in še veliko drugih izboljšav in popravkov...</li>
+<li>New unified key list</li>
+<li>Colorized key fingerprint</li>
+<li>Support for keyserver ports</li>
+<li>Deactivate possibility to generate weak keys</li>
+<li>Much more internal work on the API</li>
+<li>Certify user ids</li>
+<li>Keyserver query based on machine-readable output</li>
+<li>Lock navigation drawer on tablets</li>
+<li>Suggestions for emails on creation of keys</li>
+<li>Search in public key lists</li>
+<li>And much more improvements and fixes…</li>
</ul>
<h2>2.3.1</h2>
<ul>
-<li>sesutje pri nadgraditvi iz starejših različic, hitri popravek</li>
+<li>Hotfix for crash when upgrading from old versions</li>
</ul>
<h2>2.3</h2>
<ul>
-<li>odprava nepotrebnega hkratnega izvoza javnih ključev ob izvozu zasebnih (hvala, Ash Hughes)</li>
-<li>popravek nastavitev datumov poteka ključev (hvala, Ash Hughes)</li>
-<li>več internih popravkov pri urejanju ključev (hvala, Ash Hughes)</li>
-<li>iskanje strežnikov naravnost iz uvoznega okna</li>
-<li>popravki za razporeditev in pogovorna okna na Androidu 2.2-3.0</li>
-<li>sesutje pri ključih s praznim uporabniškim ID-jem, popravek</li>
-<li>sesutje in prazen seznam ob povratku iz podpisovalnega okna, popravek</li>
+<li>Remove unnecessary export of public keys when exporting secret key (thanks to Ash Hughes)</li>
+<li>Fix setting expiry dates on keys (thanks to Ash Hughes)</li>
+<li>More internal fixes when editing keys (thanks to Ash Hughes)</li>
+<li>Querying keyservers directly from the import screen</li>
+<li>Fix layout and dialog style on Android 2.2-3.0</li>
+<li>Fix crash on keys with empty user ids</li>
+<li>Fix crash and empty lists when coming back from signing screen</li>
<li>Bouncy Castle (kriptografska knjižnica) nadgrajen iz 1.47 na 1.50 in izgrajen iz izvorne kode</li>
-<li>nalaganje ključev iz podpisovalnega okna, popravek</li>
+<li>Fix upload of key from signing screen</li>
</ul>
<h2>2.2</h2>
<ul>
-<li>nova podoba za navigacijski poteznik</li>
-<li>nova podoba za seznam javnih ključev</li>
-<li>nova podoba okna za ogled posameznih javnih ključev</li>
-<li>odprava hroščev pri uvozu ključev</li>
-<li>navzkrižno overjanje ključev (hvala, Ash Hughes)</li>
-<li>pravilno upravljanje gesel v formatu UTF-8 (hvala, Ash Hughes)</li>
-<li>prva različica z novimi jeziki (hvala prevajalcem iz portala Transifex)</li>
-<li>izbojšave in popravki za deljenje ključev preko kod QR</li>
-<li>preverjanje podpisov paketov za API</li>
+<li>New design with navigation drawer</li>
+<li>New public key list design</li>
+<li>New public key view</li>
+<li>Bug fixes for importing of keys</li>
+<li>Key cross-certification (thanks to Ash Hughes)</li>
+<li>Handle UTF-8 passwords properly (thanks to Ash Hughes)</li>
+<li>First version with new languages (thanks to the contributors on Transifex)</li>
+<li>Sharing of keys via QR Codes fixed and improved</li>
+<li>Package signature verification for API</li>
</ul>
<h2>2.1.1</h2>
<ul>
@@ -79,65 +93,65 @@ Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Pa
</ul>
<h2>2.1</h2>
<ul>
-<li>veliko število popravkov hroščev</li>
-<li>nov API za razvijalce</li>
+<li>Lots of bug fixes</li>
+<li>New API for developers</li>
<li>popravek za hrošč PRNG, prispeval Google</li>
</ul>
<h2>2.0</h2>
<ul>
-<li>kompletna prenova izgleda</li>
-<li>deljenje javnih ključev preko kod QR in 'NFC Beam-a'</li>
-<li>podpisovanje ključev</li>
-<li>nalaganje ključev na strežnik</li>
-<li>popravki problemov z uvozom</li>
-<li>nov API za AIDL</li>
+<li>Complete redesign</li>
+<li>Share public keys via qr codes, nfc beam</li>
+<li>Sign keys</li>
+<li>Upload keys to server</li>
+<li>Fixes import issues</li>
+<li>New AIDL API</li>
</ul>
<h2>1.0.8</h2>
<ul>
-<li>osnovna podpora za strežnike javnih ključev</li>
-<li>podpora app2sd</li>
-<li>več možnosti pomnjenja gesla: 1, 2, 4, 8 ur</li>
-<li>prevodi: Norveško (hvala, Sander Danielsen), Kitajsko (hvala, Zhang Fredrick)</li>
-<li>popravki hroščev</li>
-<li>optimizacije</li>
+<li>Basic keyserver support</li>
+<li>App2sd</li>
+<li>More choices for pass phrase cache: 1, 2, 4, 8, hours</li>
+<li>Translations: Norwegian (thanks, Sander Danielsen), Chinese (thanks, Zhang Fredrick)</li>
+<li>Bugfixes</li>
+<li>Optimizations</li>
</ul>
<h2>1.0.7</h2>
<ul>
-<li>odpravljen problem pri preverjanju podpisov besedil</li>
-<li>več možnosti za pomnjenje gesla v spominu (20, 40, 60 min) </li>
+<li>Fixed problem with signature verification of texts with trailing newline</li>
+<li>More options for pass phrase cache time to live (20, 40, 60 mins)</li>
</ul>
<h2>1.0.6</h2>
<ul>
-<li>sesutje ob dodajanju računa na napravah Froyo, popravek</li>
-<li>varno brisanje datotek</li>
-<li>možnost izbrisa datoteke s ključem po uvozu v aplikacijo</li>
-<li>šifriranje/dešifriranje toka (galerija, itd.)</li>
-<li>nove opcije (jezik, vsili podpis v3)</li>
-<li>spremembe vmesnika</li>
-<li>popravki hroščev</li>
+<li>Account adding crash on Froyo fixed</li>
+<li>Secure file deletion</li>
+<li>Option to delete key file after import</li>
+<li>Stream encryption/decryption (gallery, etc.)</li>
+<li>New options (language, force v3 signatures)</li>
+<li>Interface changes</li>
+<li>Bugfixes</li>
</ul>
<h2>1.0.5</h2>
<ul>
<li>Nemški in Italijanski prevod</li>
-<li>veliko manjša velikost paketa</li>
-<li>nove nastavitve grafičnega vmesnika</li>
-<li>prilagoditev vmesnika za lokalizacije</li>
-<li>popravki pri podpisovanju</li>
+<li>Much smaller package, due to reduced BC sources</li>
+<li>New preferences GUI</li>
+<li>Layout adjustment for localization</li>
+<li>Signature bugfix</li>
</ul>
<h2>1.0.4</h2>
<ul>
-<li>sesutje zaradi hrošča v SDK, popravek</li>
+<li>Fixed another crash caused by some SDK bug with query builder</li>
</ul>
<h2>1.0.3</h2>
<ul>
-<li>sesutja ob šifriranju/podpisovanju in verjetno tudi izvozu ključev, popravek</li>
+<li>Fixed crashes during encryption/signing and possibly key export</li>
</ul>
<h2>1.0.2</h2>
<ul>
-<li>filtriranje seznama ključev</li>
-<li>pametnejši predizbor šifrirnih ključev</li>
-<li>nov način upravljanja z 'nameni' za 'ODPRI' in 'POŠLJI', omogoča šifriranje/dešifriranje datotek izven upravljalnikov datotek.</li>
-<li>popravki in dodatne funkcije (predizbira ključev) za aplikacijo 'K-9 Mail', nova beta različica</li>
+<li>Filterable key lists</li>
+<li>Smarter pre-selection of encryption keys</li>
+<li>New Intent handling for VIEW and SEND, allows files to be encrypted/decrypted out of file managers</li>
+<li>Fixes and additional features (key preselection) for K-9 Mail, new beta build available</li>
</ul>
<h2>1.0.1</h2>
<ul>
@@ -146,11 +160,11 @@ Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Pa
<h2>1.0.0</h2>
<ul>
<li>integracija z aplikacijo 'K-9 Mail', APG podpira različico beta te aplikacije</li>
-<li>podpora za več upravljalnikov datotek (mdr. Astro)</li>
+<li>Support of more file managers (including ASTRO)</li>
<li>Slovenski prevod</li>
-<li>nova baza podatkov, hitrejše delovanje, manjša raba pomnilnika</li>
-<li>definirani 'nameni' in vsebina ponudnikov za druge aplikacije</li>
-<li>popravki hroščev</li>
+<li>New database, much faster, less memory usage</li>
+<li>Defined Intents and content provider for other apps</li>
+<li>Bugfixes</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-tr/help_about.html b/OpenKeychain/src/main/res/raw-tr/help_about.html
index db577c6a3..08c4706ee 100644
--- a/OpenKeychain/src/main/res/raw-tr/help_about.html
+++ b/OpenKeychain/src/main/res/raw-tr/help_about.html
@@ -5,27 +5,27 @@
<p><a href="http://www.openkeychain.org">OpenKeychain</a> is an OpenPGP implementation for Android.</p>
<p>Lisans: GPLv3+</p>
-<h2>Developers OpenKeychain</h2>
+<h2>Developers</h2>
<ul>
-<li>Dominik Schürmann (Baş geliştirici)</li>
-<li>Ash Hughes (kripto yamaları)</li>
+<li>Dominik Schürmann (Maintainer)</li>
+<li>Art O Cathain</li>
+<li>Ash Hughes</li>
<li>Brian C. Barnes</li>
-<li>Bahtiar 'kalkin' Gadimov (Arayüz)</li>
+<li>Bahtiar 'kalkin' Gadimov</li>
+<li>Daniel Albert</li>
<li>Daniel Hammann</li>
<li>Daniel Haß</li>
<li>Greg Witczak</li>
+<li>'mar-v-in'</li>
+<li>Markus Doits</li>
<li>Miroojin Bakshi</li>
<li>Nikhil Peter Raj</li>
<li>Paul Sarbinowski</li>
+<li>'Senecaso'</li>
<li>Sreeram Boyapati</li>
-<li>Vincent Breitmoser</li>
+<li>Thialfihar (APG 1.x)</li>
<li>Tim Bray</li>
-</ul>
-<h2>Geliştiriciler APG 1.x</h2>
-<ul>
-<li>Thialfihar (Lead developer)</li>
-<li>'Senecaso' (QR Kodu, anahtar imzalama, anahtar yükleme)</li>
-<li>Markus Doits</li>
+<li>Vincent Breitmoser</li>
</ul>
<h2>Kütüphaneler</h2>
<ul>
@@ -34,17 +34,21 @@
<li>
<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache License v2)</li>
+<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/Bearded-Hen/Android-Bootstrap">Android-Bootstrap</a> (MIT License)</li>
+<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache License v2)</li>
<li>
<a href="http://code.google.com/p/zxing/">ZXing</a> (Apache License v2)</li>
<li>
<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
<li>
<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Apache License v2)</li>
-<li>
-<a href="https://github.com/johnkil/Android-AppMsg">Android AppMsg Library</a> (Apache License v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-tr/help_changelog.html b/OpenKeychain/src/main/res/raw-tr/help_changelog.html
index ebada67f9..e27ac7475 100644
--- a/OpenKeychain/src/main/res/raw-tr/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw-tr/help_changelog.html
@@ -1,6 +1,20 @@
<html>
<head></head>
<body>
+<h2>2.8</h2>
+<ul>
+<li>So many bugs have been fixed in this release that we focus on the main new features</li>
+<li>Key edit: awesome new design, key revocation</li>
+<li>Key import: awesome new design, secure keyserver connections via hkps, keyserver resolving via DNS SRV records</li>
+<li>New first time screen</li>
+<li>New create key screen: autocompletion of name and email based on your personal Android accounts</li>
+<li>File encryption: awesome new design, support for encrypting multiple files</li>
+<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>
+</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>
+
<h2>2.7</h2>
<ul>
<li>Purple! (Dominik, Vincent)</li>
@@ -11,21 +25,21 @@
</ul>
<h2>2.6.1</h2>
<ul>
-<li>some fixes for regression bugs</li>
+<li>Some fixes for regression bugs</li>
</ul>
<h2>2.6</h2>
<ul>
-<li>key certifications (thanks to Vincent Breitmoser)</li>
-<li>support for GnuPG partial secret keys (thanks to Vincent Breitmoser)</li>
-<li>new design for signature verification</li>
-<li>custom key length (thanks to Greg Witczak)</li>
-<li>fix share-functionality from other apps</li>
+<li>Key certifications (thanks to Vincent Breitmoser)</li>
+<li>Support for GnuPG partial secret keys (thanks to Vincent Breitmoser)</li>
+<li>New design for signature verification</li>
+<li>Custom key length (thanks to Greg Witczak)</li>
+<li>Fix share-functionality from other apps</li>
</ul>
<h2>2.5</h2>
<ul>
-<li>fix decryption of symmetric pgp messages/files</li>
-<li>refactored edit key screen (thanks to Ash Hughes)</li>
-<li>new modern design for encrypt/decrypt screens</li>
+<li>Fix decryption of symmetric pgp messages/files</li>
+<li>Refactored edit key screen (thanks to Ash Hughes)</li>
+<li>New modern design for encrypt/decrypt screens</li>
<li>OpenPGP API version 3 (multiple api accounts, internal fixes, key lookup)</li>
</ul>
<h2>2.4</h2>
@@ -33,45 +47,45 @@
Besides several small patches, a notable number of patches are made by the following people (in alphabetical order):
Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Paul Sarbinowski, Sreeram Boyapati, Vincent Breitmoser.</p>
<ul>
-<li>new unified key list</li>
-<li>colorized key fingerprint</li>
-<li>support for keyserver ports</li>
-<li>deactivate possibility to generate weak keys</li>
-<li>much more internal work on the API</li>
-<li>certify user ids</li>
-<li>keyserver query based on machine-readable output</li>
-<li>lock navigation drawer on tablets</li>
-<li>suggestions for emails on creation of keys</li>
-<li>search in public key lists</li>
-<li>and much more improvements and fixes…</li>
+<li>New unified key list</li>
+<li>Colorized key fingerprint</li>
+<li>Support for keyserver ports</li>
+<li>Deactivate possibility to generate weak keys</li>
+<li>Much more internal work on the API</li>
+<li>Certify user ids</li>
+<li>Keyserver query based on machine-readable output</li>
+<li>Lock navigation drawer on tablets</li>
+<li>Suggestions for emails on creation of keys</li>
+<li>Search in public key lists</li>
+<li>And much more improvements and fixes…</li>
</ul>
<h2>2.3.1</h2>
<ul>
-<li>hotfix for crash when upgrading from old versions</li>
+<li>Hotfix for crash when upgrading from old versions</li>
</ul>
<h2>2.3</h2>
<ul>
-<li>remove unnecessary export of public keys when exporting secret key (thanks to Ash Hughes)</li>
-<li>fix setting expiry dates on keys (thanks to Ash Hughes)</li>
-<li>more internal fixes when editing keys (thanks to Ash Hughes)</li>
-<li>querying keyservers directly from the import screen</li>
-<li>fix layout and dialog style on Android 2.2-3.0</li>
-<li>fix crash on keys with empty user ids</li>
-<li>fix crash and empty lists when coming back from signing screen</li>
+<li>Remove unnecessary export of public keys when exporting secret key (thanks to Ash Hughes)</li>
+<li>Fix setting expiry dates on keys (thanks to Ash Hughes)</li>
+<li>More internal fixes when editing keys (thanks to Ash Hughes)</li>
+<li>Querying keyservers directly from the import screen</li>
+<li>Fix layout and dialog style on Android 2.2-3.0</li>
+<li>Fix crash on keys with empty user ids</li>
+<li>Fix crash and empty lists when coming back from signing screen</li>
<li>Bouncy Castle (cryptography library) updated from 1.47 to 1.50 and build from source</li>
-<li>fix upload of key from signing screen</li>
+<li>Fix upload of key from signing screen</li>
</ul>
<h2>2.2</h2>
<ul>
-<li>new design with navigation drawer</li>
-<li>new public key list design</li>
-<li>new public key view</li>
-<li>bug fixes for importing of keys</li>
-<li>key cross-certification (thanks to Ash Hughes)</li>
-<li>handle UTF-8 passwords properly (thanks to Ash Hughes)</li>
-<li>first version with new languages (thanks to the contributors on Transifex)</li>
-<li>sharing of keys via QR Codes fixed and improved</li>
-<li>package signature verification for API</li>
+<li>New design with navigation drawer</li>
+<li>New public key list design</li>
+<li>New public key view</li>
+<li>Bug fixes for importing of keys</li>
+<li>Key cross-certification (thanks to Ash Hughes)</li>
+<li>Handle UTF-8 passwords properly (thanks to Ash Hughes)</li>
+<li>First version with new languages (thanks to the contributors on Transifex)</li>
+<li>Sharing of keys via QR Codes fixed and improved</li>
+<li>Package signature verification for API</li>
</ul>
<h2>2.1.1</h2>
<ul>
@@ -79,65 +93,65 @@ Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Pa
</ul>
<h2>2.1</h2>
<ul>
-<li>lots of bug fixes</li>
-<li>new API for developers</li>
+<li>Lots of bug fixes</li>
+<li>New API for developers</li>
<li>PRNG bug fix by Google</li>
</ul>
<h2>2.0</h2>
<ul>
-<li>complete redesign</li>
-<li>share public keys via qr codes, nfc beam</li>
-<li>sign keys</li>
-<li>upload keys to server</li>
-<li>fixes import issues</li>
-<li>new AIDL API</li>
+<li>Complete redesign</li>
+<li>Share public keys via qr codes, nfc beam</li>
+<li>Sign keys</li>
+<li>Upload keys to server</li>
+<li>Fixes import issues</li>
+<li>New AIDL API</li>
</ul>
<h2>1.0.8</h2>
<ul>
-<li>basic keyserver support</li>
-<li>app2sd</li>
-<li>more choices for pass phrase cache: 1, 2, 4, 8, hours</li>
-<li>translations: Norwegian (thanks, Sander Danielsen), Chinese (thanks, Zhang Fredrick)</li>
-<li>bugfixes</li>
-<li>optimizations</li>
+<li>Basic keyserver support</li>
+<li>App2sd</li>
+<li>More choices for pass phrase cache: 1, 2, 4, 8, hours</li>
+<li>Translations: Norwegian (thanks, Sander Danielsen), Chinese (thanks, Zhang Fredrick)</li>
+<li>Bugfixes</li>
+<li>Optimizations</li>
</ul>
<h2>1.0.7</h2>
<ul>
-<li>fixed problem with signature verification of texts with trailing newline</li>
-<li>more options for pass phrase cache time to live (20, 40, 60 mins)</li>
+<li>Fixed problem with signature verification of texts with trailing newline</li>
+<li>More options for pass phrase cache time to live (20, 40, 60 mins)</li>
</ul>
<h2>1.0.6</h2>
<ul>
-<li>account adding crash on Froyo fixed</li>
-<li>secure file deletion</li>
-<li>option to delete key file after import</li>
-<li>stream encryption/decryption (gallery, etc.)</li>
-<li>new options (language, force v3 signatures)</li>
-<li>interface changes</li>
-<li>bugfixes</li>
+<li>Account adding crash on Froyo fixed</li>
+<li>Secure file deletion</li>
+<li>Option to delete key file after import</li>
+<li>Stream encryption/decryption (gallery, etc.)</li>
+<li>New options (language, force v3 signatures)</li>
+<li>Interface changes</li>
+<li>Bugfixes</li>
</ul>
<h2>1.0.5</h2>
<ul>
<li>German and Italian translation</li>
-<li>much smaller package, due to reduced BC sources</li>
-<li>new preferences GUI</li>
-<li>layout adjustment for localization</li>
-<li>signature bugfix</li>
+<li>Much smaller package, due to reduced BC sources</li>
+<li>New preferences GUI</li>
+<li>Layout adjustment for localization</li>
+<li>Signature bugfix</li>
</ul>
<h2>1.0.4</h2>
<ul>
-<li>fixed another crash caused by some SDK bug with query builder</li>
+<li>Fixed another crash caused by some SDK bug with query builder</li>
</ul>
<h2>1.0.3</h2>
<ul>
-<li>fixed crashes during encryption/signing and possibly key export</li>
+<li>Fixed crashes during encryption/signing and possibly key export</li>
</ul>
<h2>1.0.2</h2>
<ul>
-<li>filterable key lists</li>
-<li>smarter pre-selection of encryption keys</li>
-<li>new Intent handling for VIEW and SEND, allows files to be encrypted/decrypted out of file managers</li>
-<li>fixes and additional features (key preselection) for K-9 Mail, new beta build available</li>
+<li>Filterable key lists</li>
+<li>Smarter pre-selection of encryption keys</li>
+<li>New Intent handling for VIEW and SEND, allows files to be encrypted/decrypted out of file managers</li>
+<li>Fixes and additional features (key preselection) for K-9 Mail, new beta build available</li>
</ul>
<h2>1.0.1</h2>
<ul>
@@ -146,11 +160,11 @@ Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Pa
<h2>1.0.0</h2>
<ul>
<li>K-9 Mail integration, APG supporting beta build of K-9 Mail</li>
-<li>support of more file managers (including ASTRO)</li>
+<li>Support of more file managers (including ASTRO)</li>
<li>Slovenian translation</li>
-<li>new database, much faster, less memory usage</li>
-<li>defined Intents and content provider for other apps</li>
-<li>bugfixes</li>
+<li>New database, much faster, less memory usage</li>
+<li>Defined Intents and content provider for other apps</li>
+<li>Bugfixes</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-uk/help_about.html b/OpenKeychain/src/main/res/raw-uk/help_about.html
index f6e65071c..92fd7db13 100644
--- a/OpenKeychain/src/main/res/raw-uk/help_about.html
+++ b/OpenKeychain/src/main/res/raw-uk/help_about.html
@@ -5,27 +5,27 @@
<p><a href="http://www.openkeychain.org">OpenKeychain</a> імплементація OpenPGP для Андроїду.</p>
<p>Ліцензія: GPLv3+</p>
-<h2>Розробники OpenPGP Keychain</h2>
+<h2>Developers</h2>
<ul>
-<li>Домінік Шурман (основний розробник)</li>
-<li>Аш Гюдж (латки шифрування)</li>
+<li>Dominik Schürmann (Maintainer)</li>
+<li>Art O Cathain</li>
+<li>Ash Hughes</li>
<li>Браян С. Барнс</li>
-<li>Бахтіяр 'kalkin' Ґадімов (інтерфейс)</li>
+<li>Bahtiar 'kalkin' Gadimov</li>
+<li>Daniel Albert</li>
<li>Даніель Гаман</li>
<li>Даніель Габ</li>
<li>Ґреґ Вітчак</li>
+<li>'mar-v-in'</li>
+<li>Маркус Дойтс</li>
<li>Міроджін Бакші</li>
<li>Ніхіл Петер Радж</li>
<li>Пауль Сарбіновський</li>
+<li>'Senecaso'</li>
<li>Срірам Вояпаті</li>
-<li>Вінсент Брейтмозер</li>
+<li>Thialfihar (APG 1.x)</li>
<li>Тім Брей</li>
-</ul>
-<h2>Розробники APG 1.x</h2>
-<ul>
-<li>Thialfihar (основний розробник)</li>
-<li>'Senecaso' (штрих-код, підпис і завантаження ключів)</li>
-<li>Маркус Дойтс</li>
+<li>Вінсент Брейтмозер</li>
</ul>
<h2>Бібліотеки</h2>
<ul>
@@ -34,17 +34,21 @@
<li>
<a href="http://developer.android.com/tools/support-library/index.html">Бібліотека підтримки Android в.7 'appcompat'</a> (Ліцензія Apache в.2)</li>
<li>
-<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (ліцензія Apache в. 2)</li>
+<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/Bearded-Hen/Android-Bootstrap">Android-Bootstrap</a> (ліцензія МІТ)</li>
+<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (ліцензія Apache в. 2)</li>
<li>
<a href="http://code.google.com/p/zxing/">ZXing</a> (ліцензія Apache в.2)</li>
<li>
<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (ліцензія MIT X11)</li>
<li>
<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (ліцензія Apache в.2)</li>
-<li>
-<a href="https://github.com/johnkil/Android-AppMsg">Бібліотека Android AppMsg Library</a> (Ліцензія Apache в. 2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-uk/help_changelog.html b/OpenKeychain/src/main/res/raw-uk/help_changelog.html
index b40eca76e..7ecb25c2b 100644
--- a/OpenKeychain/src/main/res/raw-uk/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw-uk/help_changelog.html
@@ -1,6 +1,20 @@
<html>
<head></head>
<body>
+<h2>2.8</h2>
+<ul>
+<li>So many bugs have been fixed in this release that we focus on the main new features</li>
+<li>Key edit: awesome new design, key revocation</li>
+<li>Key import: awesome new design, secure keyserver connections via hkps, keyserver resolving via DNS SRV records</li>
+<li>New first time screen</li>
+<li>New create key screen: autocompletion of name and email based on your personal Android accounts</li>
+<li>File encryption: awesome new design, support for encrypting multiple files</li>
+<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>
+</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>
+
<h2>2.7</h2>
<ul>
<li>Багряний! (Домінік, Вінсент)</li>
@@ -11,21 +25,21 @@
</ul>
<h2>2.6.1</h2>
<ul>
-<li>деякі виправлення для накопичених вад</li>
+<li>Some fixes for regression bugs</li>
</ul>
<h2>2.6</h2>
<ul>
-<li>сертифікації ключів (завдяки Вінсенту Бреймозеру)</li>
-<li>підтримка часткових секретних ключів для GnuPG (завдяки Вінсенту Брейтмозеру)</li>
-<li>новий дизайн для перевірки підпису</li>
-<li>власна довжина ключа (завдяки Ґреґу Вітчаку)</li>
-<li>виправлено функцію поширення з інших програм</li>
+<li>Key certifications (thanks to Vincent Breitmoser)</li>
+<li>Support for GnuPG partial secret keys (thanks to Vincent Breitmoser)</li>
+<li>New design for signature verification</li>
+<li>Custom key length (thanks to Greg Witczak)</li>
+<li>Fix share-functionality from other apps</li>
</ul>
<h2>2.5</h2>
<ul>
-<li>виправлено опис симетричних повідомлень/файлів pgp</li>
-<li>перероблено екран редагування ключа (завдяки Ash Hughes)</li>
-<li>новий сучасний дизайн для екранів шифрування/розшифрування</li>
+<li>Fix decryption of symmetric pgp messages/files</li>
+<li>Refactored edit key screen (thanks to Ash Hughes)</li>
+<li>New modern design for encrypt/decrypt screens</li>
<li>OpenPGP API версія 3 (підтримка кількох профілів, внутрішні зміни, пошук ключа)</li>
</ul>
<h2>2.4</h2>
@@ -33,45 +47,45 @@
Крім окремих незначних латок, значне число латок зробили наступні люди (у алфавітному порядку):
Даніель Гаман, Даніель Габ, Ґреґ Вітчак, Міроджін Бакші, Ніхіл Петер Радж, Пауль Сарбіновський, Срірам Бояпаті, Вінсент Брейтмосер.</p>
<ul>
-<li>новий єдиний перелік ключів</li>
-<li>кольоровий відбиток ключа</li>
-<li>підтримка для портів сервера ключів</li>
-<li>деактивувати можливість генерувати слабкі ключі</li>
-<li>набагато більше внутрішньої роботи на API</li>
-<li>сертифікувати ідентифікатори користувача</li>
-<li>запит сервера ключів на основі машиночитабельного виводу</li>
-<li>блокувати панель навігації на планшетах</li>
-<li>пропозиції для листів при створенні ключів</li>
-<li>пошук у списках відкритих ключів</li>
-<li>і багато інших покращень та виправлень…</li>
+<li>New unified key list</li>
+<li>Colorized key fingerprint</li>
+<li>Support for keyserver ports</li>
+<li>Deactivate possibility to generate weak keys</li>
+<li>Much more internal work on the API</li>
+<li>Certify user ids</li>
+<li>Keyserver query based on machine-readable output</li>
+<li>Lock navigation drawer on tablets</li>
+<li>Suggestions for emails on creation of keys</li>
+<li>Search in public key lists</li>
+<li>And much more improvements and fixes…</li>
</ul>
<h2>2.3.1</h2>
<ul>
-<li>свіже виправлення збою при оновленні із старих версій</li>
+<li>Hotfix for crash when upgrading from old versions</li>
</ul>
<h2>2.3</h2>
<ul>
-<li>видалений непотрібний експорт публічного ключа при експорті секретного ключа (завдяки Ash Hughes)</li>
-<li>виправлено налаштування дат дії ключів (завдяки Ash Hughes)</li>
-<li>більше внутрішніх виправлень при редагуванні ключів (завдяки Ash Hughes)</li>
-<li>сервери запитаного ключа безпосередньо з екрану імпорту</li>
-<li>виправлено стиль розмітки і діалогу у Андроїд 2.2-3.0</li>
-<li>виправлено збої, коли ключ мав порожній ідентифікатор користувача</li>
-<li>виправлено збої та порожні списки при поверненні з екрану реєстрації</li>
+<li>Remove unnecessary export of public keys when exporting secret key (thanks to Ash Hughes)</li>
+<li>Fix setting expiry dates on keys (thanks to Ash Hughes)</li>
+<li>More internal fixes when editing keys (thanks to Ash Hughes)</li>
+<li>Querying keyservers directly from the import screen</li>
+<li>Fix layout and dialog style on Android 2.2-3.0</li>
+<li>Fix crash on keys with empty user ids</li>
+<li>Fix crash and empty lists when coming back from signing screen</li>
<li>Bouncy Castle (криптографічна бібліотека) оновлена з версії 1.47 до 1.50 та зібрана з коду</li>
-<li>виправлено завантаження ключа з вікна реєстрації</li>
+<li>Fix upload of key from signing screen</li>
</ul>
<h2>2.2</h2>
<ul>
-<li>новий дизайн з бічною панеллю</li>
-<li>новий дизайн списку ключів</li>
-<li>новий вид перегляду ключа</li>
-<li>виправлення помилок імпорту ключів</li>
-<li>Крос-сертифікація ключів (завдяки Ash Hughes)</li>
-<li>правильна обробка паролів в UTF-8 (завдяки Ash Hughes)</li>
-<li>перша версія з новими мовами (завдяки перекладачам на Transifex)</li>
-<li>виправлення і поліпшення передачі ключів через QR коди</li>
-<li>перевірка підписів пакетів для API</li>
+<li>New design with navigation drawer</li>
+<li>New public key list design</li>
+<li>New public key view</li>
+<li>Bug fixes for importing of keys</li>
+<li>Key cross-certification (thanks to Ash Hughes)</li>
+<li>Handle UTF-8 passwords properly (thanks to Ash Hughes)</li>
+<li>First version with new languages (thanks to the contributors on Transifex)</li>
+<li>Sharing of keys via QR Codes fixed and improved</li>
+<li>Package signature verification for API</li>
</ul>
<h2>2.1.1</h2>
<ul>
@@ -79,65 +93,65 @@
</ul>
<h2>2.1</h2>
<ul>
-<li>безліч виправлень помилок</li>
-<li>новий API для розробників</li>
+<li>Lots of bug fixes</li>
+<li>New API for developers</li>
<li>Виправлення вади генератора випадкових чисел від Google</li>
</ul>
<h2>2.0</h2>
<ul>
-<li>переробка дизайну</li>
-<li>передача ключів через QR-коди і NFC</li>
-<li>підписання ключів</li>
-<li>завантаження на сервер ключів</li>
-<li>виправлення проблем імпорту</li>
-<li>новий AIDL API</li>
+<li>Complete redesign</li>
+<li>Share public keys via qr codes, nfc beam</li>
+<li>Sign keys</li>
+<li>Upload keys to server</li>
+<li>Fixes import issues</li>
+<li>New AIDL API</li>
</ul>
<h2>1.0.8</h2>
<ul>
-<li>підтримка сервера основних ключів</li>
-<li>app2sd</li>
-<li>більше варіантів збереження кешу пароля: 1, 2, 4, 8 годин</li>
-<li>переклади: норвезькою (завдяки Сандер Даніельсен), китайською (завдяки Чжан Фредріку)</li>
-<li>виправлення вад</li>
-<li>оптимізації</li>
+<li>Basic keyserver support</li>
+<li>App2sd</li>
+<li>More choices for pass phrase cache: 1, 2, 4, 8, hours</li>
+<li>Translations: Norwegian (thanks, Sander Danielsen), Chinese (thanks, Zhang Fredrick)</li>
+<li>Bugfixes</li>
+<li>Optimizations</li>
</ul>
<h2>1.0.7</h2>
<ul>
-<li>виправлення помилки при перевірці підпису тексту з переведенням рядка</li>
-<li>більше варіантів збереження кешу пароля (20, 40, 60 хвилин)</li>
+<li>Fixed problem with signature verification of texts with trailing newline</li>
+<li>More options for pass phrase cache time to live (20, 40, 60 mins)</li>
</ul>
<h2>1.0.6</h2>
<ul>
-<li>виправлення помилки створення запису на Froyo</li>
-<li>вилучення безпечного файлу</li>
-<li>вилучення файлу ключа після імпорту</li>
-<li>передача шифрування (галерея і т. д.)</li>
-<li>нові можливості (мова, примусові v3 підписи)</li>
-<li>зміни інтерфейсу</li>
-<li>виправлення вад</li>
+<li>Account adding crash on Froyo fixed</li>
+<li>Secure file deletion</li>
+<li>Option to delete key file after import</li>
+<li>Stream encryption/decryption (gallery, etc.)</li>
+<li>New options (language, force v3 signatures)</li>
+<li>Interface changes</li>
+<li>Bugfixes</li>
</ul>
<h2>1.0.5</h2>
<ul>
<li>Німецький та італійський переклад</li>
-<li>істотно менший пакунок програми завдяки зменшенню джерел</li>
-<li>нові налаштунки інтерфейсу</li>
-<li>зміна розмітки для локалізації</li>
-<li>виправлення помилки підпису</li>
+<li>Much smaller package, due to reduced BC sources</li>
+<li>New preferences GUI</li>
+<li>Layout adjustment for localization</li>
+<li>Signature bugfix</li>
</ul>
<h2>1.0.4</h2>
<ul>
-<li>виправлення ще однієї помилки, що виникає в SDK</li>
+<li>Fixed another crash caused by some SDK bug with query builder</li>
</ul>
<h2>1.0.3</h2>
<ul>
-<li>виправлення помилок при шифруванні/підписанні та експорті ключів</li>
+<li>Fixed crashes during encryption/signing and possibly key export</li>
</ul>
<h2>1.0.2</h2>
<ul>
-<li>фільтр списку ключів</li>
-<li>поліпшення вибору ключів шифрування</li>
-<li>додана можливість шифрувати файли прямо з файлового менеджера</li>
-<li>виправлення помилок і нові можливості (попередній вибір ключа) для інтеграції з K-9 Mail, нова бета-збірка доступна</li>
+<li>Filterable key lists</li>
+<li>Smarter pre-selection of encryption keys</li>
+<li>New Intent handling for VIEW and SEND, allows files to be encrypted/decrypted out of file managers</li>
+<li>Fixes and additional features (key preselection) for K-9 Mail, new beta build available</li>
</ul>
<h2>1.0.1</h2>
<ul>
@@ -146,11 +160,11 @@
<h2>1.0.0</h2>
<ul>
<li>інтеграція з K-9 Mail, APG підтримує бета-збірку K-9 Mail</li>
-<li>підтримка сторонніх файлових менеджерів (в т.ч. ASTRO)</li>
+<li>Support of more file managers (including ASTRO)</li>
<li>Словенський переклад</li>
-<li>нова база даних, швидша робота, менше використання пам'яті</li>
-<li>додано обробники для взаємодії з іншими програмами</li>
-<li>виправлення вад</li>
+<li>New database, much faster, less memory usage</li>
+<li>Defined Intents and content provider for other apps</li>
+<li>Bugfixes</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-zh/help_about.html b/OpenKeychain/src/main/res/raw-zh/help_about.html
index c9f76dd7c..19134061a 100644
--- a/OpenKeychain/src/main/res/raw-zh/help_about.html
+++ b/OpenKeychain/src/main/res/raw-zh/help_about.html
@@ -5,27 +5,27 @@
<p><a href="http://www.openkeychain.org">OpenKeychain</a> is an OpenPGP implementation for Android.</p>
<p>授權:GPLv3+</p>
-<h2>Developers OpenKeychain</h2>
+<h2>Developers</h2>
<ul>
-<li>Dominik Schürmann (Lead developer)</li>
-<li>Ash Hughes (crypto patches)</li>
+<li>Dominik Schürmann (Maintainer)</li>
+<li>Art O Cathain</li>
+<li>Ash Hughes</li>
<li>Brian C. Barnes</li>
-<li>Bahtiar 'kalkin' Gadimov (介面)</li>
+<li>Bahtiar 'kalkin' Gadimov</li>
+<li>Daniel Albert</li>
<li>Daniel Hammann</li>
<li>Daniel Haß</li>
<li>Greg Witczak</li>
+<li>'mar-v-in'</li>
+<li>Markus Doits</li>
<li>Miroojin Bakshi</li>
<li>Nikhil Peter Raj</li>
<li>Paul Sarbinowski</li>
+<li>'Senecaso'</li>
<li>Sreeram Boyapati</li>
-<li>Vincent Breitmoser</li>
+<li>Thialfihar (APG 1.x)</li>
<li>Tim Bray</li>
-</ul>
-<h2>Developers APG 1.x</h2>
-<ul>
-<li>Thialfihar (Lead developer)</li>
-<li>'Senecaso' (QRCode, sign key, upload key)</li>
-<li>Markus Doits</li>
+<li>Vincent Breitmoser</li>
</ul>
<h2>函式庫</h2>
<ul>
@@ -34,17 +34,21 @@
<li>
<a href="http://developer.android.com/tools/support-library/index.html">Android Support Library v7 'appcompat'</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache License v2)</li>
+<a href="https://github.com/timbray/KeybaseLib">KeybaseLib</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/JohnPersano/SuperToasts">SuperToasts</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/splitwise/TokenAutoComplete">TokenAutoComplete</a> (Apache License v2)</li>
<li>
-<a href="https://github.com/Bearded-Hen/Android-Bootstrap">Android-Bootstrap</a> (MIT License)</li>
+<a href="https://github.com/rtreffer/minidns">MiniDNS</a> (Apache License v2)</li>
+<li>
+<a href="https://github.com/emilsjolander/StickyListHeaders">StickyListHeaders</a> (Apache License v2)</li>
<li>
<a href="http://code.google.com/p/zxing/">ZXing</a> (Apache License v2)</li>
<li>
<a href="http://rtyley.github.com/spongycastle/">SpongyCastle</a> (MIT X11 License)</li>
<li>
<a href="https://github.com/dschuermann/html-textview">HtmlTextView</a> (Apache License v2)</li>
-<li>
-<a href="https://github.com/johnkil/Android-AppMsg">Android AppMsg Library</a> (Apache License v2)</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw-zh/help_changelog.html b/OpenKeychain/src/main/res/raw-zh/help_changelog.html
index ebada67f9..e27ac7475 100644
--- a/OpenKeychain/src/main/res/raw-zh/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw-zh/help_changelog.html
@@ -1,6 +1,20 @@
<html>
<head></head>
<body>
+<h2>2.8</h2>
+<ul>
+<li>So many bugs have been fixed in this release that we focus on the main new features</li>
+<li>Key edit: awesome new design, key revocation</li>
+<li>Key import: awesome new design, secure keyserver connections via hkps, keyserver resolving via DNS SRV records</li>
+<li>New first time screen</li>
+<li>New create key screen: autocompletion of name and email based on your personal Android accounts</li>
+<li>File encryption: awesome new design, support for encrypting multiple files</li>
+<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>
+</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>
+
<h2>2.7</h2>
<ul>
<li>Purple! (Dominik, Vincent)</li>
@@ -11,21 +25,21 @@
</ul>
<h2>2.6.1</h2>
<ul>
-<li>some fixes for regression bugs</li>
+<li>Some fixes for regression bugs</li>
</ul>
<h2>2.6</h2>
<ul>
-<li>key certifications (thanks to Vincent Breitmoser)</li>
-<li>support for GnuPG partial secret keys (thanks to Vincent Breitmoser)</li>
-<li>new design for signature verification</li>
-<li>custom key length (thanks to Greg Witczak)</li>
-<li>fix share-functionality from other apps</li>
+<li>Key certifications (thanks to Vincent Breitmoser)</li>
+<li>Support for GnuPG partial secret keys (thanks to Vincent Breitmoser)</li>
+<li>New design for signature verification</li>
+<li>Custom key length (thanks to Greg Witczak)</li>
+<li>Fix share-functionality from other apps</li>
</ul>
<h2>2.5</h2>
<ul>
-<li>fix decryption of symmetric pgp messages/files</li>
-<li>refactored edit key screen (thanks to Ash Hughes)</li>
-<li>new modern design for encrypt/decrypt screens</li>
+<li>Fix decryption of symmetric pgp messages/files</li>
+<li>Refactored edit key screen (thanks to Ash Hughes)</li>
+<li>New modern design for encrypt/decrypt screens</li>
<li>OpenPGP API version 3 (multiple api accounts, internal fixes, key lookup)</li>
</ul>
<h2>2.4</h2>
@@ -33,45 +47,45 @@
Besides several small patches, a notable number of patches are made by the following people (in alphabetical order):
Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Paul Sarbinowski, Sreeram Boyapati, Vincent Breitmoser.</p>
<ul>
-<li>new unified key list</li>
-<li>colorized key fingerprint</li>
-<li>support for keyserver ports</li>
-<li>deactivate possibility to generate weak keys</li>
-<li>much more internal work on the API</li>
-<li>certify user ids</li>
-<li>keyserver query based on machine-readable output</li>
-<li>lock navigation drawer on tablets</li>
-<li>suggestions for emails on creation of keys</li>
-<li>search in public key lists</li>
-<li>and much more improvements and fixes…</li>
+<li>New unified key list</li>
+<li>Colorized key fingerprint</li>
+<li>Support for keyserver ports</li>
+<li>Deactivate possibility to generate weak keys</li>
+<li>Much more internal work on the API</li>
+<li>Certify user ids</li>
+<li>Keyserver query based on machine-readable output</li>
+<li>Lock navigation drawer on tablets</li>
+<li>Suggestions for emails on creation of keys</li>
+<li>Search in public key lists</li>
+<li>And much more improvements and fixes…</li>
</ul>
<h2>2.3.1</h2>
<ul>
-<li>hotfix for crash when upgrading from old versions</li>
+<li>Hotfix for crash when upgrading from old versions</li>
</ul>
<h2>2.3</h2>
<ul>
-<li>remove unnecessary export of public keys when exporting secret key (thanks to Ash Hughes)</li>
-<li>fix setting expiry dates on keys (thanks to Ash Hughes)</li>
-<li>more internal fixes when editing keys (thanks to Ash Hughes)</li>
-<li>querying keyservers directly from the import screen</li>
-<li>fix layout and dialog style on Android 2.2-3.0</li>
-<li>fix crash on keys with empty user ids</li>
-<li>fix crash and empty lists when coming back from signing screen</li>
+<li>Remove unnecessary export of public keys when exporting secret key (thanks to Ash Hughes)</li>
+<li>Fix setting expiry dates on keys (thanks to Ash Hughes)</li>
+<li>More internal fixes when editing keys (thanks to Ash Hughes)</li>
+<li>Querying keyservers directly from the import screen</li>
+<li>Fix layout and dialog style on Android 2.2-3.0</li>
+<li>Fix crash on keys with empty user ids</li>
+<li>Fix crash and empty lists when coming back from signing screen</li>
<li>Bouncy Castle (cryptography library) updated from 1.47 to 1.50 and build from source</li>
-<li>fix upload of key from signing screen</li>
+<li>Fix upload of key from signing screen</li>
</ul>
<h2>2.2</h2>
<ul>
-<li>new design with navigation drawer</li>
-<li>new public key list design</li>
-<li>new public key view</li>
-<li>bug fixes for importing of keys</li>
-<li>key cross-certification (thanks to Ash Hughes)</li>
-<li>handle UTF-8 passwords properly (thanks to Ash Hughes)</li>
-<li>first version with new languages (thanks to the contributors on Transifex)</li>
-<li>sharing of keys via QR Codes fixed and improved</li>
-<li>package signature verification for API</li>
+<li>New design with navigation drawer</li>
+<li>New public key list design</li>
+<li>New public key view</li>
+<li>Bug fixes for importing of keys</li>
+<li>Key cross-certification (thanks to Ash Hughes)</li>
+<li>Handle UTF-8 passwords properly (thanks to Ash Hughes)</li>
+<li>First version with new languages (thanks to the contributors on Transifex)</li>
+<li>Sharing of keys via QR Codes fixed and improved</li>
+<li>Package signature verification for API</li>
</ul>
<h2>2.1.1</h2>
<ul>
@@ -79,65 +93,65 @@ Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Pa
</ul>
<h2>2.1</h2>
<ul>
-<li>lots of bug fixes</li>
-<li>new API for developers</li>
+<li>Lots of bug fixes</li>
+<li>New API for developers</li>
<li>PRNG bug fix by Google</li>
</ul>
<h2>2.0</h2>
<ul>
-<li>complete redesign</li>
-<li>share public keys via qr codes, nfc beam</li>
-<li>sign keys</li>
-<li>upload keys to server</li>
-<li>fixes import issues</li>
-<li>new AIDL API</li>
+<li>Complete redesign</li>
+<li>Share public keys via qr codes, nfc beam</li>
+<li>Sign keys</li>
+<li>Upload keys to server</li>
+<li>Fixes import issues</li>
+<li>New AIDL API</li>
</ul>
<h2>1.0.8</h2>
<ul>
-<li>basic keyserver support</li>
-<li>app2sd</li>
-<li>more choices for pass phrase cache: 1, 2, 4, 8, hours</li>
-<li>translations: Norwegian (thanks, Sander Danielsen), Chinese (thanks, Zhang Fredrick)</li>
-<li>bugfixes</li>
-<li>optimizations</li>
+<li>Basic keyserver support</li>
+<li>App2sd</li>
+<li>More choices for pass phrase cache: 1, 2, 4, 8, hours</li>
+<li>Translations: Norwegian (thanks, Sander Danielsen), Chinese (thanks, Zhang Fredrick)</li>
+<li>Bugfixes</li>
+<li>Optimizations</li>
</ul>
<h2>1.0.7</h2>
<ul>
-<li>fixed problem with signature verification of texts with trailing newline</li>
-<li>more options for pass phrase cache time to live (20, 40, 60 mins)</li>
+<li>Fixed problem with signature verification of texts with trailing newline</li>
+<li>More options for pass phrase cache time to live (20, 40, 60 mins)</li>
</ul>
<h2>1.0.6</h2>
<ul>
-<li>account adding crash on Froyo fixed</li>
-<li>secure file deletion</li>
-<li>option to delete key file after import</li>
-<li>stream encryption/decryption (gallery, etc.)</li>
-<li>new options (language, force v3 signatures)</li>
-<li>interface changes</li>
-<li>bugfixes</li>
+<li>Account adding crash on Froyo fixed</li>
+<li>Secure file deletion</li>
+<li>Option to delete key file after import</li>
+<li>Stream encryption/decryption (gallery, etc.)</li>
+<li>New options (language, force v3 signatures)</li>
+<li>Interface changes</li>
+<li>Bugfixes</li>
</ul>
<h2>1.0.5</h2>
<ul>
<li>German and Italian translation</li>
-<li>much smaller package, due to reduced BC sources</li>
-<li>new preferences GUI</li>
-<li>layout adjustment for localization</li>
-<li>signature bugfix</li>
+<li>Much smaller package, due to reduced BC sources</li>
+<li>New preferences GUI</li>
+<li>Layout adjustment for localization</li>
+<li>Signature bugfix</li>
</ul>
<h2>1.0.4</h2>
<ul>
-<li>fixed another crash caused by some SDK bug with query builder</li>
+<li>Fixed another crash caused by some SDK bug with query builder</li>
</ul>
<h2>1.0.3</h2>
<ul>
-<li>fixed crashes during encryption/signing and possibly key export</li>
+<li>Fixed crashes during encryption/signing and possibly key export</li>
</ul>
<h2>1.0.2</h2>
<ul>
-<li>filterable key lists</li>
-<li>smarter pre-selection of encryption keys</li>
-<li>new Intent handling for VIEW and SEND, allows files to be encrypted/decrypted out of file managers</li>
-<li>fixes and additional features (key preselection) for K-9 Mail, new beta build available</li>
+<li>Filterable key lists</li>
+<li>Smarter pre-selection of encryption keys</li>
+<li>New Intent handling for VIEW and SEND, allows files to be encrypted/decrypted out of file managers</li>
+<li>Fixes and additional features (key preselection) for K-9 Mail, new beta build available</li>
</ul>
<h2>1.0.1</h2>
<ul>
@@ -146,11 +160,11 @@ Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Pa
<h2>1.0.0</h2>
<ul>
<li>K-9 Mail integration, APG supporting beta build of K-9 Mail</li>
-<li>support of more file managers (including ASTRO)</li>
+<li>Support of more file managers (including ASTRO)</li>
<li>Slovenian translation</li>
-<li>new database, much faster, less memory usage</li>
-<li>defined Intents and content provider for other apps</li>
-<li>bugfixes</li>
+<li>New database, much faster, less memory usage</li>
+<li>Defined Intents and content provider for other apps</li>
+<li>Bugfixes</li>
</ul>
</body>
</html>
diff --git a/OpenKeychain/src/main/res/raw/help_changelog.html b/OpenKeychain/src/main/res/raw/help_changelog.html
index b2c798615..5f1798896 100644
--- a/OpenKeychain/src/main/res/raw/help_changelog.html
+++ b/OpenKeychain/src/main/res/raw/help_changelog.html
@@ -11,7 +11,7 @@ And don't add newlines before or after p tags because of transifex -->
<li>Key edit: awesome new design, key revocation</li>
<li>Key import: awesome new design, secure keyserver connections via hkps, keyserver resolving via DNS SRV records</li>
<li>New first time screen</li>
-<li>New create key screen: autocompletion of name and email based on your personal Android accounts</li>
+<li>New key creation screen: autocompletion of name and email based on your personal Android accounts</li>
<li>File encryption: awesome new design, support for encrypting multiple files</li>
<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>
@@ -45,7 +45,7 @@ And don't add newlines before or after p tags because of transifex -->
<h2>2.5</h2>
<ul>
<li>Fix decryption of symmetric pgp messages/files</li>
-<li>Refactored edit key screen (thanks to Ash Hughes)</li>
+<li>Refactored key edit screen (thanks to Ash Hughes)</li>
<li>New modern design for encrypt/decrypt screens</li>
<li>OpenPGP API version 3 (multiple api accounts, internal fixes, key lookup)</li>
</ul>
@@ -125,7 +125,7 @@ Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Pa
<ul>
<li>Basic keyserver support</li>
<li>App2sd</li>
-<li>More choices for pass phrase cache: 1, 2, 4, 8, hours</li>
+<li>More choices for passphrase cache: 1, 2, 4, 8, hours</li>
<li>Translations: Norwegian (thanks, Sander Danielsen), Chinese (thanks, Zhang Fredrick)</li>
<li>Bugfixes</li>
<li>Optimizations</li>
@@ -134,7 +134,7 @@ Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Pa
<h2>1.0.7</h2>
<ul>
<li>Fixed problem with signature verification of texts with trailing newline</li>
-<li>More options for pass phrase cache time to live (20, 40, 60 mins)</li>
+<li>More options for passphrase cache time to live (20, 40, 60 mins)</li>
</ul>
<h2>1.0.6</h2>
diff --git a/OpenKeychain/src/main/res/values-ar/strings.xml b/OpenKeychain/src/main/res/values-ar/strings.xml
deleted file mode 100644
index 4cf33460a..000000000
--- a/OpenKeychain/src/main/res/values-ar/strings.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <!--title-->
- <!--section-->
- <!--button-->
- <!--menu-->
- <!--label-->
- <!--choice-->
- <!--key flags-->
- <!--sentences-->
- <!--errors
- no punctuation, all lowercase,
- they will be put after "error_message", e.g. "Error: file not found"-->
- <!--errors without preceeding Error:-->
- <!--results shown after decryption/verification-->
- <!--progress dialogs, usually ending in '…'-->
- <!--action strings-->
- <!--key bit length selections-->
- <!--compression-->
- <!--Help-->
- <!--Import-->
- <!--Import result toast-->
- <!--Intent labels-->
- <!--Remote API-->
- <!--Share-->
- <!--Key list-->
- <!--Key view-->
- <!--Edit key-->
- <!--Create key-->
- <!--View key-->
- <!--Navigation Drawer-->
- <!--hints-->
- <!--certs-->
- <!--Import Public log entries-->
- <!--Import Secret log entries-->
- <!--Keyring Canonicalization log entries-->
- <!--Keyring merging log entries-->
- <!--createSecretKeyRing-->
- <!--modifySecretKeyRing-->
- <!--PassphraseCache-->
- <!--unsorted-->
- <!--First Time-->
-</resources>
diff --git a/OpenKeychain/src/main/res/values-cs/strings.xml b/OpenKeychain/src/main/res/values-cs/strings.xml
index 2bb0ab5c8..19e94b4b8 100644
--- a/OpenKeychain/src/main/res/values-cs/strings.xml
+++ b/OpenKeychain/src/main/res/values-cs/strings.xml
@@ -34,7 +34,6 @@
<string name="btn_save">Uložit</string>
<string name="btn_do_not_save">Zrušit</string>
<string name="btn_delete">Smazat</string>
- <string name="btn_no_date">Nic</string>
<string name="btn_okay">OK</string>
<string name="btn_export_to_server">Nahrát na keyserver</string>
<string name="btn_next">Další</string>
@@ -57,7 +56,6 @@
<string name="label_no_passphrase">Bez hesla</string>
<string name="label_passphrase">Heslo</string>
<string name="label_algorithm">Algoritmus</string>
- <string name="label_ascii_armor">ASCII Armor</string>
<string name="label_delete_after_decryption">Smazat po rozšifrování</string>
<string name="label_encryption_algorithm">Šifrovací algoritmus</string>
<string name="label_hash_algorithm">Hashovací algoritmus</string>
@@ -198,7 +196,6 @@
<string name="key_size_8192">8192</string>
<string name="key_size_custom">Vlastní velikost klíče</string>
<string name="key_size_custom_info">Napište vlastní délku klíče (v bitech):</string>
- <string name="key_size_custom_info_rsa">délka RSA klíče musí být větší než 1024 a nejvýše 8192. Zároveň musí být dělitelná 8mi.</string>
<string name="key_size_custom_info_dsa">Délka DSA klíče musí být alespoň 512 a nejvýše 1024. Zároveň musí být dělitelná 64.</string>
<!--compression-->
<string name="compression_fast">rychle</string>
diff --git a/OpenKeychain/src/main/res/values-de/strings.xml b/OpenKeychain/src/main/res/values-de/strings.xml
index e6e594708..a843a154a 100644
--- a/OpenKeychain/src/main/res/values-de/strings.xml
+++ b/OpenKeychain/src/main/res/values-de/strings.xml
@@ -6,7 +6,6 @@
<string name="title_encrypt">Verschlüsseln</string>
<string name="title_decrypt">Entschlüsseln</string>
<string name="title_authentication">Passwort</string>
- <string name="title_create_key">Erzeuge Deinen Schlüssel</string>
<string name="title_edit_key">Schlüssel bearbeiten</string>
<string name="title_preferences">Einstellungen</string>
<string name="title_api_registered_apps">Apps</string>
@@ -15,6 +14,7 @@
<string name="title_share_fingerprint_with">Teile Fingerabdruck über…</string>
<string name="title_share_key">Teile Schlüssel über...</string>
<string name="title_share_file">Datei teilen mit…</string>
+ <string name="title_share_message">Teile Nachricht über…</string>
<string name="title_encrypt_to_file">In eine Datei verschlüsseln</string>
<string name="title_decrypt_to_file">In eine Datei entschlüsseln</string>
<string name="title_import_keys">Schlüssel importieren</string>
@@ -43,17 +43,19 @@
<string name="btn_decrypt_verify_file">Datei entschlüsseln, verifizieren und speichern</string>
<string name="btn_decrypt_verify_message">Entschlüsseln und verifizieren</string>
<string name="btn_encrypt_file">Datei verschlüsseln und speichern</string>
+ <string name="btn_encrypt_share_file">Datei verschlüsseln und teilen</string>
<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">Keine</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_view_cert_key">Beglaubigungsschlüssel anzeigen</string>
- <string name="btn_create_key">Erzeuge Schlüssel</string>
+ <string name="btn_create_key">Schlüssel erzeugen</string>
+ <string name="btn_add_files">Datei(en) hinzufügen</string>
<!--menu-->
<string name="menu_preferences">Einstellungen</string>
<string name="menu_help">Hilfe</string>
@@ -72,16 +74,23 @@
<!--label-->
<string name="label_message">Nachricht</string>
<string name="label_file">Datei</string>
+ <string name="label_files">Datei(en)</string>
+ <string name="label_file_colon">Datei:</string>
<string name="label_no_passphrase">Kein Passwort</string>
<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</string>
- <string name="label_conceal_pgp_application">Lass andere wissen dass du OpenKeychain nutzt</string>
- <string name="label_conceal_pgp_application_summary">Fügt \'OpenKeychain v2.7\' zu OpenPGP Signaturen, Daten und exportierten Schlüsseln hinzu</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>
+ <string name="label_asymmetric_from">Von:</string>
+ <string name="label_to">An:</string>
+ <string name="label_delete_after_encryption">Dateien: Nach Verschlüsselung löschen</string>
<string name="label_delete_after_decryption">Nach Entschlüsselung löschen</string>
<string name="label_encryption_algorithm">Verschlüsselungsalgorithmus</string>
<string name="label_hash_algorithm">Hash-Algorithmus</string>
+ <string name="label_asymmetric">Mit Schlüssel</string>
+ <string name="label_symmetric">Mit Passwort</string>
<string name="label_passphrase_cache_ttl">Passwort-Cache</string>
<string name="label_message_compression">Nachrichten-Komprimierung</string>
<string name="label_file_compression">Datei-Komprimierung</string>
@@ -274,7 +283,6 @@
<string name="key_size_8192">8192</string>
<string name="key_size_custom">Benutzerdefinierte Schlüssellänge</string>
<string name="key_size_custom_info">Benutzerdefinierte Schlüssellänge (in Bit):</string>
- <string name="key_size_custom_info_rsa">Die RSA-Schlüssellänge muss größer als 1024 sein und höchstens 8192 sein. Auch muss sie ein Mehrfaches von 8 sein.</string>
<string name="key_size_custom_info_dsa">Die DSA-Schlüssellänge muss mindestens 512 und höchstens 1024 sein. Auch muss sie ein Mehrfaches von 64 sein.</string>
<!--compression-->
<string name="compression_fast">schnell</string>
@@ -380,6 +388,7 @@
<string name="drawer_close">Menü schließen</string>
<string name="my_keys">Meine Schlüssel</string>
<!--hints-->
+ <string name="encrypt_content_edit_text_hint">Die eingegebene Nachricht wird mit dem in \'Von\' ausgewählten Schlüssel signiert und für alle Empfänger in \'An\' verschlüsselt.</string>
<string name="decrypt_content_edit_text_hint">Hier die verschlüsselte Nachricht eingeben um sie zu entschlüsseln und/oder zu verifizieren…</string>
<!--certs-->
<string name="cert_default">normal</string>
diff --git a/OpenKeychain/src/main/res/values-el/strings.xml b/OpenKeychain/src/main/res/values-el/strings.xml
deleted file mode 100644
index 0ae077242..000000000
--- a/OpenKeychain/src/main/res/values-el/strings.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <!--title-->
- <string name="title_authentication">Κωδικός</string>
- <string name="title_edit_key">Επεξεργασία Κλειδιού</string>
- <string name="title_preferences">Επιλογές</string>
- <!--section-->
- <!--button-->
- <string name="btn_save">Αποθήκευση</string>
- <string name="btn_do_not_save">Ακύρωση</string>
- <string name="btn_delete">Διαγραφή</string>
- <string name="btn_no_date">Κανένα</string>
- <string name="btn_okay">ΟΚ</string>
- <!--menu-->
- <string name="menu_delete_key">Διαγραφής κλειδιού</string>
- <!--label-->
- <string name="label_message">Μήνυμα</string>
- <string name="label_file">Αρχείο</string>
- <string name="label_passphrase">Κωδικός</string>
- <string name="label_algorithm">Αλγόριθμος</string>
- <string name="label_encryption_algorithm">Αλγόριθμος κρυπτογράφησης</string>
- <string name="label_key_size">Μέγεθος κλειδιού</string>
- <string name="label_email">Ηλεκτρονικό ταχυδρομίο</string>
- <!--choice-->
- <!--key flags-->
- <!--sentences-->
- <!--errors
- no punctuation, all lowercase,
- they will be put after "error_message", e.g. "Error: file not found"-->
- <!--errors without preceeding Error:-->
- <!--results shown after decryption/verification-->
- <!--progress dialogs, usually ending in '…'-->
- <!--action strings-->
- <!--key bit length selections-->
- <!--compression-->
- <!--Help-->
- <!--Import-->
- <!--Import result toast-->
- <!--Intent labels-->
- <!--Remote API-->
- <!--Share-->
- <!--Key list-->
- <!--Key view-->
- <!--Edit key-->
- <!--Create key-->
- <!--View key-->
- <!--Navigation Drawer-->
- <!--hints-->
- <!--certs-->
- <!--Import Public log entries-->
- <!--Import Secret log entries-->
- <!--Keyring Canonicalization log entries-->
- <!--Keyring merging log entries-->
- <!--createSecretKeyRing-->
- <!--modifySecretKeyRing-->
- <!--PassphraseCache-->
- <!--unsorted-->
- <!--First Time-->
-</resources>
diff --git a/OpenKeychain/src/main/res/values-es/strings.xml b/OpenKeychain/src/main/res/values-es/strings.xml
index be488f82d..80c2060d1 100644
--- a/OpenKeychain/src/main/res/values-es/strings.xml
+++ b/OpenKeychain/src/main/res/values-es/strings.xml
@@ -6,7 +6,7 @@
<string name="title_encrypt">Cifrar</string>
<string name="title_decrypt">Descifrar</string>
<string name="title_authentication">Frase de contraseña</string>
- <string name="title_create_key">Crear mi clave</string>
+ <string name="title_add_subkey">Añadir subclave</string>
<string name="title_edit_key"> Editar clave</string>
<string name="title_preferences"> Preferencias</string>
<string name="title_api_registered_apps">Aplicaciones</string>
@@ -15,6 +15,7 @@
<string name="title_share_fingerprint_with">Compartir huella de validación de clave con...</string>
<string name="title_share_key">Compartir clave con...</string>
<string name="title_share_file">Compartir fichero con...</string>
+ <string name="title_share_message">Compartir mensaje con...</string>
<string name="title_encrypt_to_file">Cifrar hacia archivo</string>
<string name="title_decrypt_to_file">Descifrar hacia archivo</string>
<string name="title_import_keys">Importar claves</string>
@@ -47,7 +48,7 @@
<string name="btn_save">Guardar</string>
<string name="btn_do_not_save">Cancelar</string>
<string name="btn_delete">Eliminar</string>
- <string name="btn_no_date">Ninguno</string>
+ <string name="btn_no_date">Sin fecha de expiración</string>
<string name="btn_okay">De acuerdo</string>
<string name="btn_export_to_server">Cargar al servidor de claves</string>
<string name="btn_next">Siguiente</string>
@@ -81,12 +82,12 @@
<string name="label_passphrase">Frase de contraseña</string>
<string name="label_passphrase_again">Repeat Passphrase</string>
<string name="label_algorithm">Algoritmo</string>
- <string name="label_ascii_armor">Armadura ASCII</string>
+ <string name="label_ascii_armor">Armadura ASCII del fichero</string>
<string name="label_file_ascii_armor">Ficheros: Armadura ASCII</string>
- <string name="label_conceal_pgp_application">Permitir a otros saber que está usando OpenKeychain</string>
- <string name="label_conceal_pgp_application_summary">Escribe \'OpenKeychain v2.7\' en las firmas OpenPGP, el texto cifrado, y las claves exportadas</string>
+ <string name="label_write_version_header">Permitir a otros saber que está usando OpenKeychain</string>
+ <string name="label_write_version_header_summary">Escribe \'OpenKeychain v2.7\' en las firmas OpenPGP, el texto cifrado, y las claves exportadas</string>
<string name="label_asymmetric_from">Desde:</string>
- <string name="label_to">Hacia: </string>
+ <string name="label_to">Hacia:</string>
<string name="label_delete_after_encryption">Ficheros: Borrar después del cifrado</string>
<string name="label_delete_after_decryption">Borrar después del descifrado</string>
<string name="label_encryption_algorithm">Algoritmo de cifrado</string>
@@ -288,7 +289,7 @@
<string name="key_size_8192">8192</string>
<string name="key_size_custom">Tamaño de clave personalizado</string>
<string name="key_size_custom_info">Escriba el tamaño personalizado de la clave (en bits):</string>
- <string name="key_size_custom_info_rsa">El tamaño de la clave RSA debe de un mínimo de 1024 y un máximo de 8192. También debe ser múltiplo de 8.</string>
+ <string name="key_size_custom_info_rsa">El tamaño de la clave RSA tiene que ser mayor que 1024 y como mucho de 16384. También debe ser un múltiplo de 8.</string>
<string name="key_size_custom_info_dsa">El tamaño de la clave DSA debe ser de un mínimo de 512 y un máximo de 1024. También debe ser múltiplo de 64.</string>
<!--compression-->
<string name="compression_fast">rápido</string>
@@ -397,11 +398,16 @@
<item>Cambiar a la identidad primaria</item>
<item>Revocar identidad</item>
</string-array>
+ <string-array name="edit_key_edit_user_id_revert_revocation">
+ <item>Revertir revocación</item>
+ </string-array>
+ <string name="edit_key_edit_user_id_revoked">Esta identidad se ha revocado. Esto no puede deshacerse.</string>
<string name="edit_key_edit_subkey_title">¡Seleccione una acción!</string>
<string-array name="edit_key_edit_subkey">
<item>Cambiar periodo hasta la expiración</item>
<item>Revocar subclave</item>
</string-array>
+ <string name="edit_key_new_subkey">nueva</string>
<!--Create key-->
<string name="create_key_upload">Subir clave al servidor de claves</string>
<string name="create_key_empty">Este campo es obligatorio</string>
diff --git a/OpenKeychain/src/main/res/values-fr/strings.xml b/OpenKeychain/src/main/res/values-fr/strings.xml
index 2b6405ed5..e30ebb883 100644
--- a/OpenKeychain/src/main/res/values-fr/strings.xml
+++ b/OpenKeychain/src/main/res/values-fr/strings.xml
@@ -6,7 +6,7 @@
<string name="title_encrypt">Chiffrer</string>
<string name="title_decrypt">Déchiffrer</string>
<string name="title_authentication">Phrase de passe</string>
- <string name="title_create_key">Créer ma clef</string>
+ <string name="title_add_subkey">Ajouter une sous-clef</string>
<string name="title_edit_key">Modifier une clef</string>
<string name="title_preferences">Préférences</string>
<string name="title_api_registered_apps">Applis</string>
@@ -15,6 +15,7 @@
<string name="title_share_fingerprint_with">Partager l\'empreinte avec...</string>
<string name="title_share_key">Partager la clef avec...</string>
<string name="title_share_file">Partager le fichier avec...</string>
+ <string name="title_share_message">Partager le message avec...</string>
<string name="title_encrypt_to_file">Chiffrer vers un fichier</string>
<string name="title_decrypt_to_file">Déchiffrer vers un fichier</string>
<string name="title_import_keys">importer des clefs</string>
@@ -43,17 +44,20 @@
<string name="btn_decrypt_verify_file">Déchiffrer, vérifier et enregistrer le fichier</string>
<string name="btn_decrypt_verify_message">Déchiffrer et enregistrer le message</string>
<string name="btn_encrypt_file">Chiffrer et enregistrer le fichier</string>
+ <string name="btn_encrypt_share_file">Chiffrer et partager le fichier</string>
<string name="btn_save">Enregistrer</string>
<string name="btn_do_not_save">Annuler</string>
<string name="btn_delete">Supprimer</string>
- <string name="btn_no_date">Aucune</string>
+ <string name="btn_no_date">Pas d\'expiration</string>
<string name="btn_okay">OK</string>
<string name="btn_export_to_server">Téléverser vers le serveur de clefs</string>
<string name="btn_next">Suivant</string>
<string name="btn_back">Retour</string>
<string name="btn_lookup_key">Rechercher la clef</string>
+ <string name="btn_share_encrypted_signed">Chiffrer et partager le message</string>
<string name="btn_view_cert_key">Voir la clef de certification</string>
<string name="btn_create_key">Créer la clef</string>
+ <string name="btn_add_files">Ajouter un/des fichier(s)</string>
<!--menu-->
<string name="menu_preferences">Paramètres</string>
<string name="menu_help">Aide</string>
@@ -72,16 +76,24 @@
<!--label-->
<string name="label_message">Message</string>
<string name="label_file">Fichier</string>
+ <string name="label_files">Fichier(s)</string>
+ <string name="label_file_colon">Fichier :</string>
<string name="label_no_passphrase">Aucune phrase de passe</string>
<string name="label_passphrase">Phrase de passe</string>
<string name="label_passphrase_again">Répéter la phrase de passe</string>
<string name="label_algorithm">Algorithme</string>
- <string name="label_ascii_armor">Armure ASCII</string>
- <string name="label_conceal_pgp_application">Informez les autres de votre utilisation d\'OpenKeychain</string>
- <string name="label_conceal_pgp_application_summary">Ajoute « OpenKeychain v2.7 » aux signatures OpenPGP, aux cryptogrammes, et aux clefs exportées</string>
+ <string name="label_ascii_armor">Fichier ASCII Armor</string>
+ <string name="label_file_ascii_armor">Fichier : ASCII Armor</string>
+ <string name="label_write_version_header">Informez les autres de votre utilisation d\'OpenKeychain</string>
+ <string name="label_write_version_header_summary">Ajoute « OpenKeychain v2.7 » aux signatures OpenPGP, aux cryptogrammes, et aux clefs exportées</string>
+ <string name="label_asymmetric_from">De :</string>
+ <string name="label_to">À :</string>
+ <string name="label_delete_after_encryption">Fichier : supprimer après chiffrement</string>
<string name="label_delete_after_decryption">Supprimer après le chiffrement</string>
<string name="label_encryption_algorithm">Algorithme de chiffrement</string>
<string name="label_hash_algorithm">Algorithme de hachage</string>
+ <string name="label_asymmetric">Avec une clef publique</string>
+ <string name="label_symmetric">Avec une phrase de passe</string>
<string name="label_passphrase_cache_ttl">Cache de la phrase de passe</string>
<string name="label_message_compression">Compression des messages</string>
<string name="label_file_compression">Compression des fichiers</string>
@@ -277,7 +289,7 @@
<string name="key_size_8192">8192</string>
<string name="key_size_custom">Taille de clef personnalisée</string>
<string name="key_size_custom_info">Taper la longueur de la clef personnalisée (bits)</string>
- <string name="key_size_custom_info_rsa">La longueur d\'une clef RSA doit être comprise entre 1024 et 8192 inclusivement. Elle doit aussi être un multiple de 8.</string>
+ <string name="key_size_custom_info_rsa">La longueur d\'une clef RSA doit être supérieure à 1024 et au plus 16384. Elle doit aussi être un multiple de 8.</string>
<string name="key_size_custom_info_dsa">La longueur d\'une clef DSA doit être comprise entre 512 et 1024 inclusivement. Elle doit aussi être un multiple de 64.</string>
<!--compression-->
<string name="compression_fast">rapide</string>
@@ -386,11 +398,16 @@
<item>Changer en identité principale</item>
<item>Révoquer l\'identité</item>
</string-array>
+ <string-array name="edit_key_edit_user_id_revert_revocation">
+ <item>Renverser la révocation</item>
+ </string-array>
+ <string name="edit_key_edit_user_id_revoked">Cette identité a été révoquée ! Ceci ne peut pas être annulé.</string>
<string name="edit_key_edit_subkey_title">Choisissez une action !</string>
<string-array name="edit_key_edit_subkey">
<item>Changer l\'expiration</item>
<item>Révoquer la sous-clef</item>
</string-array>
+ <string name="edit_key_new_subkey">nouvelle</string>
<!--Create key-->
<string name="create_key_upload">Téléverser la clef vers le serveur de clefs</string>
<string name="create_key_empty">Ce champ est exigé</string>
@@ -411,6 +428,7 @@
<string name="drawer_close">Fermer le tiroir de navigation</string>
<string name="my_keys">Mes clefs</string>
<!--hints-->
+ <string name="encrypt_content_edit_text_hint">Le message saisi ici sera signé en utilisant la clef choisie « De » et chiffré pour tous les destinataires choisies « À ».</string>
<string name="decrypt_content_edit_text_hint">Saisir le cryptogramme à déchiffrer et/ou à vérifier ici...</string>
<!--certs-->
<string name="cert_default">valeur par défaut</string>
diff --git a/OpenKeychain/src/main/res/values-it/strings.xml b/OpenKeychain/src/main/res/values-it/strings.xml
index d31d1cc87..89e09783b 100644
--- a/OpenKeychain/src/main/res/values-it/strings.xml
+++ b/OpenKeychain/src/main/res/values-it/strings.xml
@@ -43,7 +43,6 @@
<string name="btn_save">Salva</string>
<string name="btn_do_not_save">Annulla</string>
<string name="btn_delete">Elimina</string>
- <string name="btn_no_date">Nessuno</string>
<string name="btn_okay">OK</string>
<string name="btn_export_to_server">Carica sul Server delle Chiavi</string>
<string name="btn_next">Prossimo</string>
@@ -70,9 +69,8 @@
<string name="label_passphrase">Frase di Accesso</string>
<string name="label_passphrase_again">Ripeti Frase di Accesso</string>
<string name="label_algorithm">Algortimo</string>
- <string name="label_ascii_armor">Armatura ASCII</string>
- <string name="label_conceal_pgp_application">Fai sapere agli altri che utilizzi OpenKeychain</string>
- <string name="label_conceal_pgp_application_summary">Scrive \'OpenKeychain v2.7\' nelle firme OpenPGP, testi cifrati e chiavi esportate</string>
+ <string name="label_write_version_header">Fai sapere agli altri che utilizzi OpenKeychain</string>
+ <string name="label_write_version_header_summary">Scrive \'OpenKeychain v2.7\' nelle firme OpenPGP, testi cifrati e chiavi esportate</string>
<string name="label_delete_after_decryption">Cancella Dopo Decodifica</string>
<string name="label_encryption_algorithm">Algoritmo di Codifica</string>
<string name="label_hash_algorithm">Algoritmo di Hash</string>
@@ -251,7 +249,6 @@
<string name="key_size_8192">8192</string>
<string name="key_size_custom">Lunghezza chiave peronalizzata</string>
<string name="key_size_custom_info">Digita lunghezza chiave personalizzata (in bit):</string>
- <string name="key_size_custom_info_rsa">La lunghezza della chiave RSA deve essere maggiore di 1024 e al massimo 8192. Inoltre, deve essere multipla di 8.</string>
<string name="key_size_custom_info_dsa">La lunghezza della chiave DSA deve essere almeno 512 e al massimo 1024. Inoltre, deve essere multipla di 64.</string>
<!--compression-->
<string name="compression_fast">veloce</string>
diff --git a/OpenKeychain/src/main/res/values-ja/strings.xml b/OpenKeychain/src/main/res/values-ja/strings.xml
index de22a8f7c..dbb52d208 100644
--- a/OpenKeychain/src/main/res/values-ja/strings.xml
+++ b/OpenKeychain/src/main/res/values-ja/strings.xml
@@ -6,7 +6,7 @@
<string name="title_encrypt">暗号化</string>
<string name="title_decrypt">復号化</string>
<string name="title_authentication">パスフレーズ</string>
- <string name="title_create_key">自分の鍵の生成</string>
+ <string name="title_add_subkey">副鍵の追加</string>
<string name="title_edit_key">鍵の編集</string>
<string name="title_preferences">設定</string>
<string name="title_api_registered_apps">アプリ</string>
@@ -15,6 +15,7 @@
<string name="title_share_fingerprint_with">...で指紋の共有</string>
<string name="title_share_key">...で鍵の共有</string>
<string name="title_share_file">...でファイルの共有</string>
+ <string name="title_share_message">...でメッセージを共有</string>
<string name="title_encrypt_to_file">暗号化してファイルに</string>
<string name="title_decrypt_to_file">復号化してファイルに</string>
<string name="title_import_keys">鍵のインポート</string>
@@ -47,7 +48,7 @@
<string name="btn_save">保存</string>
<string name="btn_do_not_save">キャンセル</string>
<string name="btn_delete">削除</string>
- <string name="btn_no_date">無し</string>
+ <string name="btn_no_date">満了なし</string>
<string name="btn_okay">OK</string>
<string name="btn_export_to_server">鍵サーバへアップロード</string>
<string name="btn_next">次</string>
@@ -81,10 +82,10 @@
<string name="label_passphrase">パスフレーズ</string>
<string name="label_passphrase_again">再度パスフレーズを入力</string>
<string name="label_algorithm">アルゴリズム</string>
- <string name="label_ascii_armor">アスキー形式</string>
+ <string name="label_ascii_armor">アスキー形式ファイル</string>
<string name="label_file_ascii_armor">ファイル: アスキー形式</string>
- <string name="label_conceal_pgp_application">他の人にあなたがOpenKeychain使用していることを知ってもらいましょう</string>
- <string name="label_conceal_pgp_application_summary">OpenPGPの 署名、暗号文、そしてエクスポートした鍵に \'OpenKeychain v2.7\' と書くようになりました</string>
+ <string name="label_write_version_header">他の人にあなたがOpenKeychain使用していることを知ってもらいましょう</string>
+ <string name="label_write_version_header_summary">OpenPGPの 署名、暗号文、そしてエクスポートした鍵に \'OpenKeychain v2.7\' と書くようになりました</string>
<string name="label_asymmetric_from">差出人:</string>
<string name="label_to">宛先</string>
<string name="label_delete_after_encryption">ファイル: 暗号化後に削除</string>
@@ -283,7 +284,7 @@
<string name="key_size_8192">8192</string>
<string name="key_size_custom">カスタムの鍵サイズ</string>
<string name="key_size_custom_info">カスタムの鍵長を入力(ビット数):</string>
- <string name="key_size_custom_info_rsa">RSA鍵の長さは1024より長い必要があり、最も一般的には8192です。そして8の倍数である必要があります。</string>
+ <string name="key_size_custom_info_rsa">RSA鍵の長さは1024より長い必要があり、最大は16384です。そして8の倍数である必要があります。</string>
<string name="key_size_custom_info_dsa">DSA鍵の長さは最低512の必要があり、最も一般的には1024です。そして64の倍数である必要があります。</string>
<!--compression-->
<string name="compression_fast">早い</string>
@@ -387,11 +388,16 @@
<item>主IDを変更</item>
<item>IDを破棄</item>
</string-array>
+ <string-array name="edit_key_edit_user_id_revert_revocation">
+ <item>破棄処理の差し戻し</item>
+ </string-array>
+ <string name="edit_key_edit_user_id_revoked">このIDは破棄されています。続けることができません。</string>
<string name="edit_key_edit_subkey_title">アクションを選んでください!</string>
<string-array name="edit_key_edit_subkey">
<item>期限を変更</item>
<item>副鍵を破棄</item>
</string-array>
+ <string name="edit_key_new_subkey">新規</string>
<!--Create key-->
<string name="create_key_upload">鍵サーバへアップロード</string>
<string name="create_key_empty">このフィールドは必須です</string>
diff --git a/OpenKeychain/src/main/res/values-ko/strings.xml b/OpenKeychain/src/main/res/values-ko/strings.xml
deleted file mode 100644
index 4cf33460a..000000000
--- a/OpenKeychain/src/main/res/values-ko/strings.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <!--title-->
- <!--section-->
- <!--button-->
- <!--menu-->
- <!--label-->
- <!--choice-->
- <!--key flags-->
- <!--sentences-->
- <!--errors
- no punctuation, all lowercase,
- they will be put after "error_message", e.g. "Error: file not found"-->
- <!--errors without preceeding Error:-->
- <!--results shown after decryption/verification-->
- <!--progress dialogs, usually ending in '…'-->
- <!--action strings-->
- <!--key bit length selections-->
- <!--compression-->
- <!--Help-->
- <!--Import-->
- <!--Import result toast-->
- <!--Intent labels-->
- <!--Remote API-->
- <!--Share-->
- <!--Key list-->
- <!--Key view-->
- <!--Edit key-->
- <!--Create key-->
- <!--View key-->
- <!--Navigation Drawer-->
- <!--hints-->
- <!--certs-->
- <!--Import Public log entries-->
- <!--Import Secret log entries-->
- <!--Keyring Canonicalization log entries-->
- <!--Keyring merging log entries-->
- <!--createSecretKeyRing-->
- <!--modifySecretKeyRing-->
- <!--PassphraseCache-->
- <!--unsorted-->
- <!--First Time-->
-</resources>
diff --git a/OpenKeychain/src/main/res/values-nl/strings.xml b/OpenKeychain/src/main/res/values-nl/strings.xml
index 640ac777d..f225e204a 100644
--- a/OpenKeychain/src/main/res/values-nl/strings.xml
+++ b/OpenKeychain/src/main/res/values-nl/strings.xml
@@ -41,7 +41,6 @@
<string name="btn_save">Opslaan</string>
<string name="btn_do_not_save">Annuleren</string>
<string name="btn_delete">Verwijderen</string>
- <string name="btn_no_date">Geen</string>
<string name="btn_okay">OK</string>
<string name="btn_export_to_server">Upload Naar Sleutelserver</string>
<string name="btn_next">Volgende</string>
@@ -66,7 +65,6 @@
<string name="label_no_passphrase">Geen wachtwoord</string>
<string name="label_passphrase">Wachtwoord</string>
<string name="label_algorithm">Algoritme</string>
- <string name="label_ascii_armor">ASCII-armor</string>
<string name="label_delete_after_decryption">Verwijderen na ontsleuteling</string>
<string name="label_encryption_algorithm">Versleutelingsalgoritme</string>
<string name="label_hash_algorithm">Verificatie-algoritme</string>
@@ -242,7 +240,6 @@
<string name="key_size_8192">8192</string>
<string name="key_size_custom">Aangepaste sleutelgrootte</string>
<string name="key_size_custom_info">Typ aangepaste sleutellengte (in bits):</string>
- <string name="key_size_custom_info_rsa">RSA sleutel lengte moet groter zijn dan 1024 en maximaal 8192. Het moet ook deelbaar zijn door 8.</string>
<string name="key_size_custom_info_dsa">DSA sleutellengte moet minstens 512 zijn en maximaal 1024. Het moet ook deelbaar zijn door 64.</string>
<!--compression-->
<string name="compression_fast">snel</string>
diff --git a/OpenKeychain/src/main/res/values-pl/strings.xml b/OpenKeychain/src/main/res/values-pl/strings.xml
index 69179d509..a4a66e30c 100644
--- a/OpenKeychain/src/main/res/values-pl/strings.xml
+++ b/OpenKeychain/src/main/res/values-pl/strings.xml
@@ -30,7 +30,6 @@
<string name="btn_save">Zapisz</string>
<string name="btn_do_not_save">Anuluj</string>
<string name="btn_delete">Usuń</string>
- <string name="btn_no_date">Żaden</string>
<string name="btn_okay">Ok</string>
<string name="btn_export_to_server">Wyślij do serwera kluczy</string>
<string name="btn_next">Dalej</string>
@@ -54,7 +53,6 @@
<string name="label_no_passphrase">Brak hasła</string>
<string name="label_passphrase">Hasło</string>
<string name="label_algorithm">Algorytm</string>
- <string name="label_ascii_armor">ASCII Armor</string>
<string name="label_delete_after_decryption">Usuń po odszyfrowaniu</string>
<string name="label_encryption_algorithm">Algorytm szyfrujący</string>
<string name="label_hash_algorithm">Algorytm funkcji skrótu</string>
@@ -230,7 +228,6 @@
<string name="key_size_8192">8192</string>
<string name="key_size_custom">Własny rozmiar klucza</string>
<string name="key_size_custom_info">Podaj własną długość klucza (w bitach):</string>
- <string name="key_size_custom_info_rsa">Długośc klucza RSA musi być większa niż 1024 i równa co najwyżej 8192. Musi być także wielokrotnością 8.</string>
<string name="key_size_custom_info_dsa">Długośc klucza DSA musi być równa co najmniej 512 i co najwyżej 1024. Musi być także wielokrotnością 64.</string>
<!--compression-->
<string name="compression_fast">szybka</string>
diff --git a/OpenKeychain/src/main/res/values-ro/strings.xml b/OpenKeychain/src/main/res/values-ro/strings.xml
deleted file mode 100644
index 4cf33460a..000000000
--- a/OpenKeychain/src/main/res/values-ro/strings.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <!--title-->
- <!--section-->
- <!--button-->
- <!--menu-->
- <!--label-->
- <!--choice-->
- <!--key flags-->
- <!--sentences-->
- <!--errors
- no punctuation, all lowercase,
- they will be put after "error_message", e.g. "Error: file not found"-->
- <!--errors without preceeding Error:-->
- <!--results shown after decryption/verification-->
- <!--progress dialogs, usually ending in '…'-->
- <!--action strings-->
- <!--key bit length selections-->
- <!--compression-->
- <!--Help-->
- <!--Import-->
- <!--Import result toast-->
- <!--Intent labels-->
- <!--Remote API-->
- <!--Share-->
- <!--Key list-->
- <!--Key view-->
- <!--Edit key-->
- <!--Create key-->
- <!--View key-->
- <!--Navigation Drawer-->
- <!--hints-->
- <!--certs-->
- <!--Import Public log entries-->
- <!--Import Secret log entries-->
- <!--Keyring Canonicalization log entries-->
- <!--Keyring merging log entries-->
- <!--createSecretKeyRing-->
- <!--modifySecretKeyRing-->
- <!--PassphraseCache-->
- <!--unsorted-->
- <!--First Time-->
-</resources>
diff --git a/OpenKeychain/src/main/res/values-ru/strings.xml b/OpenKeychain/src/main/res/values-ru/strings.xml
index 7e6516abe..fd2c0312d 100644
--- a/OpenKeychain/src/main/res/values-ru/strings.xml
+++ b/OpenKeychain/src/main/res/values-ru/strings.xml
@@ -43,7 +43,6 @@
<string name="btn_save">Сохранить</string>
<string name="btn_do_not_save">Отмена</string>
<string name="btn_delete">Удалить</string>
- <string name="btn_no_date">Нет</string>
<string name="btn_okay">Да</string>
<string name="btn_export_to_server">Загрузить на сервер ключей</string>
<string name="btn_next">Далее</string>
@@ -69,7 +68,6 @@
<string name="label_no_passphrase">Без пароля</string>
<string name="label_passphrase">Пароль</string>
<string name="label_algorithm">Алгоритм</string>
- <string name="label_ascii_armor">ASCII формат</string>
<string name="label_delete_after_decryption">Удалить после расшифровки</string>
<string name="label_encryption_algorithm">Алгоритм шифрования</string>
<string name="label_hash_algorithm">Hash-алгоритм</string>
@@ -252,7 +250,6 @@
<string name="key_size_8192">8192</string>
<string name="key_size_custom">Произвольная длина ключа</string>
<string name="key_size_custom_info">Введите длину ключа (бит):</string>
- <string name="key_size_custom_info_rsa">Длина RSA ключа должна быть в пределах между 1024 и 8192 бит и должна быть кратна 8.</string>
<string name="key_size_custom_info_dsa">Длина DSA ключа должна быть в пределах между 512 и 1024 бит и должна быть кратна 64.</string>
<!--compression-->
<string name="compression_fast">быстро</string>
diff --git a/OpenKeychain/src/main/res/values-sk/strings.xml b/OpenKeychain/src/main/res/values-sk/strings.xml
deleted file mode 100644
index 4cf33460a..000000000
--- a/OpenKeychain/src/main/res/values-sk/strings.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
- <!--title-->
- <!--section-->
- <!--button-->
- <!--menu-->
- <!--label-->
- <!--choice-->
- <!--key flags-->
- <!--sentences-->
- <!--errors
- no punctuation, all lowercase,
- they will be put after "error_message", e.g. "Error: file not found"-->
- <!--errors without preceeding Error:-->
- <!--results shown after decryption/verification-->
- <!--progress dialogs, usually ending in '…'-->
- <!--action strings-->
- <!--key bit length selections-->
- <!--compression-->
- <!--Help-->
- <!--Import-->
- <!--Import result toast-->
- <!--Intent labels-->
- <!--Remote API-->
- <!--Share-->
- <!--Key list-->
- <!--Key view-->
- <!--Edit key-->
- <!--Create key-->
- <!--View key-->
- <!--Navigation Drawer-->
- <!--hints-->
- <!--certs-->
- <!--Import Public log entries-->
- <!--Import Secret log entries-->
- <!--Keyring Canonicalization log entries-->
- <!--Keyring merging log entries-->
- <!--createSecretKeyRing-->
- <!--modifySecretKeyRing-->
- <!--PassphraseCache-->
- <!--unsorted-->
- <!--First Time-->
-</resources>
diff --git a/OpenKeychain/src/main/res/values-sl/strings.xml b/OpenKeychain/src/main/res/values-sl/strings.xml
index a6426b3e8..0a7b4713e 100644
--- a/OpenKeychain/src/main/res/values-sl/strings.xml
+++ b/OpenKeychain/src/main/res/values-sl/strings.xml
@@ -43,7 +43,6 @@
<string name="btn_save">Shrani</string>
<string name="btn_do_not_save">Prekliči</string>
<string name="btn_delete">Izbriši</string>
- <string name="btn_no_date">Brez</string>
<string name="btn_okay">OK</string>
<string name="btn_export_to_server">Naloži na strežnik</string>
<string name="btn_next">Naprej</string>
@@ -69,7 +68,6 @@
<string name="label_no_passphrase">Brez gesla</string>
<string name="label_passphrase">Geslo</string>
<string name="label_algorithm">Algoritem</string>
- <string name="label_ascii_armor">ASCII Armor</string>
<string name="label_delete_after_decryption">Po dešifriranju izbriši</string>
<string name="label_encryption_algorithm">Šifrirni algoritem</string>
<string name="label_hash_algorithm">Zgostitveni algoritem</string>
@@ -258,7 +256,6 @@
<string name="key_size_8192">8192</string>
<string name="key_size_custom">Dolžina ključa po meri</string>
<string name="key_size_custom_info">Vnesite željeno dolžino ključa (v bitih):</string>
- <string name="key_size_custom_info_rsa">Ključ RSA mora biti daljši od 1024 bitov, a največ 8192 bitov. Hkrati mora biti deljiv z 8.</string>
<string name="key_size_custom_info_dsa">Ključ DSA mora biti daljši od 512 bitov, a največ 1024 bitov. Hkrati mora biti deljiv z 64.</string>
<!--compression-->
<string name="compression_fast">hitro</string>
diff --git a/OpenKeychain/src/main/res/values-uk/strings.xml b/OpenKeychain/src/main/res/values-uk/strings.xml
index 74713ca33..42ac94c32 100644
--- a/OpenKeychain/src/main/res/values-uk/strings.xml
+++ b/OpenKeychain/src/main/res/values-uk/strings.xml
@@ -43,7 +43,6 @@
<string name="btn_save">Зберегти</string>
<string name="btn_do_not_save">Скасувати</string>
<string name="btn_delete">Вилучити</string>
- <string name="btn_no_date">Жоден</string>
<string name="btn_okay">Гаразд</string>
<string name="btn_export_to_server">Завантажити на сервер ключів</string>
<string name="btn_next">Далі</string>
@@ -69,7 +68,6 @@
<string name="label_no_passphrase">Без парольної фрази</string>
<string name="label_passphrase">Парольна фраза</string>
<string name="label_algorithm">Алгоритм</string>
- <string name="label_ascii_armor">ASCII Броня</string>
<string name="label_delete_after_decryption">Вилучити після розшифрування</string>
<string name="label_encryption_algorithm">Алгоритм шифрування</string>
<string name="label_hash_algorithm">Хеш алгоритм</string>
@@ -252,7 +250,6 @@
<string name="key_size_8192">8192</string>
<string name="key_size_custom">Особливий розмір ключа</string>
<string name="key_size_custom_info">Введіть інший розмір ключа (у бітах):</string>
- <string name="key_size_custom_info_rsa">Довжина ключа RSA має бути більша за 1024 та менша за 8192. Також він має мати кратність 8.</string>
<string name="key_size_custom_info_dsa">Довжина ключа DSA має бути більша за 512 та менша за 1024. Також він має мати кратність 64.</string>
<!--compression-->
<string name="compression_fast">швидке</string>
diff --git a/OpenKeychain/src/main/res/values-zh/strings.xml b/OpenKeychain/src/main/res/values-zh/strings.xml
index 7f0ec99fd..8e5d42bb7 100644
--- a/OpenKeychain/src/main/res/values-zh/strings.xml
+++ b/OpenKeychain/src/main/res/values-zh/strings.xml
@@ -24,7 +24,6 @@
<string name="btn_save">保存</string>
<string name="btn_do_not_save">取消</string>
<string name="btn_delete">删除</string>
- <string name="btn_no_date">无</string>
<!--menu-->
<string name="menu_help">帮助</string>
<string name="menu_delete_key">删除密钥</string>
diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml
index 952e315cf..09a434d5d 100644
--- a/OpenKeychain/src/main/res/values/strings.xml
+++ b/OpenKeychain/src/main/res/values/strings.xml
@@ -28,6 +28,7 @@
<string name="title_key_details">Key Details</string>
<string name="title_help">Help</string>
<string name="title_log_display">Log</string>
+ <string name="title_create_key">Create Key</string>
<!-- section -->
<string name="section_user_ids">Identities</string>
@@ -89,8 +90,8 @@
<string name="label_algorithm">Algorithm</string>
<string name="label_ascii_armor">File ASCII Armor</string>
<string name="label_file_ascii_armor">Files: ASCII Armor</string>
- <string name="label_conceal_pgp_application">Let others know that you\'re using OpenKeychain</string>
- <string name="label_conceal_pgp_application_summary">Writes \'OpenKeychain v2.7\' to OpenPGP signatures, ciphertext, and exported keys</string>
+ <string name="label_write_version_header">Let others know that you\'re using OpenKeychain</string>
+ <string name="label_write_version_header_summary">Writes \'OpenKeychain v2.7\' to OpenPGP signatures, ciphertext, and exported keys</string>
<string name="label_asymmetric_from">From:</string>
<string name="label_to">To:</string>
<string name="label_delete_after_encryption">Files: Delete After Encryption</string>
@@ -389,6 +390,7 @@
<string name="api_settings_accounts">Accounts</string>
<string name="api_settings_accounts_empty">No accounts attached to this app.</string>
<string name="api_create_account_text">The app requests the creation of a new account. Please select one of your existing keys or create a new one.\nApps are restricted to the usage of keys you select here!</string>
+ <string name="api_update_account_text">The key saved for this account has been deleted. Please select a different one!\nApps are restricted to the usage of keys you select here!</string>
<string name="api_register_text">The displayed app wants to encrypt/decrypt messages and sign them in your name.\nAllow access?\n\nWARNING: If you do not know why this screen appeared, disallow access! You can revoke access later using the \'Apps\' screen.</string>
<string name="api_register_allow">Allow access</string>
<string name="api_register_disallow">Disallow access</string>
@@ -426,6 +428,14 @@
<string name="key_view_tab_share">Share</string>
<string name="key_view_tab_keys">Subkeys</string>
<string name="key_view_tab_certs">Certificates</string>
+ <string name="user_id_info_revoked_title">Revoked</string>
+ <string name="user_id_info_revoked_text">This identity has been revoked by the key owner. It is no longer valid.</string>
+ <string name="user_id_info_verified_title">Verified</string>
+ <string name="user_id_info_verified_text">This identity has been verified.</string>
+ <string name="user_id_info_not_verified_title">Not verified</string>
+ <string name="user_id_info_not_verified_text">This identity has not been verified yet. You can not be sure if the identity really corresponds to a specific person.</string>
+ <string name="user_id_info_invalid_title">Invalid</string>
+ <string name="user_id_info_invalid_text">Something is wrong with this identity!</string>
<!-- Edit key -->
<string name="edit_key_action_change_passphrase">Change Passphrase</string>
diff --git a/OpenKeychain/src/main/res/xml/adv_preferences.xml b/OpenKeychain/src/main/res/xml/adv_preferences.xml
index 0426ca298..49f241ffe 100644
--- a/OpenKeychain/src/main/res/xml/adv_preferences.xml
+++ b/OpenKeychain/src/main/res/xml/adv_preferences.xml
@@ -40,9 +40,9 @@
</PreferenceCategory>
<PreferenceCategory android:title="@string/section_advanced">
<CheckBoxPreference
- android:key="concealPgpApplication"
+ android:key="writeVersionHeader"
android:persistent="false"
- android:title="@string/label_conceal_pgp_application"
- android:summary="@string/label_conceal_pgp_application_summary" />
+ android:title="@string/label_write_version_header"
+ android:summary="@string/label_write_version_header_summary" />
</PreferenceCategory>
</PreferenceScreen>