mirror of
https://github.com/moparisthebest/open-keychain
synced 2024-11-23 17:22:16 -05:00
1.0.x merged back into trunk
This commit is contained in:
parent
e6dc995126
commit
bd99b2590b
@ -17,7 +17,7 @@
|
|||||||
<manifest
|
<manifest
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="org.thialfihar.android.apg"
|
package="org.thialfihar.android.apg"
|
||||||
android:versionCode="20" android:versionName="1.0.6">
|
android:versionCode="21" android:versionName="1.0.7">
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:icon="@drawable/icon"
|
android:icon="@drawable/icon"
|
||||||
|
@ -124,6 +124,9 @@
|
|||||||
<string name="choice_3mins">3 min</string>
|
<string name="choice_3mins">3 min</string>
|
||||||
<string name="choice_5mins">5 min</string>
|
<string name="choice_5mins">5 min</string>
|
||||||
<string name="choice_10mins">10 min</string>
|
<string name="choice_10mins">10 min</string>
|
||||||
|
<string name="choice_20mins">20 min</string>
|
||||||
|
<string name="choice_40mins">40 min</string>
|
||||||
|
<string name="choice_60mins">60 min</string>
|
||||||
<string name="choice_untilQuit">Indtil slut</string>
|
<string name="choice_untilQuit">Indtil slut</string>
|
||||||
|
|
||||||
<string name="dsa">DSA</string>
|
<string name="dsa">DSA</string>
|
||||||
|
@ -129,8 +129,10 @@
|
|||||||
<string name="choice_1min">1 Min.</string>
|
<string name="choice_1min">1 Min.</string>
|
||||||
<string name="choice_3mins">3 Min.</string>
|
<string name="choice_3mins">3 Min.</string>
|
||||||
<string name="choice_5mins">5 Min.</string>
|
<string name="choice_5mins">5 Min.</string>
|
||||||
|
|
||||||
<string name="choice_10mins">10 Min.</string>
|
<string name="choice_10mins">10 Min.</string>
|
||||||
|
<string name="choice_20mins">20 Min.</string>
|
||||||
|
<string name="choice_40mins">40 Min.</string>
|
||||||
|
<string name="choice_60mins">60 Min.</string>
|
||||||
<string name="choice_untilQuit">Bis Programmende</string>
|
<string name="choice_untilQuit">Bis Programmende</string>
|
||||||
|
|
||||||
<string name="dsa">DSA</string>
|
<string name="dsa">DSA</string>
|
||||||
|
@ -126,6 +126,9 @@
|
|||||||
<string name="choice_3mins">3 min</string>
|
<string name="choice_3mins">3 min</string>
|
||||||
<string name="choice_5mins">5 min</string>
|
<string name="choice_5mins">5 min</string>
|
||||||
<string name="choice_10mins">10 min</string>
|
<string name="choice_10mins">10 min</string>
|
||||||
|
<string name="choice_20mins">20 min</string>
|
||||||
|
<string name="choice_40mins">40 min</string>
|
||||||
|
<string name="choice_60mins">60 min</string>
|
||||||
<string name="choice_untilQuit">tutta la sessione</string>
|
<string name="choice_untilQuit">tutta la sessione</string>
|
||||||
|
|
||||||
<string name="dsa">DSA</string>
|
<string name="dsa">DSA</string>
|
||||||
|
@ -135,6 +135,9 @@
|
|||||||
<string name="choice_3mins">3 min</string>
|
<string name="choice_3mins">3 min</string>
|
||||||
<string name="choice_5mins">5 min</string>
|
<string name="choice_5mins">5 min</string>
|
||||||
<string name="choice_10mins">10 min</string>
|
<string name="choice_10mins">10 min</string>
|
||||||
|
<string name="choice_20mins">20 min</string>
|
||||||
|
<string name="choice_40mins">40 min</string>
|
||||||
|
<string name="choice_60mins">60 min</string>
|
||||||
<string name="choice_untilQuit">do izhoda</string>
|
<string name="choice_untilQuit">do izhoda</string>
|
||||||
<string name="choice_language_system">Sistemsko nastavljeno</string>
|
<string name="choice_language_system">Sistemsko nastavljeno</string>
|
||||||
|
|
||||||
@ -270,9 +273,15 @@
|
|||||||
<string name="filterInfo">Filter: \"%s\"</string>
|
<string name="filterInfo">Filter: \"%s\"</string>
|
||||||
|
|
||||||
<!-- misc -->
|
<!-- misc -->
|
||||||
|
<<<<<<< HEAD
|
||||||
<string name="fast">hitro</string>
|
<string name="fast">hitro</string>
|
||||||
<string name="slow">počasi</string>
|
<string name="slow">počasi</string>
|
||||||
<string name="very_slow">zelo počasi</string>
|
<string name="very_slow">zelo počasi</string>
|
||||||
|
=======
|
||||||
|
<string name="fast">hiter</string>
|
||||||
|
<string name="slow">počasen</string>
|
||||||
|
<string name="very_slow">zelo počasen</string>
|
||||||
|
>>>>>>> 1.0.x
|
||||||
|
|
||||||
<!-- texts -->
|
<!-- texts -->
|
||||||
<!-- "OI File Manager", "ASTRO", and "K-9 Mail" must not be translated in order for the links to the market to work. -->
|
<!-- "OI File Manager", "ASTRO", and "K-9 Mail" must not be translated in order for the links to the market to work. -->
|
||||||
@ -280,7 +289,11 @@
|
|||||||
\n\nZaželjeno je, da namestite programa OI File Manager ali ASTRO, ki omogočata iskanje, izbiro in vnos datotek v APG.
|
\n\nZaželjeno je, da namestite programa OI File Manager ali ASTRO, ki omogočata iskanje, izbiro in vnos datotek v APG.
|
||||||
\n\nZa začetek potrebujete nekaj ključev. Lahko jih uvozite s klikom na menija \"Upravljanje javnih ključev\" in \"Upravljanje zasebnih ključev\" ali jih ustvarite v meniju \"Upravljanje zasebnih ključev\".
|
\n\nZa začetek potrebujete nekaj ključev. Lahko jih uvozite s klikom na menija \"Upravljanje javnih ključev\" in \"Upravljanje zasebnih ključev\" ali jih ustvarite v meniju \"Upravljanje zasebnih ključev\".
|
||||||
\n\nPreko menija \"Dodaj račun\" lahko dodate vaše GMail račune in tako poenostavite dešifriranje e-pošte prejete nanje.
|
\n\nPreko menija \"Dodaj račun\" lahko dodate vaše GMail račune in tako poenostavite dešifriranje e-pošte prejete nanje.
|
||||||
|
<<<<<<< HEAD
|
||||||
\n\nDa bi odkrili dodatne funkcije in zmožnosti programa APG, se sprehodite skozi njegove menije.
|
\n\nDa bi odkrili dodatne funkcije in zmožnosti programa APG, se sprehodite skozi njegove menije.
|
||||||
|
=======
|
||||||
|
\n\Da bi odkrili dodatne funkcije in zmožnosti programa APG, se sprehodite skozi njegove menije.
|
||||||
|
>>>>>>> 1.0.x
|
||||||
</string>
|
</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -22,6 +22,9 @@
|
|||||||
<item>@string/choice_3mins</item>
|
<item>@string/choice_3mins</item>
|
||||||
<item>@string/choice_5mins</item>
|
<item>@string/choice_5mins</item>
|
||||||
<item>@string/choice_10mins</item>
|
<item>@string/choice_10mins</item>
|
||||||
|
<item>@string/choice_20mins</item>
|
||||||
|
<item>@string/choice_40mins</item>
|
||||||
|
<item>@string/choice_60mins</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
<string-array name="pass_phrase_cache_ttl_values">
|
<string-array name="pass_phrase_cache_ttl_values">
|
||||||
@ -30,6 +33,9 @@
|
|||||||
<item>180</item>
|
<item>180</item>
|
||||||
<item>300</item>
|
<item>300</item>
|
||||||
<item>600</item>
|
<item>600</item>
|
||||||
|
<item>1200</item>
|
||||||
|
<item>2400</item>
|
||||||
|
<item>3600</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
<string-array name="language_entries">
|
<string-array name="language_entries">
|
||||||
|
@ -133,6 +133,9 @@
|
|||||||
<string name="choice_3mins">3 mins</string>
|
<string name="choice_3mins">3 mins</string>
|
||||||
<string name="choice_5mins">5 mins</string>
|
<string name="choice_5mins">5 mins</string>
|
||||||
<string name="choice_10mins">10 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_60mins">60 mins</string>
|
||||||
<string name="choice_untilQuit">until quit</string>
|
<string name="choice_untilQuit">until quit</string>
|
||||||
<string name="choice_language_system">System default</string>
|
<string name="choice_language_system">System default</string>
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
package org.thialfihar.android.apg;
|
package org.thialfihar.android.apg;
|
||||||
|
|
||||||
import java.io.BufferedInputStream;
|
import java.io.BufferedInputStream;
|
||||||
|
import java.io.BufferedReader;
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.EOFException;
|
import java.io.EOFException;
|
||||||
@ -24,6 +25,7 @@ import java.io.File;
|
|||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.io.RandomAccessFile;
|
import java.io.RandomAccessFile;
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
@ -1336,35 +1338,33 @@ public class Apg {
|
|||||||
|
|
||||||
armorOut.beginClearText(hashAlgorithm);
|
armorOut.beginClearText(hashAlgorithm);
|
||||||
|
|
||||||
ByteArrayOutputStream lineOut = new ByteArrayOutputStream();
|
|
||||||
InputStream inStream = data.getInputStream();
|
InputStream inStream = data.getInputStream();
|
||||||
int lookAhead = readInputLine(lineOut, inStream);
|
final BufferedReader reader = new BufferedReader(new InputStreamReader(inStream));
|
||||||
|
|
||||||
|
final byte[] newline = "\r\n".getBytes("UTF-8");
|
||||||
|
|
||||||
if (forceV3Signature) {
|
if (forceV3Signature) {
|
||||||
processLine(armorOut, signatureV3Generator, lineOut.toByteArray());
|
processLine(reader.readLine(), armorOut, signatureV3Generator);
|
||||||
} else {
|
} else {
|
||||||
processLine(armorOut, signatureGenerator, lineOut.toByteArray());
|
processLine(reader.readLine(), armorOut, signatureGenerator);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lookAhead != -1) {
|
while (true) {
|
||||||
do {
|
final String line = reader.readLine();
|
||||||
lookAhead = readInputLine(lineOut, lookAhead, inStream);
|
|
||||||
|
|
||||||
if (forceV3Signature) {
|
if (line == null) {
|
||||||
signatureV3Generator.update((byte)'\r');
|
armorOut.write(newline);
|
||||||
signatureV3Generator.update((byte)'\n');
|
break;
|
||||||
} else {
|
}
|
||||||
signatureGenerator.update((byte)'\r');
|
|
||||||
signatureGenerator.update((byte)'\n');
|
armorOut.write(newline);
|
||||||
}
|
if (forceV3Signature) {
|
||||||
|
signatureV3Generator.update(newline);
|
||||||
if (forceV3Signature) {
|
processLine(line, armorOut, signatureV3Generator);
|
||||||
processLine(armorOut, signatureV3Generator, lineOut.toByteArray());
|
} else {
|
||||||
} else {
|
signatureGenerator.update(newline);
|
||||||
processLine(armorOut, signatureGenerator, lineOut.toByteArray());
|
processLine(line, armorOut, signatureGenerator);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
while (lookAhead != -1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
armorOut.endClearText();
|
armorOut.endClearText();
|
||||||
@ -1784,7 +1784,65 @@ public class Apg {
|
|||||||
return Id.content.unknown;
|
return Id.content.unknown;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void processLine(final String pLine,
|
||||||
|
final ArmoredOutputStream pArmoredOutput,
|
||||||
|
final PGPSignatureGenerator pSignatureGenerator)
|
||||||
|
throws IOException, SignatureException {
|
||||||
|
|
||||||
|
if (pLine == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
final char[] chars = pLine.toCharArray();
|
||||||
|
int len = chars.length;
|
||||||
|
|
||||||
|
while (len > 0) {
|
||||||
|
if (!Character.isWhitespace(chars[len - 1])) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
len--;
|
||||||
|
}
|
||||||
|
|
||||||
|
final byte[] data = pLine.substring(0, len).getBytes("UTF-8");
|
||||||
|
|
||||||
|
pArmoredOutput.write(data);
|
||||||
|
pSignatureGenerator.update(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void processLine(final String pLine,
|
||||||
|
final ArmoredOutputStream pArmoredOutput,
|
||||||
|
final PGPV3SignatureGenerator pSignatureGenerator)
|
||||||
|
throws IOException, SignatureException {
|
||||||
|
|
||||||
|
if (pLine == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
final char[] chars = pLine.toCharArray();
|
||||||
|
int len = chars.length;
|
||||||
|
|
||||||
|
while (len > 0) {
|
||||||
|
if (!Character.isWhitespace(chars[len - 1])) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
len--;
|
||||||
|
}
|
||||||
|
|
||||||
|
final byte[] data = pLine.substring(0, len).getBytes("UTF-8");
|
||||||
|
|
||||||
|
pArmoredOutput.write(data);
|
||||||
|
pSignatureGenerator.update(data);
|
||||||
|
}
|
||||||
|
|
||||||
// taken from ClearSignedFileProcessor in BC
|
// taken from ClearSignedFileProcessor in BC
|
||||||
|
private static void processLine(PGPSignature sig, byte[] line)
|
||||||
|
throws SignatureException, IOException {
|
||||||
|
int length = getLengthWithoutWhiteSpace(line);
|
||||||
|
if (length > 0) {
|
||||||
|
sig.update(line, 0, length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static int readInputLine(ByteArrayOutputStream bOut, InputStream fIn)
|
private static int readInputLine(ByteArrayOutputStream bOut, InputStream fIn)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
bOut.reset();
|
bOut.reset();
|
||||||
@ -1837,34 +1895,6 @@ public class Apg {
|
|||||||
return lookAhead;
|
return lookAhead;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void processLine(PGPSignature sig, byte[] line)
|
|
||||||
throws SignatureException, IOException {
|
|
||||||
int length = getLengthWithoutWhiteSpace(line);
|
|
||||||
if (length > 0) {
|
|
||||||
sig.update(line, 0, length);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void processLine(OutputStream aOut, PGPSignatureGenerator sGen, byte[] line)
|
|
||||||
throws SignatureException, IOException {
|
|
||||||
int length = getLengthWithoutWhiteSpace(line);
|
|
||||||
if (length > 0) {
|
|
||||||
sGen.update(line, 0, length);
|
|
||||||
}
|
|
||||||
|
|
||||||
aOut.write(line, 0, line.length);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void processLine(OutputStream aOut, PGPV3SignatureGenerator sGen, byte[] line)
|
|
||||||
throws SignatureException, IOException {
|
|
||||||
int length = getLengthWithoutWhiteSpace(line);
|
|
||||||
if (length > 0) {
|
|
||||||
sGen.update(line, 0, length);
|
|
||||||
}
|
|
||||||
|
|
||||||
aOut.write(line, 0, line.length);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static int getLengthWithoutSeparator(byte[] line) {
|
private static int getLengthWithoutSeparator(byte[] line) {
|
||||||
int end = line.length - 1;
|
int end = line.length - 1;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user