Verify wipe package when wiping A/B device in recovery.

To increase the security of wiping A/B devices, let uncrypt write
wipe package in misc partition. Then recovery verifies the wipe
package before wiping the device.

Based on the original cherrypick, this CL also has additional changes to
address the LOG statements and libziparchive changes.

Bug: 29159185
Test: Build and boot into recovery.

Change-Id: I186691bab1928d3dc036bc5542abd64a81bc2168
(cherry picked from commit 6faf0265c9b58db2c15b53f6d29025629d52f882)
6 files changed
tree: 53388e66db91793598030067dea27790a7f2c0de
  1. applypatch/
  2. bootloader_message/
  3. edify/
  4. etc/
  5. fonts/
  6. minadbd/
  7. minui/
  8. otafault/
  9. otautil/
  10. res-hdpi/
  11. res-mdpi/
  12. res-xhdpi/
  13. res-xxhdpi/
  14. res-xxxhdpi/
  15. tests/
  16. tools/
  17. uncrypt/
  18. update_verifier/
  19. updater/
  20. adb_install.cpp
  21. adb_install.h
  22. Android.mk
  23. asn1_decoder.cpp
  24. asn1_decoder.h
  25. bootloader.h
  26. CleanSpec.mk
  27. common.h
  28. default_device.cpp
  29. device.cpp
  30. device.h
  31. error_code.h
  32. fuse_sdcard_provider.cpp
  33. fuse_sdcard_provider.h
  34. fuse_sideload.cpp
  35. fuse_sideload.h
  36. install.cpp
  37. install.h
  38. interlace-frames.py
  39. mounts.cpp
  40. mounts.h
  41. NOTICE
  42. print_sha1.h
  43. README.md
  44. recovery-persist.cpp
  45. recovery-persist.rc
  46. recovery-refresh.cpp
  47. recovery-refresh.rc
  48. recovery.cpp
  49. roots.cpp
  50. roots.h
  51. screen_ui.cpp
  52. screen_ui.h
  53. ui.cpp
  54. ui.h
  55. verifier.cpp
  56. verifier.h
  57. wear_touch.cpp
  58. wear_touch.h
  59. wear_ui.cpp
  60. wear_ui.h
README.md

The Recovery Image

Quick turn-around testing

mm -j && m ramdisk-nodeps && m recoveryimage-nodeps

# To boot into the new recovery image
# without flashing the recovery partition:
adb reboot bootloader
fastboot boot $ANDROID_PRODUCT_OUT/recovery.img

Running the tests

# After setting up environment and lunch.
mmma -j bootable/recovery

# Running the tests on device.
adb root
adb sync data

# 32-bit device
adb shell /data/nativetest/recovery_unit_test/recovery_unit_test
adb shell /data/nativetest/recovery_component_test/recovery_component_test

# Or 64-bit device
adb shell /data/nativetest64/recovery_unit_test/recovery_unit_test
adb shell /data/nativetest64/recovery_component_test/recovery_component_test