Update to latest version in master

Merge branch 'master' into apg_service

Conflicts:
	src/org/thialfihar/android/apg/Apg.java
	src/org/thialfihar/android/apg/Preferences.java
This commit is contained in:
Markus Doits 2011-11-03 20:14:24 +01:00
commit 1b7fbb1eeb
5 changed files with 391 additions and 16 deletions

View File

@ -10,4 +10,4 @@
# Indicates whether an apk should be generated for each density.
split.density=false
# Project target.
target=android-8
target=android-13

361
res/values-pt/strings.xml Normal file
View File

@ -0,0 +1,361 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2010 Thialfihar <thi@thialfihar.org>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<resources>
<string name="app_name">APG</string>
<!-- title_lowerCase: capitalized words, no punctuation -->
<string name="title_mailInbox">Caixa de Entrada</string>
<string name="title_managePublicKeys">Gerir Chaves Públicas</string>
<string name="title_manageSecretKeys">Gerir Chaves Privadas</string>
<string name="title_selectRecipients">Escolher Destinatários</string>
<string name="title_selectSignature">Escolher Assinatura</string>
<string name="title_encrypt">Cifrar</string>
<string name="title_decrypt">Decifrar</string>
<string name="title_authentication">Senha</string>
<string name="title_createKey">Criar Chave</string>
<string name="title_editKey">Editar Chave</string>
<string name="title_preferences">Preferências</string>
<string name="title_keyServerPreference">Preferências de Servidor de Chaves</string>
<string name="title_changePassPhrase">Alterar Senha</string>
<string name="title_setPassPhrase">Definir Senha</string>
<string name="title_sendEmail">"Enviar Email..."</string>
<string name="title_encryptToFile">Cifrar Para Arquivo</string>
<string name="title_decryptToFile">Descifrar Para Arquivo</string>
<string name="title_addAccount">Adicionar Conta</string>
<string name="title_importKeys">Importar Chaves</string>
<string name="title_exportKey">Exportar Chave</string>
<string name="title_exportKeys">Exportar Chaves</string>
<string name="title_keyNotFound">Chave Não Encontrada</string>
<string name="title_help">Conhecendo</string>
<string name="title_keyServerQuery">Busca no Servidor de Chaves</string>
<string name="title_unknownSignatureKey">Assinatura Desconhecida</string>
<!-- section_lowerCase: capitalized words, no punctuation -->
<string name="section_userIds">IDs de Usuários</string>
<string name="section_keys">Chaves</string>
<string name="section_general">Geral</string>
<string name="section_defaults">Padrões</string>
<string name="section_advanced">Avançado</string>
<!-- btn_lowerCase: capitalized words, no punctuation -->
<string name="btn_signToClipboard">Assinar Para Clipboard</string>
<string name="btn_encryptToClipboard">Cifrar Para Clipboard</string>
<string name="btn_encryptAndEmail">Cifrar Para Email</string>
<string name="btn_signAndEmail">Assinar Para Email</string>
<string name="btn_encrypt">Cifrar</string>
<string name="btn_sign">Assinar</string>
<string name="btn_decrypt">Decifrar</string>
<string name="btn_verify">Verificar</string>
<string name="btn_selectEncryptKeys">Escolher Destinatários</string>
<string name="btn_reply">Responder</string>
<string name="btn_encryptMessage">Cifrar Mensagem</string>
<string name="btn_decryptMessage">Decifrar Mesagem</string>
<string name="btn_encryptFile">Cifrar Arquivo</string>
<string name="btn_decryptFile">Decifrar Arquivo</string>
<string name="btn_save">Salvar</string>
<string name="btn_doNotSave">Cancelar</string>
<string name="btn_delete">Apagar</string>
<string name="btn_noDate">Nenhuma</string>
<string name="btn_clearFilter">Limpar Filtro</string>
<string name="btn_changePassPhrase">Alterar Senha</string>
<string name="btn_setPassPhrase">Definir Senha</string>
<string name="btn_search">Buscar</string>
<!-- menu_lowerCase: capitalized words, no punctuation -->
<string name="menu_about">Sobre</string>
<string name="menu_addAccount">Adicionar Conta GMail</string>
<string name="menu_deleteAccount">Apagar Conta</string>
<string name="menu_managePublicKeys">Gerir Chaves Públicas</string>
<string name="menu_manageSecretKeys">Gerir Chaves Privadas</string>
<string name="menu_preferences">Configurações</string>
<string name="menu_importKeys">Importar Chaves</string>
<string name="menu_exportKeys">Exportar Chaves</string>
<string name="menu_exportKey">Exportar Chave</string>
<string name="menu_deleteKey">Apagar Chave</string>
<string name="menu_createKey">Criar Chave</string>
<string name="menu_editKey">Editar Chave</string>
<string name="menu_search">Buscar</string>
<string name="menu_help">Ajuda</string>
<string name="menu_keyServer">Servidor de Chaves</string>
<string name="menu_updateKey">Atualizar</string>
<!-- label_lowerCase: capitalized words, no punctuation -->
<string name="label_sign">Assinar</string>
<string name="label_message">Mensagem</string>
<string name="label_file">Arquivo</string>
<string name="label_passPhrase">Senha</string>
<string name="label_passPhraseAgain">Novamente</string>
<string name="label_algorithm">Algoritmo</string>
<string name="label_asciiArmour">Armadura ASCII</string>
<string name="label_selectPublicKeys">Chave(s) Pública(s)</string>
<string name="label_deleteAfterEncryption">Apagar Após Cifrar</string>
<string name="label_deleteAfterDecryption">Apagar Após Decifrar</string>
<string name="label_deleteAfterImport">Apagar Após Importar</string>
<string name="label_encryptionAlgorithm">Algoritmo de Cifragem</string>
<string name="label_hashAlgorithm">Algoritmo de Hash</string>
<string name="label_asymmetric">Chave Pública</string>
<string name="label_symmetric">Senha</string>
<string name="label_passPhraseCacheTtl">Cache de Senhas</string>
<string name="label_messageCompression">Compressão de Mensagem</string>
<string name="label_fileCompression">Compressão de Arquivo</string>
<string name="label_language">Língua</string>
<string name="label_forceV3Signature">Forçar Assinaturas V3</string>
<string name="label_keyServers">Servidores de Chave</string>
<string name="label_keyId">ID da Chave</string>
<string name="label_creation">Criação</string>
<string name="label_expiry">Expiração</string>
<string name="label_usage">Uso</string>
<string name="label_keySize">Tamanho da Chave</string>
<string name="label_mainUserId">ID do Usuário Principal</string>
<string name="label_name">Nome</string>
<string name="label_comment">Comentário</string>
<string name="label_email">Email</string>
<string name="noKeysSelected">Selecionar</string>
<string name="oneKeySelected">1 Selecionada</string>
<string name="nKeysSelected">Selecionada</string>
<string name="unknownUserId">&lt;desconhecido&gt;</string>
<string name="none">&lt;ninguém&gt;</string>
<string name="noKey">&lt;sem chave&gt;</string>
<string name="noDate">-</string>
<string name="noExpiry">&lt;não expira&gt;</string>
<string name="unknownStatus"></string>
<string name="canEncrypt">pode cifrar</string>
<string name="canSign">pode assinar</string>
<string name="expired">expirada</string>
<string name="notValid">não válida</string>
<string name="nKeyServers">%s servidor(es) de chave(s)</string>
<string name="fingerprint">fingerprint</string>
<!-- choice_lowerCase: capitalized first word, no punctuation -->
<string name="choice_none">Nenhum</string>
<string name="choice_signOnly">Assinar apenas</string>
<string name="choice_encryptOnly">Cifrar apenas</string>
<string name="choice_signAndEncrypt">Assinar e Cifrar</string>
<string name="choice_15secs">15 segs</string>
<string name="choice_1min">1 min</string>
<string name="choice_3mins">3 mins</string>
<string name="choice_5mins">5 mins</string>
<string name="choice_10mins">10 mins</string>
<string name="choice_20mins">20 mins</string>
<string name="choice_40mins">40 mins</string>
<string name="choice_1hour">1 hora</string>
<string name="choice_2hours">2 horas</string>
<string name="choice_4hours">4 horas</string>
<string name="choice_8hours">8 horas</string>
<string name="choice_untilQuit">até sair</string>
<string name="choice_language_system">Padrões do sistema</string>
<string name="dsa">DSA</string>
<string name="elgamal">ElGamal</string>
<string name="rsa">RSA</string>
<string name="filemanager_titleOpen">Abrir...</string>
<string name="filemanager_titleSave">Salvar Como...</string>
<string name="filemanager_titleEncrypt">Selecionar Arquivo para Cifrar...</string>
<string name="filemanager_titleDecrypt">Selecionar Arquivo para Decifrar...</string>
<string name="filemanager_btnOpen">Abrir</string>
<string name="filemanager_btnSave">Salvar</string>
<string name="warning">Advertência</string>
<string name="error">Erro</string>
<string name="warningMessage">Advertência: %s</string>
<string name="errorMessage">Erro: %s</string>
<!-- sentences -->
<string name="wrongPassPhrase">Chave errada.</string>
<string name="usingClipboardContent">Usando conteúdo do clipboard.</string>
<string name="keySaved">Chave salva.</string>
<string name="setAPassPhrase">Defina uma senha antes.</string>
<string name="noFilemanagerInstalled">Não há gerenciador de arquivos compatível instalado.</string>
<string name="passPhrasesDoNotMatch">A senha não confere.</string>
<string name="passPhraseMustNotBeEmpty">Não são permitidas senhas vazias.</string>
<string name="passPhraseForSymmetricEncryption">Cifragem simétrica.</string>
<string name="passPhraseFor">%s</string>
<string name="fileDeleteConfirmation">Tem certeza que deseja apagar\n%s?</string>
<string name="fileDeleteSuccessful">Apagado com sucesso.</string>
<string name="noFileSelected">Selecione um arquivo primeiro.</string>
<string name="decryptionSuccessful">Decifrado com sucesso.</string>
<string name="encryptionSuccessful">Cifrado com sucesso.</string>
<string name="encryptionToClipboardSuccessful">Cifrado para clipboard com sucesso.</string>
<string name="enterPassPhraseTwice">Insira a senha duas vezes.</string>
<string name="selectEncryptionKey">Selecione pelo menos uma chave de cifragem.</string>
<string name="selectEncryptionOrSignatureKey">Selecione pelo menos uma chave de cifragem ou uma chave de assinatura.</string>
<string name="specifyFileToEncryptTo">Especifique o arquivo a cifrar sobre.\nATENÇÃO! O arquivo, se existir, será sobrescrito!</string>
<string name="specifyFileToDecryptTo">Especifique o arquivo a decifrar sobre.\nATENÇÃO! O arquivo, se existir, será sobrescrito!</string>
<string name="specifyGoogleMailAccount">Especifique a conta de Email do Google que deseja adicionar.</string>
<string name="specifyFileToImportFrom">Especifique o arquivo para importação de chaves. (.asc or .gpg)</string>
<string name="specifyFileToExportTo">Especifique o arquivo de exportação.\nATENÇÃO! O arquivo, se existir, será sobrescrito!</string>
<string name="specifyFileToExportSecretKeysTo">Especifique o arquivo de exportação.\nATENÇÃO! Você está exportando suas chaves PRIVADAS (SECRETAS).\nATENÇÃO! O arquivo, se existir, será sobrescrito.</string>
<string name="keyDeletionConfirmation">Você realmente deseja apagar a chave \'%s\'?\nEssa ação não pode ser desfeita!</string>
<string name="secretKeyDeletionConfirmation">Você realmente deseja apagar a chave PRIVADA \'%s\'?\nEssa ação não pode ser desfeita!</string>
<string name="keysAddedAndUpdated">Adicionada(s) com sucesso %1$s chave(s) e atualizada(s) %2$s chave(s).</string>
<string name="keysAdded">Adicionada(s) %s chave(s) com sucesso.</string>
<string name="keysUpdated">Atualizada(s) %s chaves(s) com sucesso.</string>
<string name="noKeysAddedOrUpdated">Nenhuma chave adicionada ou atualizada.</string>
<string name="keyExported">1 chave exportada com sucesso.</string>
<string name="keysExported">%s chaves exportadas com sucesso.</string>
<string name="noKeysExported">Nenhuma chave exportada.</string>
<string name="keyCreationElGamalInfo">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.</string>
<string name="keyNotFound">Não se pode encontrar a chave %08X.</string>
<string name="keysFound">%s chave(s) encontrada(s).</string>
<string name="unknownSignatureKeyTouchToLookUp">Assinatura desconhecida, toque para buscar a chave.</string>
<string name="keyEditingIsBeta">A edição de chaves ainda está na versão beta.</string>
<string name="badKeysEncountered">%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</string>
<string name="lookupUnknownKey">Chave %s desconhecida, você gostaria de procurá-la em um servidor de chaves?</string>
<!-- error_lowerCase: phrases, no punctuation, all lowercase,
they will be put after "errorMessage", e.g. "Error: file not found" -->
<string name="error_fileDeleteFailed">erro ao apagar \'%s\'</string>
<string name="error_fileNotFound">arquivo não encontrado</string>
<string name="error_noSecretKeyFound">não foi encontrado uma chave secreta adequada</string>
<string name="error_noKnownEncryptionFound">não foi encontrado tipo de cifragem conhecido</string>
<string name="error_externalStorageNotReady">armazenamento externo não disponível</string>
<string name="error_accountNotFound">conta \'%s\' não encontrada</string>
<string name="error_accountReadingNotAllowed">sem permissões para ler a conta</string>
<string name="error_addingAccountFailed">falha ao adicionar a conta \'%s\'</string>
<string name="error_invalidEmail">email inválido \'%s\'</string>
<string name="error_keySizeMinimum512bit">o tamanho da chave deve ser pelo menos 512bit</string>
<string name="error_masterKeyMustNotBeElGamal">a chave primária não pode ser do tipo ElGamal</string>
<string name="error_unknownAlgorithmChoice">algoritmo selecionado desconhecido</string>
<string name="error_userIdNeedsAName">é necessário informar um nome</string>
<string name="error_userIdNeedsAnEmailAddress">é necessário informar um endereço de email</string>
<string name="error_keyNeedsAUserId">é necessário pelo menos um id de usuário</string>
<string name="error_mainUserIdMustNotBeEmpty">id de usuário principal não pode ser vazio</string>
<string name="error_keyNeedsMasterKey">é necessário pelo menos uma chave primária</string>
<string name="error_expiryMustComeAfterCreation">data de expiração deve ser após a data de criação</string>
<string name="error_noEncryptionKeysOrPassPhrase">não foram inseridos chave(s) de cifragem ou senha</string>
<string name="error_signatureFailed">falha na assinatura</string>
<string name="error_noSignaturePassPhrase">senha não inserida</string>
<string name="error_noSignatureKey">chave para assinatura não inserida</string>
<string name="error_invalidData">dados a serem cifrados inválidos</string>
<string name="error_corruptData">dados corrompidos</string>
<string name="error_noSymmetricEncryptionPacket">não foi encontrado um pacote com criptografia simétrica</string>
<string name="error_wrongPassPhrase">senha inválida</string>
<string name="error_savingKeys">erro ao salvar chave(s)</string>
<string name="error_couldNotExtractPrivateKey">não foi possível extrair chave privada</string>
<!-- progress_lowerCase: lowercase, phrases, usually ending in '...' -->
<string name="progress_done">pronto.</string>
<string name="progress_initializing">inicializando...</string>
<string name="progress_saving">salvando...</string>
<string name="progress_importing">importando...</string>
<string name="progress_exporting">exportando...</string>
<string name="progress_generating">criando chave, isso pode demorar um pouco...</string>
<string name="progress_buildingKey">criando chave...</string>
<string name="progress_preparingMasterKey">preparando chave primária...</string>
<string name="progress_certifyingMasterKey">certificando chave primária...</string>
<string name="progress_buildingMasterKeyRing">criando anel de chave primária...</string>
<string name="progress_addingSubKeys">adicionando sub-chaves...</string>
<string name="progress_savingKeyRing">salvando anel de chaves...</string>
<string name="progress_importingSecretKeys">importando chaves secretas...</string>
<string name="progress_importingPublicKeys">importando chaves públicas...</string>
<string name="progress_reloadingKeys">recarregando chaves...</string>
<string name="progress_exportingKey">exportando chave...</string>
<string name="progress_exportingKeys">exportando chaves...</string>
<string name="progress_extractingSignatureKey">extraindo chave de assinatura...</string>
<string name="progress_extractingKey">extraindo chave...</string>
<string name="progress_preparingStreams">preparando fluxos...</string>
<string name="progress_encrypting">cifrando dados...</string>
<string name="progress_decrypting">decifrando dados...</string>
<string name="progress_preparingSignature">preparando assinatura...</string>
<string name="progress_generatingSignature">gerando assinatura...</string>
<string name="progress_processingSignature">processando assinatura...</string>
<string name="progress_verifyingSignature">verificando assinatura...</string>
<string name="progress_signing">assinando...</string>
<string name="progress_readingData">carregando dados...</string>
<string name="progress_findingKey">buscando chave...</string>
<string name="progress_decompressingData">descompactando dados...</string>
<string name="progress_verifyingIntegrity">verificando integridade...</string>
<string name="progress_deletingSecurely">apagando \'%s\' de forma segura...</string>
<string name="progress_querying">buscando...</string>
<string name="progress_queryingServer">buscando %s...</string>
<!-- permission strings -->
<string name="permission_read_key_details_label">Ler detalhes de chaves do APG.</string>
<string name="permission_read_key_details_description">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.</string>
<!-- action strings -->
<string name="action_encrypt">Cifrar</string>
<string name="action_decrypt">Decifrar</string>
<string name="action_importPublic">Importar Chaves Públicas</string>
<string name="action_importSecret">Importar Chaves Privadas</string>
<string name="hint_publicKeys">Buscar Chaves Públicas</string>
<string name="hint_secretKeys">Buscar Chaves Privadas</string>
<string name="filterInfo">Filter: \"%s\"</string>
<!-- misc -->
<string name="fast">rápido</string>
<string name="slow">lento</string>
<string name="very_slow">muito lento</string>
<!-- texts -->
<!-- "OI File Manager", "ASTRO", and "K-9 Mail" must not be translated in order for the links to the market to work. -->
<string name="text_help">
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.
</string>
</resources>

