diff --git a/Android.mk b/Android.mk index 3d3428fa..85cdd325 100644 --- a/Android.mk +++ b/Android.mk @@ -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) diff --git a/adbbu/Android.mk b/adbbu/Android.mk index 10faf6f6..33d3ad7d 100644 --- a/adbbu/Android.mk +++ b/adbbu/Android.mk @@ -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 diff --git a/adbbu/twrpback.cpp b/adbbu/twrpback.cpp index 1c98a1b5..8652de2a 100644 --- a/adbbu/twrpback.cpp +++ b/adbbu/twrpback.cpp @@ -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) { diff --git a/data.cpp b/data.cpp index 20b60891..5d05d2ba 100644 --- a/data.cpp +++ b/data.cpp @@ -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"); diff --git a/gui/pages.cpp b/gui/pages.cpp index bf6c6921..b901526f 100644 --- a/gui/pages.cpp +++ b/gui/pages.cpp @@ -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 diff --git a/gui/theme/common/landscape.xml b/gui/theme/common/landscape.xml index 3039252b..0b8860e2 100644 --- a/gui/theme/common/landscape.xml +++ b/gui/theme/common/landscape.xml @@ -1676,8 +1676,8 @@ - {@skip_md5_backup_chk=Skip MD5 generation during backup} - + {@skip_digest_backup_chk=Skip Digest generation during backup} + @@ -2272,8 +2272,8 @@ - {@restore_enable_md5_chk=Enable MD5 Verification of Backup Files} - + {@restore_enable_digest_chk=Enable Digest Verification of Backup Files} +