Commit 56cf5646 authored by bigbiff bigbiff's avatar bigbiff bigbiff Committed by Ethan Yonker

twrpDigest refactor

This patch is to refactor twrpDigest using polymorphism
and inheritance to use the same call patterns for creating and
reading a digest. Now a library.
Use SHA2 from libcrypto. SHA2 is default if device has libcrypto.

Change string MD5 everywhere to use digest or Digest instead. Updated
string tags to digest. Translation will be required.

Switch out digest code into a driver class from partitionmanager.

SHA2 is better for digest creation due to decreased collision space
compared to MD5 and SHA1.

See https://en.wikipedia.org/wiki/SHA-2

Change-Id: I74b5546789990b12aa4ce2e389d25f80a3fe213f
parent 92e2531d
......@@ -51,18 +51,15 @@ LOCAL_SRC_FILES := \
fixContexts.cpp \
twrpTar.cpp \
exclude.cpp \
twrpDigest.cpp \
digest/md5.c \
find_file.cpp \
infomanager.cpp
LOCAL_SRC_FILES += \
infomanager.cpp \
data.cpp \
partition.cpp \
partitionmanager.cpp \
progresstracking.cpp \
twinstall.cpp \
twrp-functions.cpp \
twrpDigestDriver.cpp \
openrecoveryscript.cpp \
tarWrite.c
......@@ -112,9 +109,11 @@ LOCAL_C_INCLUDES += \
system/core/libsparse \
external/zlib
LOCAL_C_INCLUDES += bionic external/openssl/include
LOCAL_C_INCLUDES += bionic
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 23; echo $$?),0)
LOCAL_C_INCLUDES += external/stlport/stlport
LOCAL_C_INCLUDES += external/stlport/stlport external/openssl/include
else
LOCAL_C_INCLUDES += external/boringssl/include
endif
LOCAL_STATIC_LIBRARIES :=
......@@ -122,10 +121,11 @@ LOCAL_SHARED_LIBRARIES :=
LOCAL_STATIC_LIBRARIES += libguitwrp
LOCAL_SHARED_LIBRARIES += libaosprecovery libz libc libcutils libstdc++ libtar libblkid libminuitwrp libminadbd libmtdutils libminzip libtwadbbu libbootloader_message
LOCAL_SHARED_LIBRARIES += libcrecovery
LOCAL_SHARED_LIBRARIES += libcrecovery libtwadbbu libtwrpdigest
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 23; echo $$?),0)
LOCAL_SHARED_LIBRARIES += libstlport
LOCAL_CFLAGS += -DTW_NO_SHA2_LIBRARY
endif
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 24; echo $$?),0)
LOCAL_SHARED_LIBRARIES += libmincrypttwrp
......@@ -159,10 +159,8 @@ ifeq ($(TARGET_USERIMAGES_USE_EXT4), true)
#LOCAL_STATIC_LIBRARIES += liblz4
endif
endif
LOCAL_C_INCLUDES += external/libselinux/include
LOCAL_SHARED_LIBRARIES += libselinux
LOCAL_CFLAGS += -g
ifneq ($(TARGET_USERIMAGES_USE_EXT4), true)
LOCAL_CFLAGS += -DUSE_EXT4
LOCAL_C_INCLUDES += system/extras/ext4_utils
......@@ -682,6 +680,7 @@ include $(commands_recovery_local_path)/injecttwrp/Android.mk \
$(commands_recovery_local_path)/simg2img/Android.mk \
$(commands_recovery_local_path)/adbbu/Android.mk \
$(commands_recovery_local_path)/libpixelflinger/Android.mk \
$(commands_recovery_local_path)/twrpDigest/Android.mk \
$(commands_recovery_local_path)/attr/Android.mk
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 24; echo $$?),0)
......
......@@ -2,10 +2,9 @@ LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
twrpback.cpp \
../twrpDigest.cpp \
../digest/md5.c
LOCAL_SHARED_LIBRARIES += libstdc++ libz libselinux
twrpback.cpp
LOCAL_SHARED_LIBRARIES += libstdc++ libz libtwrpdigest
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 23; echo $$?),0)
LOCAL_C_INCLUDES += external/stlport/stlport
LOCAL_SHARED_LIBRARIES += libstlport
......
......@@ -34,9 +34,8 @@
#include "twadbstream.h"
#include "twrpback.hpp"
#include "../variables.h"
#include "../twcommon.h"
#include "../twrpDigest.hpp"
#include "../twrpDigest/twrpDigest.hpp"
#include "../twrpDigest/twrpMD5.hpp"
twrpback::twrpback(void) {
read_fd = 0;
......@@ -94,7 +93,7 @@ void twrpback::close_restore_fds() {
}
int twrpback::backup(std::string command) {
twrpDigest adb_md5;
twrpMD5 digest;
bool breakloop = false;
int bytes = 0, errctr = 0;
char result[MAX_ADB_READ];
......@@ -215,8 +214,7 @@ int twrpback::backup(std::string command) {
struct twfilehdr twimghdr;
adblogwrite("Writing TWIMG\n");
adb_md5.initMD5();
digest.init();
memset(&twimghdr, 0, sizeof(twimghdr));
memcpy(&twimghdr, cmd, sizeof(cmd));
md5fnsize = twimghdr.size;
......@@ -234,7 +232,7 @@ int twrpback::backup(std::string command) {
struct twfilehdr twfilehdr;
adblogwrite("Writing TWFN\n");
adb_md5.initMD5();
digest.init();
ADBSTRUCT_STATIC_ASSERT(sizeof(twfilehdr) == MAX_ADB_READ);
......@@ -269,8 +267,7 @@ int twrpback::backup(std::string command) {
totalbytes += bytes;
char *writeresult = new char [bytes];
memcpy(writeresult, result, bytes);
if (adb_md5.updateMD5stream((unsigned char *) writeresult, bytes) == -1)
adblogwrite("failed to update md5 stream\n");
digest.update((unsigned char *) writeresult, bytes);
if (fwrite(writeresult, 1, bytes, adbd_fp) != bytes) {
adblogwrite("Error writing backup data to adbd\n");
close_backup_fds();
......@@ -290,8 +287,7 @@ int twrpback::backup(std::string command) {
close_backup_fds();
return -1;
}
if (adb_md5.updateMD5stream((unsigned char *) padding, sizeof(padding)) == -1)
adblogwrite("failed to update md5 stream\n");
digest.update((unsigned char *) padding, sizeof(padding));
fflush(adbd_fp);
totalbytes = 0;
}
......@@ -299,9 +295,8 @@ int twrpback::backup(std::string command) {
AdbBackupFileTrailer md5trailer;
memset(&md5trailer, 0, sizeof(md5trailer));
adb_md5.finalizeMD5stream();
std::string md5string = adb_md5.createMD5string();
std::string md5string = digest.return_digest_string();
strncpy(md5trailer.start_of_trailer, TWRP, sizeof(md5trailer.start_of_trailer));
strncpy(md5trailer.type, MD5TRAILER, sizeof(md5trailer.type));
......@@ -350,8 +345,7 @@ int twrpback::backup(std::string command) {
char *writeresult = new char [bytes];
memcpy(writeresult, result, bytes);
if (adb_md5.updateMD5stream((unsigned char *) writeresult, bytes) == -1)
adblogwrite("failed to update md5 stream\n");
digest.update((unsigned char *) writeresult, bytes);
totalbytes += bytes;
dataChunkBytes += bytes;
......@@ -399,7 +393,8 @@ int twrpback::backup(std::string command) {
}
int twrpback::restore(void) {
twrpDigest adb_md5;
twrpMD5 digest;
char cmd[MAX_ADB_READ];
char result[MAX_ADB_READ];
struct AdbBackupControlType structcmd;
int adb_control_twrp_fd, errctr = 0;
......@@ -591,8 +586,8 @@ int twrpback::restore(void) {
struct twfilehdr twimghdr;
uint32_t crc, twimghdrcrc;
digest.init();
totalbytes -= sizeof(result);
adb_md5.initMD5();
adblogwrite("Restoring TWIMG\n");
memset(&twimghdr, 0, sizeof(twimghdr));
memcpy(&twimghdr, result, sizeof(result));
......@@ -623,9 +618,9 @@ int twrpback::restore(void) {
else if (cmdtype == TWFN) {
struct twfilehdr twfilehdr;
uint32_t crc, twfilehdrcrc;
digest.init();
totalbytes -= sizeof(result);
adb_md5.initMD5();
adblogwrite("Restoring TWFN\n");
memset(&twfilehdr, 0, sizeof(twfilehdr));
memcpy(&twfilehdr, result, sizeof(result));
......@@ -703,15 +698,13 @@ int twrpback::restore(void) {
close_restore_fds();
return -1;
}
adblogwrite("md5 finalize stream\n");
adb_md5.finalizeMD5stream();
AdbBackupFileTrailer md5;
memset(&md5, 0, sizeof(md5));
strncpy(md5.start_of_trailer, TWRP, sizeof(md5.start_of_trailer));
strncpy(md5.type, TWMD5, sizeof(md5.type));
std::string md5string = adb_md5.createMD5string();
std::string md5string = digest.return_digest_string();
strncpy(md5.md5, md5string.c_str(), sizeof(md5.md5));
adblogwrite("Sending MD5Check\n");
......@@ -726,8 +719,7 @@ int twrpback::restore(void) {
break;
}
}
if (adb_md5.updateMD5stream((unsigned char*)result, sizeof(result)) == -1)
adblogwrite("failed to update md5 stream\n");
digest.update((unsigned char*)result, sizeof(result));
dataChunkBytes += readbytes;
if (write(adb_write_fd, result, sizeof(result)) < 0) {
......
......@@ -679,14 +679,14 @@ void DataManager::SetDefaultValues()
mPersist.SetValue(TW_INSTALL_REBOOT_VAR, "0");
mPersist.SetValue(TW_SIGNED_ZIP_VERIFY_VAR, "0");
mPersist.SetValue(TW_FORCE_MD5_CHECK_VAR, "0");
mPersist.SetValue(TW_DISABLE_FREE_SPACE_VAR, "0");
mPersist.SetValue(TW_FORCE_DIGEST_CHECK_VAR, "0");
mPersist.SetValue(TW_USE_COMPRESSION_VAR, "0");
mPersist.SetValue(TW_TIME_ZONE_VAR, "CST6CDT,M3.2.0,M11.1.0");
mPersist.SetValue(TW_GUI_SORT_ORDER, "1");
mPersist.SetValue(TW_RM_RF_VAR, "0");
mPersist.SetValue(TW_SKIP_MD5_CHECK_VAR, "0");
mPersist.SetValue(TW_SKIP_MD5_GENERATE_VAR, "0");
mPersist.SetValue(TW_SKIP_DIGEST_CHECK_VAR, "0");
mPersist.SetValue(TW_SKIP_DIGEST_GENERATE_VAR, "0");
mPersist.SetValue(TW_SDEXT_SIZE, "0");
mPersist.SetValue(TW_SWAP_SIZE, "0");
mPersist.SetValue(TW_SDPART_FILE_SYSTEM, "ext3");
......@@ -708,6 +708,14 @@ void DataManager::SetDefaultValues()
mData.SetValue("tw_background_thread_running", "0");
mData.SetValue(TW_RESTORE_FILE_DATE, "0");
mPersist.SetValue("tw_military_time", "0");
#ifdef TW_INCLUDE_CRYPTO
mConst.SetValue(TW_USE_SHA2, "1");
mConst.SetValue(TW_NO_SHA2, "0");
#else
mConst.SetValue(TW_NO_SHA2, "1");
#endif
#ifdef TW_NO_SCREEN_TIMEOUT
mConst.SetValue("tw_screen_timeout_secs", "0");
mConst.SetValue("tw_no_screen_timeout", "1");
......
......@@ -52,7 +52,7 @@ extern "C" {
#include "blanktimer.hpp"
// version 2 requires theme to handle power button as action togglebacklight
#define TW_THEME_VERSION 2
#define TW_THEME_VERSION 3
#define TW_THEME_VER_ERR -2
......
......@@ -1676,8 +1676,8 @@
<checkbox>
<placement x="%col1_x_right%" y="%row7a_y%"/>
<text>{@skip_md5_backup_chk=Skip MD5 generation during backup}</text>
<data variable="tw_skip_md5_generate"/>
<text>{@skip_digest_backup_chk=Skip Digest generation during backup}</text>
<data variable="tw_skip_digest_generate"/>
</checkbox>
<checkbox>
......@@ -2272,8 +2272,8 @@
<checkbox>
<placement x="%col1_x_right%" y="%row6_y%"/>
<text>{@restore_enable_md5_chk=Enable MD5 Verification of Backup Files}</text>
<data variable="tw_skip_md5_check"/>
<text>{@restore_enable_digest_chk=Enable Digest Verification of Backup Files}</text>
<data variable="tw_skip_digest_check"/>
</checkbox>
<button style="main_button_half_width">
......@@ -2866,11 +2866,11 @@
<listitem name="{@disable_backup_space_chk=Disable free space check before backup}">
<data variable="tw_disable_free_space"/>
</listitem>
<listitem name="{@skip_md5_backup_chk=Skip MD5 generation during backup}">
<data variable="tw_skip_md5_generate"/>
<listitem name="{@skip_digest_backup_chk=Skip Digest generation during backup}">
<data variable="tw_skip_digest_generate"/>
</listitem>
<listitem name="{@restore_enable_md5_chk=Enable MD5 verification of backup files}">
<data variable="tw_skip_md5_check"/>
<listitem name="{@restore_enable_digest_chk=Enable Digest verification of backup files}">
<data variable="tw_skip_digest_check"/>
</listitem>
<listitem name="{@use24clock_chk=Use 24-hour clock}">
<data variable="tw_military_time"/>
......
......@@ -199,7 +199,7 @@
<string name="enc_disabled">zakázané - pro povolení zadejte heslo</string>
<string name="enc_enabled">povolené</string>
<string name="enable_backup_comp_chk">Povolit kompresi</string>
<string name="skip_md5_backup_chk">Vynechat generovaní MD5 během zálohy</string>
<string name="skip_digest_backup_chk" version="2">Vynechat generovaní Digest během zálohy</string>
<string name="disable_backup_space_chk">Nekontrolovat volné místo</string>
<string name="refresh_sizes_btn">Obnovit velikosti</string>
<string name="swipe_backup">Potáhnout pro zálohu</string>
......@@ -232,7 +232,7 @@
<string name="restore_try_decrypt_s">Pokus o dešifrovaní</string>
<string name="restore_backup_date">Záloha hotová %tw_restore_file_date%</string>
<string name="restore_sel_part">Vybrat oddíl pro obnovu:</string>
<string name="restore_enable_md5_chk">Povolit kontrolu MD5 na zálohovaných souborech</string>
<string name="restore_enable_digest_chk" version="2">Povolit kontrolu Digest na zálohovaných souborech</string>
<string name="restore_complete">Obnova dokočená</string>
<string name="swipe_restore">Potáhnout pro obnovu</string>
<string name="swipe_restore_s"> Obnovit</string>
......@@ -458,11 +458,11 @@
<string name="mtp_crash">MTP selhalo, MTP nebude spuštěné při startu.</string>
<string name="decrypt_success">Úspešně dešifrované s přednastaveným heslem.</string>
<string name="unable_to_decrypt">Nelze dešifrovat s přednastaveným heslem. Možná budete muset naformátovat Data.</string>
<string name="generating_md51">Generuje se MD5</string>
<string name="generating_md52"> *Generuje se Md5...</string>
<string name="md5_created"> *MD5 vygenerované.</string>
<string name="md5_error"> * chyba MD5!</string>
<string name="md5_compute_error"> * chyba při výpočtu MD5.</string>
<string name="generating_digest1" version="2">Generuje se Digest</string>
<string name="generating_digest2" version="2"> *Generuje se Digest...</string>
<string name="digest_created" version="2"> *Digest vygenerované.</string>
<string name="digest_error" version="2"> * chyba Digest!</string>
<string name="digest_compute_error" version="2"> * chyba při výpočtu Digest.</string>
<string name="current_date">(Aktuální datum)</string>
<string name="auto_generate">(Generovat automaticky)</string>
<string name="unable_to_locate_partition">Nelze najít oddíl \'{1}\' pro výpočet zálohy.</string>
......@@ -481,8 +481,8 @@
<string name="backup_completed">[ZÁLOHA DOKONČENÁ ZA {1} SEKUND]</string>
<string name="restore_started">[ZAČÁTEK OBNOVY]</string>
<string name="restore_folder">Obnovit adresář: \'{1}\'</string>
<string name="verifying_md5">Kontrolování MD5</string>
<string name="skip_md5">Vynechání kontroly MD5 na základě uživatelského nastavení.</string>
<string name="verifying_digest" version="2">Kontrolování Digest</string>
<string name="skip_digest" version="2">Vynechání kontroly Digest na základě uživatelského nastavení.</string>
<string name="calc_restore">Počítání detailů obnovy...</string>
<string name="restore_read_only">Nelze obnovit {1} -- připojené jen na čtení.</string>
<string name="restore_unable_locate">Nelze najít oddíl \'{1}\' pro obnovu.</string>
......@@ -540,9 +540,9 @@
<string name="cannot_resize">Nelze natáhnout {1}.</string>
<string name="repair_resize">Opravování {1} před natáhnutím.</string>
<string name="unable_resize">Nelze natáhnout {1}.</string>
<string name="no_md5_found">Soubor MD5 se nenašel pro \'{1}\'. Prosím zvolte Vypnout kontrolu MD5 během obnovy.</string>
<string name="md5_fail_match">MD5 neodpovídá souboru \'{1}\'.</string>
<string name="md5_matched">MD5 matched for '{1}'.</string>
<string name="no_digest_found" version="2">Soubor Digest se nenašel pro \'{1}\'. Prosím zvolte Vypnout kontrolu Digest během obnovy.</string>
<string name="digest_fail_match" version="2">Digest neodpovídá souboru \'{1}\'.</string>
<string name="digest_matched" version="2">Digest matched for '{1}'.</string>
<string name="fail_decrypt_tar">Nelze dešifrovat soubor tar \'{1}\'</string>
<string name="format_data_msg">Měli by jste restartovat recovery aby jste mohli znova používat /data.</string>
<string name="format_data_err">Nelze formátovat pro zrušení šifrování.</string>
......@@ -563,7 +563,7 @@
<string name="backup_folder_set">Adresář záloh nastavený na: \'{1}\'</string>
<string name="locate_backup_err">Zálohu \'{1}\' nelze najít</string>
<string name="set_restore_opt">Nastavení možností obnovy: \'{1}\':</string>
<string name="md5_check_skip">Vynechání kontroly MD5 zapnuté</string>
<string name="digest_check_skip" version="2">Vynechání kontroly Digest zapnuté</string>
<string name="ors_encrypt_restore_err">Nelze použít OpenRecoveryScript na obnovu zašifrované zálohy.</string>
<string name="mounting">Připojení</string>
<string name="unmounting">Odpojení</string>
......@@ -584,7 +584,7 @@
<string name="installing_zip">Instalace zip souboru \'{1}\'</string>
<string name="select_backup_opt">Nastavení možností zálohy:</string>
<string name="comprossion_on">Komprese zapnutá</string>
<string name="md5_off">Generovaní MD5 vypnuté</string>
<string name="digest_off" version="2">Generovaní Digest vypnuté</string>
<string name="backup_fail">Zálohování selhalo</string>
<string name="backup_clean">Zálohování selhalo. Čistění adresáře záloh.</string>
<string name="running_recovery_commands">Spouštění příkazů recovery</string>
......@@ -592,15 +592,15 @@
<string name="running_ors">Spouštění OpenRecoveryScript</string>
<string name="ors_complete">OpenRecoveryScript dokončený</string>
<string name="no_updater_binary">Nelze nájít \'{1}\' v souboru zip.</string>
<string name="check_for_md5">Kontrola MD5 souboru...</string>
<string name="check_for_digest" version="2">Kontrola Digest souboru...</string>
<string name="fail_sysmap">Nelze namapovat soubor \'{1}\'</string>
<string name="verify_zip_sig">Ověřování podpisu zip souboru...</string>
<string name="verify_zip_fail">Ověřování podpisu zip souboru selhalo!</string>
<string name="verify_zip_done">Podpis souboru zip úspešně ověřený.</string>
<string name="zip_corrupt">Soubor zip je poškozený!</string>
<string name="no_md5">Vynechání kontroly MD5: soubor s MD5 nenalezen</string>
<string name="md5_fail">MD5 nesedí</string>
<string name="md5_match">MD5 sedí</string>
<string name="no_digest" version="2">Vynechání kontroly Digest: soubor s Digest nenalezen</string>
<string name="digest_fail" version="2">Digest nesedí</string>
<string name="digest_match" version="2">Digest sedí</string>
<string name="pid_signal">Proces {1} skončil se signálem: {2}</string>
<string name="pid_error">Proces {1} skončil s CHYBOU: {2}</string>
<string name="install_dumlock">Instalování HTC Dumlock do systému...</string>
......
......@@ -215,7 +215,7 @@
<string name="enc_disabled">deaktiviert - Passwort festlegen um zu aktivieren</string>
<string name="enc_enabled">aktiviert</string>
<string name="enable_backup_comp_chk">Komprimierung aktivieren</string>
<string name="skip_md5_backup_chk">MD5-Erstellung für die Sicherung überspringen</string>
<string name="skip_digest_backup_chk" version="2">Digest-Erstellung für die Sicherung überspringen</string>
<string name="disable_backup_space_chk">Prüfung auf freien Speicher deaktivieren</string>
<string name="current_boot_slot">Aktiver Slot: %tw_active_slot%</string>
<string name="boot_slot_a">Slot A</string>
......@@ -253,7 +253,7 @@
<string name="restore_try_decrypt_s">Versuche Entschlüsselung</string>
<string name="restore_backup_date">Sicherung am %tw_restore_file_date% erstellt</string>
<string name="restore_sel_part">Wiederherzustellende Partitionen:</string>
<string name="restore_enable_md5_chk">MD5-Prüfung von Sicherungs-Dateien aktivieren</string>
<string name="restore_enable_digest_chk" version="2">Digest-Prüfung von Sicherungs-Dateien aktivieren</string>
<string name="restore_complete">Wiederherstellen abgeschlossen</string>
<string name="swipe_restore">Sicherung wiederherstellen</string>
<string name="swipe_restore_s">Wiederherstellen</string>
......@@ -494,12 +494,12 @@
<string name="mtp_crash">MTP abgestürzt, MTP wird künftig während Bootvorgang nicht gestartet.</string>
<string name="decrypt_success">Erfolgreich mit dem Standardpasswort entschlüsselt.</string>
<string name="unable_to_decrypt">Entschlüsselung mit Standardpasswort nicht möglich. Eventuell muss die Daten-Partition formatiert werden.</string>
<string name="generating_md51">Generiere MD5</string>
<!-- Message displayed during a backup if we are generating an MD5, ideally, leave the leading " * " to help align and separate this text from other console text -->
<string name="generating_md52"> * generiere MD5...</string>
<string name="md5_created"> * MD5 erstellt.</string>
<string name="md5_error"> * MD5-Fehler!</string>
<string name="md5_compute_error"> * Fehler bei MD5-Berechnung.</string>
<string name="generating_digest1" version="2">Generiere Digest</string>
<!-- Message displayed during a backup if we are generating an Digest, ideally, leave the leading " * " to help align and separate this text from other console text -->
<string name="generating_digest2" version="2"> * generiere Digest...</string>
<string name="digest_created" version="2"> * Digest erstellt.</string>
<string name="digest_error" version="2"> * Digest-Fehler!</string>
<string name="digest_compute_error" version="2"> * Fehler bei Digest-Berechnung.</string>
<string name="current_date">(Aktuelles Datum)</string>
<string name="auto_generate">(Automatisch generiert)</string>
<string name="unable_to_locate_partition">Kann '{1}' Partition für Sicherungsberechnungen nicht finden.</string>
......@@ -520,8 +520,8 @@
<string name="restore_folder">Wiederherstellen aus Ordner: '{1}'</string>
<!-- {1} is the partition display name and {2} is the number of seconds -->
<string name="restore_part_done">[{1} fertiggestellt ({2} Sekunden)]</string>
<string name="verifying_md5">Überprüfe MD5</string>
<string name="skip_md5">Überspringe MD5-Prüfung aufgrund Benutzereinstellungen.</string>
<string name="verifying_digest" version="2">Überprüfe Digest</string>
<string name="skip_digest" version="2">Überspringe Digest-Prüfung aufgrund Benutzereinstellungen.</string>
<string name="calc_restore">Berechne Wiederherstellungsinformationen...</string>
<string name="restore_read_only">Kann {1} nicht wiederherstellen -- Partition schreibgeschützt.</string>
<string name="restore_unable_locate">Kann wiederherzustellende '{1}'-Partition nicht finden.</string>
......@@ -584,9 +584,9 @@
<string name="cannot_resize">Größe von {1} kann nicht geändert werden.</string>
<string name="repair_resize">{1} wird repariert. Danach wird die Größe geändert.</string>
<string name="unable_resize">Größe von {1} kann nicht geändert werden.</string>
<string name="no_md5_found">Keine MD5-Datei für '{1}' gefunden. Bitte MD5-Prüfung für Wiederherstellung deaktivieren.</string>
<string name="md5_fail_match">MD5-Prüfung für '{1}' fehlgeschlagen.</string>
<string name="md5_matched">MD5 matched for '{1}'.</string>
<string name="no_digest_found" version="2">Keine Digest-Datei für '{1}' gefunden. Bitte Digest-Prüfung für Wiederherstellung deaktivieren.</string>
<string name="digest_fail_match" version="2">Digest-Prüfung für '{1}' fehlgeschlagen.</string>
<string name="digest_matched" version="2">Digest matched for '{1}'.</string>
<string name="fail_decrypt_tar">TAR-Datei '{1}' konnte nicht entschlüsselt werden.</string>
<string name="format_data_msg">Ein Neustart von TWRP kann notwendig sein, damit /data wieder verwendet werden kann.</string>
<string name="format_data_err">Formatierung zum Entfernen der Verschlüsselung kann nicht durchgeführt werden.</string>
......@@ -608,7 +608,7 @@
<string name="backup_folder_set"> * Ordner für Sicherung: {1}</string>
<string name="locate_backup_err">Sicherung '{1}' nicht gefunden</string>
<string name="set_restore_opt">Setze Wiederherstellungs-Optionen: '{1}':</string>
<string name="md5_check_skip">MD5-Prüfung ist deaktiviert</string>
<string name="digest_check_skip" version="2">Digest-Prüfung ist deaktiviert</string>
<string name="ors_encrypt_restore_err">Eine verschlüsselte Sicherung kann nicht per OpenRecoveryScript wiederhergestellt werden.</string>
<string name="mounting">Einhängen</string>
<string name="unmounting">Auswerfen</string>
......@@ -629,7 +629,7 @@
<string name="installing_zip">Installiere Zip '{1}'</string>
<string name="select_backup_opt">Setze Sicherungs-Optionen:</string>
<string name="compression_on">Komprimierung ist aktiviert</string>
<string name="md5_off">MD5-Generierung ist deaktiviert</string>
<string name="digest_off" version="2">Digest-Generierung ist deaktiviert</string>
<string name="backup_fail">Sicherung fehlgeschlagen</string>
<string name="backup_clean">Sicherung fehlgeschlagen, bereinige Sicherungs-Verzeichnis</string>
<string name="running_recovery_commands">Führe Recovery-Befehle aus</string>
......@@ -637,15 +637,15 @@
<string name="running_ors">Führe OpenRecoveryScript aus</string>
<string name="ors_complete">OpenRecoveryScript ausgeführt</string>
<string name="invalid_zip_format">Invalid zip file format!</string>
<string name="check_for_md5">Suche nach MD5-Datei...</string>
<string name="check_for_digest" version="2">Suche nach Digest-Datei...</string>
<string name="fail_sysmap">'{1}' kann nicht zugeordnet werden</string>
<string name="verify_zip_sig">Überprüfe ZIP-Signatur...</string>
<string name="verify_zip_fail">Prüfung der ZIP-Signatur fehlgeschlagen!</string>
<string name="verify_zip_done">Prüfung der ZIP-Signatur erfolgreich.</string>
<string name="zip_corrupt">ZIP-Datei ist beschädigt!</string>
<string name="no_md5">MD5-Prüfung übersprungen: keine MD5-Datei gefunden</string>
<string name="md5_fail">MD5 stimmt nicht überein</string>
<string name="md5_match">MD5 stimmt überein</string>
<string name="no_digest" version="2">Digest-Prüfung übersprungen: keine Digest-Datei gefunden</string>
<string name="digest_fail" version="2">Digest stimmt nicht überein</string>
<string name="digest_match" version="2">Digest stimmt überein</string>
<string name="pid_signal">Prozess {1} endete mit Meldung: {2}</string>
<string name="pid_error">Prozess {1} endete mit FEHLER: {2}</string>
<string name="install_dumlock">Installiere HTC Dumlock in System-Partition...</string>
......
This diff is collapsed.
......@@ -215,7 +215,8 @@
<string name="enc_disabled">disabled - set a password to enable</string>
<string name="enc_enabled">enabled</string>
<string name="enable_backup_comp_chk">Enable compression</string>
<string name="skip_md5_backup_chk">Skip MD5 generation during backup</string>
<string name="disable_backup_space_chk" version="2">Disable free space check before backup</string>
<string name="skip_digest_backup_chk" version="2">Skip Digest generation during backup</string>
<string name="disable_backup_space_chk" version="2">Disable free space check before backup</string>
<string name="current_boot_slot">Current Slot: %tw_active_slot%</string>
<string name="boot_slot_a">Slot A</string>
......@@ -253,7 +254,7 @@
<string name="restore_try_decrypt_s">Trying Decryption</string>
<string name="restore_backup_date">Backup made on %tw_restore_file_date%</string>
<string name="restore_sel_part">Select Partitions to Restore:</string>
<string name="restore_enable_md5_chk">Enable MD5 Verification of Backup Files</string>
<string name="restore_enable_digest_chk" version="2">Enable Digest Verification of Backup Files</string>
<string name="restore_complete">Restore Complete</string>
<string name="swipe_restore">Swipe to Restore</string>
<string name="swipe_restore_s"> Restore</string>
......@@ -495,12 +496,12 @@
<string name="mtp_crash">MTP Crashed, not starting MTP on boot.</string>
<string name="decrypt_success">Successfully decrypted with default password.</string>
<string name="unable_to_decrypt">Unable to decrypt with default password. You may need to perform a Format Data.</string>
<string name="generating_md51">Generating MD5</string>
<!-- Message displayed during a backup if we are generating an MD5, ideally, leave the leading " * " to help align and separate this text from other console text -->
<string name="generating_md52"> * Generating md5...</string>
<string name="md5_created"> * MD5 Created.</string>
<string name="md5_error"> * MD5 Error!</string>
<string name="md5_compute_error"> * Error computing MD5.</string>
<string name="generating_digest1" version="2">Generating Digest</string>
<!-- Message displayed during a backup if we are generating an Digest, ideally, leave the leading " * " to help align and separate this text from other console text -->
<string name="generating_digest2" version="2"> * Generating digest...</string>
<string name="digest_created" version="2"> * Digest Created.</string>
<string name="digest_error" version="2"> * Digest Error!</string>
<string name="digest_compute_error" version="2"> * Error computing Digest.</string>
<string name="current_date">(Current Date)</string>
<string name="auto_generate">(Auto Generate)</string>
<string name="unable_to_locate_partition">Unable to locate '{1}' partition for backup calculations.</string>
......@@ -521,8 +522,8 @@
<string name="restore_folder">Restore folder: '{1}'</string>
<!-- {1} is the partition display name and {2} is the number of seconds -->
<string name="restore_part_done">[{1} done ({2} seconds)]</string>
<string name="verifying_md5">Verifying MD5</string>
<string name="skip_md5">Skipping MD5 check based on user setting.</string>
<string name="verifying_digest" version="2">Verifying Digest</string>
<string name="skip_digest" version="2">Skipping Digest check based on user setting.</string>
<string name="calc_restore">Calculating restore details...</string>
<string name="restore_read_only">Cannot restore {1} -- mounted read only.</string>
<string name="restore_unable_locate">Unable to locate '{1}' partition for restoring.</string>
......@@ -585,9 +586,9 @@
<string name="cannot_resize">Cannot resize {1}.</string>
<string name="repair_resize">Repairing {1} before resizing.</string>
<string name="unable_resize">Unable to resize {1}.</string>
<string name="no_md5_found">No md5 file found for '{1}'. Please unselect Enable MD5 verification to restore.</string>
<string name="md5_fail_match">MD5 failed to match on '{1}'.</string>
<string name="md5_matched">MD5 matched for '{1}'.</string>
<string name="no_digest_found" version="2">No digest file found for '{1}'. Please unselect Enable Digest verification to restore.</string>
<string name="digest_fail_match" version="2">Digest failed to match on '{1}'.</string>
<string name="digest_matched" version="2">Digest matched for '{1}'.</string>
<string name="fail_decrypt_tar">Failed to decrypt tar file '{1}'</string>
<string name="format_data_msg">You may need to reboot recovery to be able to use /data again.</string>
<string name="format_data_err">Unable to format to remove encryption.</string>
......@@ -609,7 +610,7 @@
<string name="backup_folder_set">Backup folder set to '{1}'</string>
<string name="locate_backup_err">Unable to locate backup '{1}'</string>
<string name="set_restore_opt">Setting restore options: '{1}':</string>
<string name="md5_check_skip">MD5 check skip is on</string>
<string name="digest_check_skip" version="2">Digest check skip is on</string>
<string name="ors_encrypt_restore_err">Unable to use OpenRecoveryScript to restore an encrypted backup.</string>
<string name="mounting">Mounting</string>
<string name="unmounting">Unmounting</string>
......@@ -630,23 +631,23 @@
<string name="installing_zip">Installing zip file '{1}'</string>
<string name="select_backup_opt">Setting backup options:</string>
<string name="compression_on">Compression is on</string>
<string name="md5_off">MD5 Generation is off</string>
<string name="digest_off" version="2">Digest Generation is off</string>
<string name="backup_fail">Backup Failed</string>
<string name="backup_clean">Backup Failed. Cleaning Backup Folder.</string>
<string name="running_recovery_commands">Running Recovery Commands</string>
<string name="recovery_commands_complete">Recovery Commands Complete</string>
<string name="running_ors">Running OpenRecoveryScript</string>
<string name="ors_complete">OpenRecoveryScript Complete</string>
<string name="check_for_digest" version="2">Checking for Digest file...</string>
<string name="invalid_zip_format">Invalid zip file format!</string>
<string name="check_for_md5">Checking for MD5 file...</string>
<string name="fail_sysmap">Failed to map file '{1}'</string>
<string name="verify_zip_sig">Verifying zip signature...</string>
<string name="verify_zip_fail">Zip signature verification failed!</string>
<string name="verify_zip_done">Zip signature verified successfully.</string>
<string name="zip_corrupt">Zip file is corrupt!</string>
<string name="no_md5">Skipping MD5 check: no MD5 file found</string>
<string name="md5_fail">MD5 does not match</string>
<string name="md5_match">MD5 matched</string>
<string name="no_digest" version="2">Skipping Digest check: no Digest file found</string>
<string name="digest_fail" version="2">Digest does not match</string>
<string name="digest_match" version="2">Digest matched</string>
<string name="pid_signal">{1} process ended with signal: {2}</string>
<string name="pid_error">{1} process ended with ERROR: {2}</string>
<string name="install_dumlock">Installing HTC Dumlock to system...</string>
......@@ -691,6 +692,7 @@
<string name="partition_not_found">path: {1} not found in partititon list</string>
<string name="copy_kernel_log">Copied kernel log to {1}</string>
<string name="include_kernel_log">Include Kernel Log</string>
<string name="sha2_chk">Use SHA2 for hashing</string>
<string name="unable_set_boot_slot">Error changing bootloader boot slot to {1}</string>
</resources>
</language>
......@@ -200,7 +200,7 @@
<string name="enc_disabled">desactivado - establezca una contraseña para activar</string>
<string name="enc_enabled">activado</string>
<string name="enable_backup_comp_chk">Habilitar compresión</string>
<string name="skip_md5_backup_chk">Saltar generación MD5 durante respaldo</string>
<string name="skip_digest_backup_chk" version="2">Saltar generación Digest durante respaldo</string>
<string name="disable_backup_space_chk">Desactivar comprobación de Espacio Libre</string>
<string name="refresh_sizes_btn">Refrescar Tamaños</string>
<string name="swipe_backup">Desliza para Respaldar</string>
......@@ -233,7 +233,7 @@
<string name="restore_try_decrypt_s">Intentando Desencriptarla</string>
<string name="restore_backup_date">Copia de seguridad creada en %tw_restore_file_date%</string>
<string name="restore_sel_part">Selecciona las Particiones para Restaurar:</string>
<string name="restore_enable_md5_chk">Activar Verificación MD5 de la copia de seguridad</string>
<string name="restore_enable_digest_chk" version="2">Activar Verificación Digest de la copia de seguridad</string>
<string name="restore_complete">Restauración Completa</string>
<string name="swipe_restore">Desliza para Restaurar</string>
<string name="swipe_restore_s"> Restaurar</string>
......@@ -470,11 +470,11 @@
<string name="mtp_crash">MTP falló, no se iniciará MTP en el arranque.</string>
<string name="decrypt_success">Datos descifrados exitosamente, nuevo dispositivo de bloque: \'{1}\'</string>
<string name="unable_to_decrypt">Incapaz de descifrar con la contraseña actual. Quizás necesites realizar un Formateo de Datos.</string>
<string name="generating_md51">Generando MD5</string>
<string name="generating_md52"> * Generando md5...</string>
<string name="md5_created"> * MD5 Creado.</string>
<string name="md5_error"> * ¡MD5 Error!</string>
<string name="md5_compute_error"> * Error creando MD5.</string>
<string name="generating_digest1" version="2">Generando Digest</string>
<string name="generating_digest2" version="2"> * Generando Digest...</string>
<string name="digest_created" version="2"> * Digest Creado.</string>
<string name="digest_error" version="2"> * ¡Digest Error!</string>
<string name="digest_compute_error" version="2"> * Error creando Digest.</string>
<string name="current_date">(Fecha Actual)</string>
<string name="auto_generate">(Autogenerar)</string>
<string name="unable_to_locate_partition">Incapaz de localizar la partición’{1}’ para los cálculos de la copia de seguridad.</string>
......@@ -494,8 +494,8 @@
<string name="restore_started">[RESTAURACIÓN COMENZADA]</string>
<string name="restore_folder">Restaurar carpeta: \'{1}\'</string>
<string name="restore_part_done">[{1} completado ({2} segundos)]</string>
<string name="verifying_md5">Verificando MD5</string>
<string name="skip_md5">Saltando checkeo de MD5 basado en ajustes del usuario.</string>
<string name="verifying_digest" version="2">Verificando Digest</string>
<string name="skip_digest" version="2">Saltando checkeo de Digest basado en ajustes del usuario.</string>
<string name="calc_restore">Calculando detalles de la restauración...</string>
<string name="restore_read_only">No se puede restaurar {1} -- montado en modo leer.</string>
<string name="restore_unable_locate">Incapaz de localizar la partición \'{1}\' para la restauración.</string>
......@@ -553,9 +553,9 @@
<string name="cannot_resize">No se puede cambiar el tamaño de {1}.</string>
<string name="repair_resize">Reparando {1} antes de cambiar de tamaño.</string>
<string name="unable_resize">Incapaz de cambiar el tamaño de archivo de {1}.</string>
<string name="no_md5_found">No se encuentra archivo md5 para \'{1}\'. Por favor, deselecciona Activar verificación de MD5 para restaurar.</string>
<string name="md5_fail_match">MD5 no coincide en \'{1}\'.</string>
<string name="md5_matched">MD5 matched for '{1}'.</string>
<string name="no_digest_found" version="2">No se encuentra archivo Digest para \'{1}\'. Por favor, deselecciona Activar verificación de Digest para restaurar.</string>
<string name="digest_fail_match" version="2">Digest no coincide en \'{1}\'.</string>
<string name="digest_matched" version="2">Digest matched for '{1}'.</string>
<string name="fail_decrypt_tar">Fallo al desencriptar el archivo tar '{1}'</string>
<string name="format_data_msg">Quizás necesites reiniciar el recovery para ser capaz de usar /data de nuevo.</string>
<string name="format_data_err">Incapaz de formatear para remover encriptación.</string>
......@@ -576,7 +576,7 @@
<string name="backup_folder_set">Copia de Seguridad establecida en '{1}'</string>
<string name="locate_backup_err">Incapaz de localizar copia de seguridad \'{1}\'</string>
<string name="set_restore_opt">Ajustando opciones de restauración: \'{1}\':</string>
<string name="md5_check_skip">El salto de checkeo de MD5 está activado</string>
<string name="digest_check_skip" version="2">El salto de checkeo de Digest está activado</string>
<string name="ors_encrypt_restore_err">Incapaz de usar OpenRecoveryScript para restaurar una copia de seguridad encriptada.</string>
<string name="mounting">Montando</string>
<string name="unmounting">Desmontando</string>
......@@ -597,7 +597,7 @@
<string name="installing_zip">Instalando archivo zip '{1}'</string>
<string name="select_backup_opt">Ajustando opciones de copia de seguridad:</string>
<string name="compression_on">La compresión está activada</string>
<string name="md5_off">La generación de MD5 está desactivada</string>
<string name="digest_off" version="2">La generación de Digest está desactivada</string>
<string name="backup_fail">Copia de seguridad fallida</string>
<string name="backup_clean">La copia de seguridad falló. Limpiando carpeta de la copia de seguridad.</string>
<string name="running_recovery_commands">Corriendo Comandos de Recovery</string>
......@@ -605,15 +605,15 @@
<string name="running_ors">Corriendo OpenRecoveryScript</string>
<string name="ors_complete">OpenRecoveryScript Completo</string>
<string name="no_updater_binary">No fue posible encontrar \'{1}\' en el archivo zip.</string>
<string name="check_for_md5">Buscando archivo MD5...</string>
<string name="check_for_digest" version="2">Buscando archivo Digest...</string>
<string name="fail_sysmap">Error al mapear archivo \'{1}\'</string>
<string name="verify_zip_sig">Verificando firma de zip…</string>
<string name="verify_zip_fail">¡Verificación de firma de Zip fallida!</string>
<string name="verify_zip_done">Firma de Zip verificada exitosamente.</string>
<string name="zip_corrupt">¡Este archivo Zip es corrupto!</string>
<string name="no_md5">Saltando verificación de MD5: no se ha encontrado archivo MD5</string>