From 83a5d5f8f863d6df790b3fe5f406e5702b796183 Mon Sep 17 00:00:00 2001 From: Rick Deckard Date: Tue, 28 Dec 2010 10:36:41 +0000 Subject: [PATCH 1/9] Update italian translations --- res/values-it/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index b252606c4..d1d76f09d 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -141,6 +141,7 @@ scaduto non valido %s key server(s) + fingerprint Nessuno @@ -154,6 +155,10 @@ 10 min 20 min 40 min + 1 ora + 2 ore + 4 ore + 8 ore tutta la sessione Default di sistema @@ -223,6 +228,7 @@ non è stato trovato nessun tipo di crittazione valido la scheda di memoria non è pronta o non è utilizzabile acconto \'%s\' non trovato + accesso in lettura all'\account negato non è stato possibile aggiungere l\'acconto \'%s\' mail non valida \'%s\' la dimensione della chiave deve essere almeno di 512bit From 1edac5a61ee36d466daeb91dea86b4ff3c2a2ccf Mon Sep 17 00:00:00 2001 From: Markus Doits Date: Wed, 29 Dec 2010 12:11:25 +0000 Subject: [PATCH 2/9] Allow progress-meter to be null No need to force people to use progressmeter --- src/org/thialfihar/android/apg/Apg.java | 146 ++++++++++++++++-------- 1 file changed, 96 insertions(+), 50 deletions(-) diff --git a/src/org/thialfihar/android/apg/Apg.java b/src/org/thialfihar/android/apg/Apg.java index b7d327077..cf71185e1 100644 --- a/src/org/thialfihar/android/apg/Apg.java +++ b/src/org/thialfihar/android/apg/Apg.java @@ -400,7 +400,8 @@ public class Apg { throws Apg.GeneralException, NoSuchProviderException, PGPException, NoSuchAlgorithmException, SignatureException, IOException, Database.GeneralException { - progress.setProgress(R.string.progress_buildingKey, 0, 100); + if( progress != null ) + progress.setProgress(R.string.progress_buildingKey, 0, 100); Security.addProvider(new BouncyCastleProvider()); @@ -461,7 +462,8 @@ public class Apg { keys.add(editor.getValue()); } - progress.setProgress(R.string.progress_preparingMasterKey, 10, 100); + if( progress != null ) + progress.setProgress(R.string.progress_preparingMasterKey, 10, 100); KeyEditor keyEditor = (KeyEditor) keyEditors.getChildAt(0); int usageId = keyEditor.getUsage(); boolean canSign = (usageId == Id.choice.usage.sign_only || @@ -481,7 +483,8 @@ public class Apg { masterKey.extractPrivateKey(oldPassPhrase.toCharArray(), new BouncyCastleProvider()); - progress.setProgress(R.string.progress_certifyingMasterKey, 20, 100); + if( progress != null ) + progress.setProgress(R.string.progress_certifyingMasterKey, 20, 100); for (int i = 0; i < userIds.size(); ++i) { String userId = userIds.get(i); @@ -525,7 +528,8 @@ public class Apg { hashedPacketsGen.setKeyExpirationTime(true, numDays * 86400); } - progress.setProgress(R.string.progress_buildingMasterKeyRing, 30, 100); + if( progress != null ) + progress.setProgress(R.string.progress_buildingMasterKeyRing, 30, 100); PGPKeyRingGenerator keyGen = new PGPKeyRingGenerator(PGPSignature.POSITIVE_CERTIFICATION, masterKeyPair, mainUserId, @@ -533,9 +537,11 @@ public class Apg { hashedPacketsGen.generate(), unhashedPacketsGen.generate(), new SecureRandom(), new BouncyCastleProvider().getName()); - progress.setProgress(R.string.progress_addingSubKeys, 40, 100); + if( progress != null ) + progress.setProgress(R.string.progress_addingSubKeys, 40, 100); for (int i = 1; i < keys.size(); ++i) { - progress.setProgress(40 + 50 * (i - 1)/ (keys.size() - 1), 100); + if( progress != null ) + progress.setProgress(40 + 50 * (i - 1)/ (keys.size() - 1), 100); PGPSecretKey subKey = keys.get(i); keyEditor = (KeyEditor) keyEditors.getChildAt(i); PGPPublicKey subPublicKey = subKey.getPublicKey(); @@ -584,11 +590,13 @@ public class Apg { PGPSecretKeyRing secretKeyRing = keyGen.generateSecretKeyRing(); PGPPublicKeyRing publicKeyRing = keyGen.generatePublicKeyRing(); - progress.setProgress(R.string.progress_savingKeyRing, 90, 100); + if( progress != null ) + progress.setProgress(R.string.progress_savingKeyRing, 90, 100); mDatabase.saveKeyRing(secretKeyRing); mDatabase.saveKeyRing(publicKeyRing); - progress.setProgress(R.string.progress_done, 100, 100); + if( progress != null ) + progress.setProgress(R.string.progress_done, 100, 100); } public static Bundle importKeyRings(Activity context, int type, @@ -598,9 +606,11 @@ public class Apg { Bundle returnData = new Bundle(); if (type == Id.type.secret_key) { - progress.setProgress(R.string.progress_importingSecretKeys, 0, 100); + if( progress != null ) + progress.setProgress(R.string.progress_importingSecretKeys, 0, 100); } else { - progress.setProgress(R.string.progress_importingPublicKeys, 0, 100); + if( progress != null ) + progress.setProgress(R.string.progress_importingPublicKeys, 0, 100); } if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { @@ -671,7 +681,8 @@ public class Apg { } else if (retValue == Id.return_value.bad) { ++badKeys; } - progress.setProgress((int)(100 * progressIn.position() / data.getSize()), 100); + if( progress != null ) + progress.setProgress((int)(100 * progressIn.position() / data.getSize()), 100); obj = objectFactory.nextObject(); } } @@ -683,7 +694,8 @@ public class Apg { returnData.putInt("updated", oldKeys); returnData.putInt("bad", badKeys); - progress.setProgress(R.string.progress_done, 100, 100); + if( progress != null ) + progress.setProgress(R.string.progress_done, 100, 100); return returnData; } @@ -695,9 +707,11 @@ public class Apg { Bundle returnData = new Bundle(); if (keyRingIds.size() == 1) { - progress.setProgress(R.string.progress_exportingKey, 0, 100); + if( progress != null ) + progress.setProgress(R.string.progress_exportingKey, 0, 100); } else { - progress.setProgress(R.string.progress_exportingKeys, 0, 100); + if( progress != null ) + progress.setProgress(R.string.progress_exportingKeys, 0, 100); } if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { @@ -707,7 +721,8 @@ public class Apg { int numKeys = 0; for (int i = 0; i < keyRingIds.size(); ++i) { - progress.setProgress(i * 100 / keyRingIds.size(), 100); + if( progress != null ) + progress.setProgress(i * 100 / keyRingIds.size(), 100); Object obj = mDatabase.getKeyRing(keyRingIds.get(i)); PGPPublicKeyRing publicKeyRing; PGPSecretKeyRing secretKeyRing; @@ -726,7 +741,8 @@ public class Apg { out.close(); returnData.putInt("exported", numKeys); - progress.setProgress(R.string.progress_done, 100, 100); + if( progress != null ) + progress.setProgress(R.string.progress_done, 100, 100); return returnData; } @@ -1236,15 +1252,16 @@ public class Apg { if (signaturePassPhrase == null) { throw new GeneralException(context.getString(R.string.error_noSignaturePassPhrase)); } - progress.setProgress(R.string.progress_extractingSignatureKey, 0, 100); + if( progress != null ) + progress.setProgress(R.string.progress_extractingSignatureKey, 0, 100); signaturePrivateKey = signingKey.extractPrivateKey(signaturePassPhrase.toCharArray(), new BouncyCastleProvider()); if (signaturePrivateKey == null) { throw new GeneralException(context.getString(R.string.error_couldNotExtractPrivateKey)); } } - - progress.setProgress(R.string.progress_preparingStreams, 5, 100); + if( progress != null ) + progress.setProgress(R.string.progress_preparingStreams, 5, 100); // encrypt and compress input file content PGPEncryptedDataGenerator cPk = new PGPEncryptedDataGenerator(symmetricAlgorithm, true, new SecureRandom(), @@ -1266,7 +1283,8 @@ public class Apg { PGPV3SignatureGenerator signatureV3Generator = null; if (signatureKeyId != 0) { - progress.setProgress(R.string.progress_preparingSignature, 10, 100); + if( progress != null ) + progress.setProgress(R.string.progress_preparingSignature, 10, 100); if (forceV3Signature) { signatureV3Generator = new PGPV3SignatureGenerator(signingKey.getPublicKey().getAlgorithm(), @@ -1307,8 +1325,8 @@ public class Apg { // file name not needed, so empty string OutputStream pOut = literalGen.open(bcpgOut, PGPLiteralData.BINARY, "", new Date(), new byte[1 << 16]); - - progress.setProgress(R.string.progress_encrypting, 20, 100); + if( progress != null ) + progress.setProgress(R.string.progress_encrypting, 20, 100); long done = 0; int n = 0; byte[] buffer = new byte[1 << 16]; @@ -1324,14 +1342,16 @@ public class Apg { } done += n; if (data.getSize() != 0) { - progress.setProgress((int) (20 + (95 - 20) * done / data.getSize()), 100); + if( progress != null ) + progress.setProgress((int) (20 + (95 - 20) * done / data.getSize()), 100); } } literalGen.close(); if (signatureKeyId != 0) { - progress.setProgress(R.string.progress_generatingSignature, 95, 100); + if( progress != null ) + progress.setProgress(R.string.progress_generatingSignature, 95, 100); if (forceV3Signature) { signatureV3Generator.generate().encode(pOut); } else { @@ -1346,7 +1366,8 @@ public class Apg { armorOut.close(); } - progress.setProgress(R.string.progress_done, 100, 100); + if( progress != null ) + progress.setProgress(R.string.progress_done, 100, 100); } public static void signText(Context context, @@ -1385,9 +1406,11 @@ public class Apg { if (signaturePrivateKey == null) { throw new GeneralException(context.getString(R.string.error_couldNotExtractPrivateKey)); } - progress.setProgress(R.string.progress_preparingStreams, 0, 100); + if( progress != null ) + progress.setProgress(R.string.progress_preparingStreams, 0, 100); - progress.setProgress(R.string.progress_preparingSignature, 30, 100); + if( progress != null ) + progress.setProgress(R.string.progress_preparingSignature, 30, 100); PGPSignatureGenerator signatureGenerator = null; PGPV3SignatureGenerator signatureV3Generator = null; @@ -1411,7 +1434,8 @@ public class Apg { signatureGenerator.setHashedSubpackets(spGen.generate()); } - progress.setProgress(R.string.progress_signing, 40, 100); + if( progress != null ) + progress.setProgress(R.string.progress_signing, 40, 100); armorOut.beginClearText(hashAlgorithm); @@ -1454,7 +1478,8 @@ public class Apg { } armorOut.close(); - progress.setProgress(R.string.progress_done, 100, 100); + if( progress != null ) + progress.setProgress(R.string.progress_done, 100, 100); } public static void generateSignature(Context context, @@ -1501,9 +1526,11 @@ public class Apg { if (signaturePrivateKey == null) { throw new GeneralException(context.getString(R.string.error_couldNotExtractPrivateKey)); } - progress.setProgress(R.string.progress_preparingStreams, 0, 100); + if( progress != null ) + progress.setProgress(R.string.progress_preparingStreams, 0, 100); - progress.setProgress(R.string.progress_preparingSignature, 30, 100); + if( progress != null ) + progress.setProgress(R.string.progress_preparingSignature, 30, 100); PGPSignatureGenerator signatureGenerator = null; PGPV3SignatureGenerator signatureV3Generator = null; @@ -1532,7 +1559,8 @@ public class Apg { signatureGenerator.setHashedSubpackets(spGen.generate()); } - progress.setProgress(R.string.progress_signing, 40, 100); + if( progress != null ) + progress.setProgress(R.string.progress_signing, 40, 100); InputStream inStream = data.getInputStream(); if (binary) { @@ -1575,7 +1603,8 @@ public class Apg { out.close(); outStream.close(); - progress.setProgress(R.string.progress_done, 100, 100); + if( progress != null ) + progress.setProgress(R.string.progress_done, 100, 100); } public static long getDecryptionKeyId(Context context, InputData data) @@ -1669,7 +1698,8 @@ public class Apg { long signatureKeyId = 0; int currentProgress = 0; - progress.setProgress(R.string.progress_readingData, currentProgress, 100); + if( progress != null ) + progress.setProgress(R.string.progress_readingData, currentProgress, 100); if (o instanceof PGPEncryptedDataList) { enc = (PGPEncryptedDataList) o; @@ -1704,12 +1734,14 @@ public class Apg { throw new GeneralException(context.getString(R.string.error_noSymmetricEncryptionPacket)); } - progress.setProgress(R.string.progress_preparingStreams, currentProgress, 100); + if( progress != null ) + progress.setProgress(R.string.progress_preparingStreams, currentProgress, 100); clear = pbe.getDataStream(passPhrase.toCharArray(), new BouncyCastleProvider()); encryptedData = pbe; currentProgress += 5; } else { - progress.setProgress(R.string.progress_findingKey, currentProgress, 100); + if( progress != null ) + progress.setProgress(R.string.progress_findingKey, currentProgress, 100); PGPPublicKeyEncryptedData pbe = null; PGPSecretKey secretKey = null; Iterator it = enc.getEncryptedDataObjects(); @@ -1731,7 +1763,8 @@ public class Apg { } currentProgress += 5; - progress.setProgress(R.string.progress_extractingKey, currentProgress, 100); + if( progress != null ) + progress.setProgress(R.string.progress_extractingKey, currentProgress, 100); PGPPrivateKey privateKey = null; try { privateKey = secretKey.extractPrivateKey(passPhrase.toCharArray(), @@ -1743,7 +1776,8 @@ public class Apg { throw new GeneralException(context.getString(R.string.error_couldNotExtractPrivateKey)); } currentProgress += 5; - progress.setProgress(R.string.progress_preparingStreams, currentProgress, 100); + if( progress != null ) + progress.setProgress(R.string.progress_preparingStreams, currentProgress, 100); clear = pbe.getDataStream(privateKey, new BouncyCastleProvider()); encryptedData = pbe; currentProgress += 5; @@ -1756,7 +1790,8 @@ public class Apg { int signatureIndex = -1; if (dataChunk instanceof PGPCompressedData) { - progress.setProgress(R.string.progress_decompressingData, currentProgress, 100); + if( progress != null ) + progress.setProgress(R.string.progress_decompressingData, currentProgress, 100); PGPObjectFactory fact = new PGPObjectFactory(((PGPCompressedData) dataChunk).getDataStream()); dataChunk = fact.nextObject(); @@ -1765,7 +1800,8 @@ public class Apg { } if (dataChunk instanceof PGPOnePassSignatureList) { - progress.setProgress(R.string.progress_processingSignature, currentProgress, 100); + if( progress != null ) + progress.setProgress(R.string.progress_processingSignature, currentProgress, 100); returnData.putBoolean(EXTRA_SIGNATURE, true); PGPOnePassSignatureList sigList = (PGPOnePassSignatureList) dataChunk; for (int i = 0; i < sigList.size(); ++i) { @@ -1802,7 +1838,8 @@ public class Apg { } if (dataChunk instanceof PGPLiteralData) { - progress.setProgress(R.string.progress_decrypting, currentProgress, 100); + if( progress != null ) + progress.setProgress(R.string.progress_decrypting, currentProgress, 100); PGPLiteralData literalData = (PGPLiteralData) dataChunk; OutputStream out = outStream; @@ -1838,11 +1875,13 @@ public class Apg { currentProgress = (int)(startProgress + (endProgress - startProgress) * (data.getStreamPosition() - startPos) / (data.getSize() - startPos)); } - progress.setProgress(currentProgress, 100); + if( progress != null ) + progress.setProgress(currentProgress, 100); } if (signature != null) { - progress.setProgress(R.string.progress_verifyingSignature, 90, 100); + if( progress != null ) + progress.setProgress(R.string.progress_verifyingSignature, 90, 100); PGPSignatureList signatureList = (PGPSignatureList) plainFact.nextObject(); PGPSignature messageSignature = (PGPSignature) signatureList.get(signatureIndex); if (signature.verify(messageSignature)) { @@ -1855,7 +1894,8 @@ public class Apg { // TODO: add integrity somewhere if (encryptedData.isIntegrityProtected()) { - progress.setProgress(R.string.progress_verifyingIntegrity, 95, 100); + if( progress != null ) + progress.setProgress(R.string.progress_verifyingIntegrity, 95, 100); if (encryptedData.verify()) { // passed } else { @@ -1865,7 +1905,8 @@ public class Apg { // no integrity check } - progress.setProgress(R.string.progress_done, 100, 100); + if( progress != null ) + progress.setProgress(R.string.progress_done, 100, 100); return returnData; } @@ -1878,7 +1919,8 @@ public class Apg { ByteArrayOutputStream out = new ByteArrayOutputStream(); ArmoredInputStream aIn = new ArmoredInputStream(data.getInputStream()); - progress.setProgress(R.string.progress_done, 0, 100); + if( progress != null ) + progress.setProgress(R.string.progress_done, 0, 100); // mostly taken from ClearSignedFileProcessor ByteArrayOutputStream lineOut = new ByteArrayOutputStream(); @@ -1903,7 +1945,8 @@ public class Apg { returnData.putBoolean(EXTRA_SIGNATURE, true); - progress.setProgress(R.string.progress_processingSignature, 60, 100); + if( progress != null ) + progress.setProgress(R.string.progress_processingSignature, 60, 100); PGPObjectFactory pgpFact = new PGPObjectFactory(aIn); PGPSignatureList sigList = (PGPSignatureList) pgpFact.nextObject(); @@ -1950,7 +1993,8 @@ public class Apg { if (signature == null) { returnData.putBoolean(EXTRA_SIGNATURE_UNKNOWN, true); - progress.setProgress(R.string.progress_done, 100, 100); + if( progress != null ) + progress.setProgress(R.string.progress_done, 100, 100); return returnData; } @@ -1976,7 +2020,8 @@ public class Apg { returnData.putBoolean(EXTRA_SIGNATURE_SUCCESS, signature.verify()); - progress.setProgress(R.string.progress_done, 100, 100); + if( progress != null ) + progress.setProgress(R.string.progress_done, 100, 100); return returnData; } @@ -2234,7 +2279,8 @@ public class Apg { int pos = 0; String msg = context.getString(R.string.progress_deletingSecurely, file.getName()); while (pos < length) { - progress.setProgress(msg, (int)(100 * pos / length), 100); + if( progress != null ) + progress.setProgress(msg, (int)(100 * pos / length), 100); random.nextBytes(data); raf.write(data); pos += data.length; From 86e06eeabeaff5e9470ec23b2cc02ebd74fd15d9 Mon Sep 17 00:00:00 2001 From: Markus Doits Date: Thu, 30 Dec 2010 13:47:10 +0000 Subject: [PATCH 3/9] Allow to regenerate shared preferences Merge of r326 to trunk --- src/org/thialfihar/android/apg/Preferences.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/org/thialfihar/android/apg/Preferences.java b/src/org/thialfihar/android/apg/Preferences.java index d22565804..e704d79f3 100644 --- a/src/org/thialfihar/android/apg/Preferences.java +++ b/src/org/thialfihar/android/apg/Preferences.java @@ -12,9 +12,13 @@ public class Preferences { private static Preferences mPreferences; private SharedPreferences mSharedPreferences; - public static synchronized Preferences getPreferences(Context context) + public static synchronized Preferences getPreferences(Context context) { + return getPreferences(context, false); + } + + public static synchronized Preferences getPreferences(Context context, boolean force_new) { - if (mPreferences == null) { + if (mPreferences == null || force_new) { mPreferences = new Preferences(context); } return mPreferences; From 36c2b860ce2e46cbfcf7a00bdda03ddc15e4cc3d Mon Sep 17 00:00:00 2001 From: Thialfihar Date: Sat, 5 Feb 2011 16:09:01 +0000 Subject: [PATCH 4/9] strings fixes in IT and NO version --- res/values-it/strings.xml | 2 +- res/values-no/strings.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index d1d76f09d..e6f286de5 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -228,7 +228,7 @@ non è stato trovato nessun tipo di crittazione valido la scheda di memoria non è pronta o non è utilizzabile acconto \'%s\' non trovato - accesso in lettura all'\account negato + accesso in lettura all\'account negato non è stato possibile aggiungere l\'acconto \'%s\' mail non valida \'%s\' la dimensione della chiave deve essere almeno di 512bit diff --git a/res/values-no/strings.xml b/res/values-no/strings.xml index 1d372f386..c40f53883 100644 --- a/res/values-no/strings.xml +++ b/res/values-no/strings.xml @@ -1,4 +1,4 @@ -cho + + + + APG + + + Caixa de Entrada + Gerir Chaves Públicas + Gerir Chaves Privadas + + Escolher Destinatários + Escolher Assinatura + Cifrar + Decifrar + Senha + Criar Chave + + Editar Chave + Preferências + Preferências de Servidor de Chaves + Alterar Senha + Definir Senha + "Enviar Email..." + + Cifrar Para Arquivo + Descifrar Para Arquivo + Adicionar Conta + Importar Chaves + Exportar Chave + Exportar Chaves + + Chave Não Encontrada + Conhecendo + Busca no Servidor de Chaves + Assinatura Desconhecida + + + IDs de Usuários + + Chaves + Geral + Padrões + Avançado + + + Assinar Para Clipboard + + Cifrar Para Clipboard + Cifrar Para Email + Assinar Para Email + Cifrar + Assinar + Decifrar + + Verificar + Escolher Destinatários + Responder + Cifrar Mensagem + Decifrar Mesagem + Cifrar Arquivo + + Decifrar Arquivo + Salvar + Cancelar + Apagar + Nenhuma + Limpar Filtro + + Alterar Senha + Definir Senha + Buscar + + + Sobre + Adicionar Conta GMail + + Apagar Conta + Gerir Chaves Públicas + Gerir Chaves Privadas + Configurações + Importar Chaves + Exportar Chaves + + Exportar Chave + Apagar Chave + Criar Chave + Editar Chave + Buscar + Ajuda + + Servidor de Chaves + Atualizar + + + Assinar + Mensagem + Arquivo + + Senha + Novamente + Algoritmo + Armadura ASCII + Chave(s) Pública(s) + Apagar Após Cifrar + + Apagar Após Decifrar + Apagar Após Importar + Algoritmo de Cifragem + Algoritmo de Hash + Chave Pública + Senha + + Cache de Senhas + Compressão de Mensagem + Compressão de Arquivo + Língua + Forçar Assinaturas V3 + Servidores de Chave + + ID da Chave + Criação + Expiração + Uso + Tamanho da Chave + ID do Usuário Principal + + Nome + Comentário + Email + + Selecionar + 1 Selecionada + Selecionada + + <desconhecido> + <ninguém> + <sem chave> + - + <não expira> + + + pode cifrar + pode assinar + expirada + não válida + %s servidor(es) de chave(s) + fingerprint + + + Nenhum + Assinar apenas + Cifrar apenas + Assinar e Cifrar + 15 segs + + 1 min + 3 mins + 5 mins + 10 mins + 20 mins + 40 mins + + 1 hora + 2 horas + 4 horas + 8 horas + até sair + Padrões do sistema + + DSA + ElGamal + RSA + + Abrir... + Salvar Como... + + Selecionar Arquivo para Cifrar... + Selecionar Arquivo para Decifrar... + Abrir + Salvar + + Advertência + Erro + + Advertência: %s + Erro: %s + + + Chave errada. + Usando conteúdo do clipboard. + Chave salva. + + Defina uma senha antes. + Não há gerenciador de arquivos compatível instalado. + A senha não confere. + Não são permitidas senhas vazias. + Cifragem simétrica. + %s + + Tem certeza que deseja apagar\n%s? + Apagado com sucesso. + Selecione um arquivo primeiro. + Decifrado com sucesso. + Cifrado com sucesso. + Cifrado para clipboard com sucesso. + + Insira a senha duas vezes. + Selecione pelo menos uma chave de cifragem. + Selecione pelo menos uma chave de cifragem ou uma chave de assinatura. + Especifique o arquivo a cifrar sobre.\nATENÇÃO! O arquivo, se existir, será sobrescrito! + Especifique o arquivo a decifrar sobre.\nATENÇÃO! O arquivo, se existir, será sobrescrito! + Especifique a conta de Email do Google que deseja adicionar. + + Especifique o arquivo para importação de chaves. (.asc or .gpg) + + Especifique o arquivo de exportação.\nATENÇÃO! O arquivo, se existir, será sobrescrito! + Especifique o arquivo de exportação.\nATENÇÃO! Você está exportando suas chaves PRIVADAS (SECRETAS).\nATENÇÃO! O arquivo, se existir, será sobrescrito. + Você realmente deseja apagar a chave \'%s\'?\nEssa ação não pode ser desfeita! + Você realmente deseja apagar a chave PRIVADA \'%s\'?\nEssa ação não pode ser desfeita! + Adicionada(s) com sucesso %1$s chave(s) e atualizada(s) %2$s chave(s). + + Adicionada(s) %s chave(s) com sucesso. + Atualizada(s) %s chaves(s) com sucesso. + Nenhuma chave adicionada ou atualizada. + 1 chave exportada com sucesso. + %s chaves exportadas com sucesso. + Nenhuma chave exportada. + + Nota: apenas as sub-chaves suportam ElGamal, e para ElGamal se usuára o tamanho mais próximo a 1536, 2048, 3072, 4096, ou 8192. + Não se pode encontrar a chave %08X. + %s chave(s) encontrada(s). + Assinatura desconhecida, toque para buscar a chave. + A edição de chaves ainda está na versão beta. + + + %s chave(s) secreta(s) ignoradas. Provavelmente foram exportadas com a opção\n --export-secret-subkeys\nCertifique-se de exporta com a opção\n --export-secret-keys + Chave %s desconhecida, você gostaria de procurá-la em um servidor de chaves? + + + erro ao apagar \'%s\' + arquivo não encontrado + não foi encontrado uma chave secreta adequada + + não foi encontrado tipo de cifragem conhecido + armazenamento externo não disponível + conta \'%s\' não encontrada + sem permissões para ler a conta + falha ao adicionar a conta \'%s\' + email inválido \'%s\' + + o tamanho da chave deve ser pelo menos 512bit + a chave primária não pode ser do tipo ElGamal + algoritmo selecionado desconhecido + é necessário informar um nome + é necessário informar um endereço de email + é necessário pelo menos um id de usuário + + id de usuário principal não pode ser vazio + é necessário pelo menos uma chave primária + data de expiração deve ser após a data de criação + não foram inseridos chave(s) de cifragem ou senha + falha na assinatura + senha não inserida + + chave para assinatura não inserida + dados a serem cifrados inválidos + dados corrompidos + não foi encontrado um pacote com criptografia simétrica + senha inválida + erro ao salvar chave(s) + + não foi possível extrair chave privada + + + pronto. + inicializando... + salvando... + importando... + + exportando... + criando chave, isso pode demorar um pouco... + criando chave... + preparando chave primária... + certificando chave primária... + criando anel de chave primária... + + adicionando sub-chaves... + salvando anel de chaves... + importando chaves secretas... + importando chaves públicas... + recarregando chaves... + exportando chave... + + exportando chaves... + extraindo chave de assinatura... + extraindo chave... + preparando fluxos... + cifrando dados... + decifrando dados... + + preparando assinatura... + gerando assinatura... + processando assinatura... + verificando assinatura... + assinando... + carregando dados... + + buscando chave... + descompactando dados... + verificando integridade... + apagando \'%s\' de forma segura... + buscando... + buscando %s... + + + Ler detalhes de chaves do APG. + Ler detalhes de chaves públicas e privadas salvas no APG, tais como ID da chave e ID do usuário. As chaves NÃO podem ser lidas. + + + Cifrar + Decifrar + + Importar Chaves Públicas + Importar Chaves Privadas + + Buscar Chaves Públicas + Buscar Chaves Privadas + Filter: \"%s\" + + + rápido + lento + muito lento + + + + + + Instale o leitor de emails K-9 para uma melhor integração. Ele suporta o APG para PGP/INLINE e permite cifragem e decifragem de emails diretamente. +\n\nÉ recomendado o uso dos Gerenciadores de Arquivos OI ou ASTRO para ser possível a utilização do botão de buscar arquivos no APG. +\n\nSão necessárias chaves para o APG. Importe-as pela opção do menu \"Gerir Chaves Públicas\" ou \"Gerir Chaves Privadas\" ou crie-as no menu \"Gerir Chaves Privadas\". +\n\nVocê também pode adicionar uma conta GMail pela opção \"Adicionar Conta\", isso simplifica a decifragem de emails. +\n\nVerifique as opções de menus para conhecer as funcionalides disponíveis. + + + diff --git a/res/values/arrays.xml b/res/values/arrays.xml index df87ab61c..25a4e66df 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -206,6 +206,7 @@ es it no + pt sl zh