View File

@ -206,6 +206,7 @@
<item>es</item>
<item>it</item>
<item>no</item>
<item>pt</item>
<item>sl</item>
<item>zh</item>
</string-array>

View File

@ -1262,6 +1262,7 @@ public class Apg {
}
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(),
@ -1327,6 +1328,7 @@ public class Apg {
new Date(), new byte[1 << 16]);
if( progress != null )
progress.setProgress(R.string.progress_encrypting, 20, 100);
long done = 0;
int n = 0;
byte[] buffer = new byte[1 << 16];

View File

@ -18,6 +18,7 @@ package org.thialfihar.android.apg;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.security.NoSuchAlgorithmException;
@ -30,6 +31,7 @@ import org.bouncycastle2.openpgp.PGPPublicKey;
import org.bouncycastle2.openpgp.PGPPublicKeyRing;
import org.bouncycastle2.openpgp.PGPSecretKey;
import org.bouncycastle2.openpgp.PGPSecretKeyRing;
import org.thialfihar.android.apg.provider.DataProvider;
import org.thialfihar.android.apg.utils.Choice;
import android.app.Dialog;
@ -699,21 +701,30 @@ public class EncryptActivity extends BaseActivity {
out.close();
if (mEncryptTarget != Id.target.file) {
if (useAsciiArmour) {
String extraData = new String(((ByteArrayOutputStream)out).toByteArray());
if (mGenerateSignature) {
data.putString(Apg.EXTRA_SIGNATURE_TEXT, extraData);
} else {
data.putString(Apg.EXTRA_ENCRYPTED_MESSAGE, extraData);
}
} else {
byte extraData[] = ((ByteArrayOutputStream)out).toByteArray();
if (mGenerateSignature) {
data.putByteArray(Apg.EXTRA_SIGNATURE_DATA, extraData);
} else {
data.putByteArray(Apg.EXTRA_ENCRYPTED_DATA, extraData);
}
}
if(out instanceof ByteArrayOutputStream) {
if (useAsciiArmour) {
String extraData = new String(((ByteArrayOutputStream)out).toByteArray());
if (mGenerateSignature) {
data.putString(Apg.EXTRA_SIGNATURE_TEXT, extraData);
} else {
data.putString(Apg.EXTRA_ENCRYPTED_MESSAGE, extraData);
}
} else {
byte extraData[] = ((ByteArrayOutputStream)out).toByteArray();
if (mGenerateSignature) {
data.putByteArray(Apg.EXTRA_SIGNATURE_DATA, extraData);
} else {
data.putByteArray(Apg.EXTRA_ENCRYPTED_DATA, extraData);
}
}
} else if(out instanceof FileOutputStream) {
String fileName = mDataDestination.getStreamFilename();
String uri = "content://" + DataProvider.AUTHORITY + "/data/" + fileName;
data.putString(Apg.EXTRA_RESULT_URI, uri);
} else {
throw new Apg.GeneralException("No output-data found.");
}
}
} catch (IOException e) {
error = "" + e;