diff --git a/default.properties b/default.properties index 51e933a98..e735ffa56 100644 --- a/default.properties +++ b/default.properties @@ -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 diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml new file mode 100644 index 000000000..f64e123c2 --- /dev/null +++ b/res/values-pt/strings.xml @@ -0,0 +1,361 @@ + + + + + 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 diff --git a/src/org/thialfihar/android/apg/Apg.java b/src/org/thialfihar/android/apg/Apg.java index cf71185e1..0d61d4f42 100644 --- a/src/org/thialfihar/android/apg/Apg.java +++ b/src/org/thialfihar/android/apg/Apg.java @@ -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]; diff --git a/src/org/thialfihar/android/apg/EncryptActivity.java b/src/org/thialfihar/android/apg/EncryptActivity.java index 29af975bf..9ba71f570 100644 --- a/src/org/thialfihar/android/apg/EncryptActivity.java +++ b/src/org/thialfihar/android/apg/EncryptActivity.java @@ -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;