Commit graph

3437 commits

Author SHA1 Message Date
Tao Bao
bc6a66826a Merge "Generate OTA packages for A/B update." 2016-01-22 17:23:28 +00:00
Alex Klyubin
dd910c5945 Make signapk sign using APK Signature Scheme v2.
APKs are now signed with the usual JAR signature scheme and then
with the APK Signature Scheme v2.

APK Signature Scheme v2 is a whole-file signature scheme which aims
to protect every single bit of the APK as opposed to the JAR signature
scheme which protects only the names and uncompressed contents of ZIP
entries.

The two main goals of APK Signature Scheme v2 are:
1. Detect any unauthorized modifications to the APK. This is achieved
   by making the signature cover every byte of the APK being signed.
2. Enable much faster signature and integrity verification. This is
   achieved by requiring only a minimal amount of APK parsing before
   the signature is verified, thus completely bypassing ZIP entry
   decompression and by making integrity verification parallelizable
   by employing a hash tree.

Bug: 25794543
Change-Id: I275d2a6d0a98504891985309b9dfff2e0e44b878
2016-01-20 13:35:21 -08:00
Alex Klyubin
9b54a565c9 Command-line flag to disable signing with APK Signature Scheme v2.
This change makes signapk not reject the --disable-v2 command-line
flag which may be used by build scripts in some branches. The flag
is currently ignored.

This change is landed separately from the actual support for APK
Signature Scheme v2 because of unbundled branches which use prebuilt
versions of signapk.

Bug: 25794543
Change-Id: I900966244b8b6296b1f443bf98830cc7f7cc81a8
2016-01-20 12:55:16 -08:00
Tao Bao
c098e9efd9 Generate OTA packages for A/B update.
It calls brillo_update_payload to generate the payload for A/B update.
And packages the payload according to Android OTA package format.

Note that it only supports generating full/incremental OTAs with this
CL. Signing for release may not work properly at the moment.

Bug: 25715402
Change-Id: I4ac8505bacad28a572a9320dc8b52dd0f1ce47f5
2016-01-19 15:46:34 -08:00
Neil Fuller
8cb9be66b7 Merge "Remove synchronized from the public API docs" 2016-01-18 19:36:27 +00:00
Neil Fuller
79a6f53d7d Remove synchronized from the public API docs
The information is not useful. Javadoc hasn't included this
information for years.

Bug: 25767152
(cherry-picked from commit a37bdc89b4)

Change-Id: Id03a6e383118ab716ce870a1d7a3740656420fe7
2016-01-15 04:52:22 +00:00
Tianjie Xu
ebe39a096a Fix print error of numbers of blocks
The total number of blocks to pack as new data was printed incorrectly.
Fix printing.

Change-Id: I6a6bb8dd6682d9c57943ceb1a728995f9529e2fd
2016-01-14 19:13:21 -08:00
Tianjie Xu
9b2fe7e0b8 Merge "Adjust the size limit for splitting large files" 2016-01-14 19:17:00 +00:00
Tianjie Xu
bb86e1d9c2 Adjust the size limit for splitting large files
Modify the number of max blocks per transfer to reduce splitting of
large files during patch generation. This will reduce the size of
final incremental OTA updater package. In specific, the size limit
for each file to transfer is set to 1/8 cachesize instead of a fix
number.

Bug: 26472126

Change-Id: Iffb135e378c4c7a91640f2fc4c40e9e93d1fe4bb
2016-01-13 18:21:26 -08:00
Dan Willemsen
3f60c4b6c0 Allow building kati & makeparallel with soong
This uses far fewer hacks in order to build these host tools, but will
require more libraries(libc++,etc) from unbundled and stripped down
branches.

Once this becomes the only option, all builds will happen after soong
runs. Then the toolchain / global cflags information will be able to be
moved from make to soong (and exported back to make).

Change-Id: I270b1d92bcef28a96fbc3ec9910d9bd0c101ac0f
2016-01-13 13:08:29 -08:00
Colin Cross
e56ef1bee7 Merge "makeparallel: print path on exec failure" 2016-01-13 20:32:45 +00:00
Alex Klyubin
c2c49ed0c1 Unconditionally use SHA-256 when minSdkVersion is 18 or higher.
SHA-1 is deprecated, but the replacement SHA-256 is only supported
for JAR/APK and OTA update package signatures on API Level 18 and
newer. This change thus adds a --min-sdk-version command-line
parameter to signapk. When this parameter is set to 18 or higher,
SHA-256 is used instead of SHA-1. When the parameter is not provided,
SHA-1 is used same as before.

This change also removes any other digests from the MANIFEST.MF.
This is to ignore any MANIFEST.MF digests already there in the APK,
such as when re-signing an already signed APK.

Build scripts will be modified to provide the --min-sdk-version
parameter in a follow-up change. This is not done in this change
because of prebuilts which require a prebuilt version of signapk
to support this parameter before the build scripts can be modified.

Bug: 25643280
Change-Id: I6a2782e465600fe2a3ad0c10bd80db2b80a6fb76
2016-01-12 13:31:59 -08:00
Alex Klyubin
6b452b2767 Merge "List SHA-1 digests of APK entries' contents in .SF files." 2016-01-12 21:22:12 +00:00
Alex Klyubin
8502937cff List SHA-1 digests of APK entries' contents in .SF files.
Due to a bug introduced in 8562fd478d
SHA-1 digests of APK entries' contents were listed under wrong
attribute name. The effect is equivalent to not listing SHA-1
digests.

This change fix the issue by listing SHA-1 digests under the correct
attribute name. However, these digests are not that useful because:
(1) typically the digest of the MANIFEST.MF verifies and thus the
per-entry digests are ignored, and (2) per-entry digests of entries
with names longer than 64 characters are wrong in any case because the
digest generation code does not take into account that such names are
split over multiple lines.

An alternative to this change would be to completely omit outputting
per-entry sections of .SF files, thus saving space and speeding up APK
verification (.SF files would decompress faster).

Bug: 26513901
Change-Id: If95d58e9baa62b1113639fe70724e1e9c9f4e15c
2016-01-12 12:36:46 -08:00
Clay Murphy
b43f809da9 Docs: Shorten feedback button text.
Bug: 26452230
Change-Id: I8069d5087775a38f23e2aae86eb16fea81a65cd3
2016-01-12 10:55:44 -08:00
Colin Cross
2862458bbb makeparallel: print path on exec failure
If ninja is missing makeparallel prints an unhelpful error:
out/host/linux-x86/bin/makeparallel: exec failed: No such file or directory
which suggests that makeparallel is what is missing, not what is
reporting the error.  Print the path passed to exec as well.

Change-Id: Ic04c1cde6da9c3a974b5c43e3fb3bdb6da6605f7
2016-01-11 13:43:27 -08:00
Gina Dimino
49d5d5576e Merge "Docs: Changing text on Feedback button. Bug: 26452230" 2016-01-08 18:31:38 +00:00
Tianjie Xu
0b109751b8 Merge "Check block0 for remounting partition R/W" 2016-01-08 00:49:49 +00:00
Gina Dimino
261bb0871d Docs: Changing text on Feedback button.
Bug: 26452230

Change-Id: I716b773ed649dea4634f3db3fcb9daba0d0fab86
2016-01-07 16:22:36 -08:00
Gina Dimino
bbde9363fa Docs: Encode URL input to search box
Bug: 26287939

Change-Id: Ica656034412b517e182333f5fe4f6e9bc5f300f3
2016-01-05 15:08:40 -08:00
Elliott Hughes
636c1c4a44 Clean up Mac OS hacks in acp slightly.
Change-Id: I7cba3a345cd8907ae050961cc4f173003ac90f39
2016-01-05 09:32:42 -08:00
Daniel Rosenberg
40ef35b9e9 Allow building recovery as boot.
With BOARD_USES_RECOVERY_AS_BOOT = true, we skip building the
non-ramdisk boot.img but building the recovery image as boot.img. It
contains recovery's ramdisk (e.g. with /sbin/recovery). It depends on
the bootloader parameter (skip_initramfs) to determine the actual mode
to boot into.

Change-Id: Id6e2d0a2b94383944ca8f35bba688c6401745622
(cherry picked from commit d80bef2b9e)
2015-12-21 11:17:08 -08:00
Sami Tolvanen
e2476f82a1 Merge "build_image: don't call append2simg for FEC" 2015-12-21 11:21:16 +00:00
Sami Tolvanen
06b4ff6696 Merge "build_image: remove an unnecessary call to append2simg" 2015-12-21 11:19:26 +00:00
Tianjie Xu
fc3422ad36 Check block0 for remounting partition R/W
Add a function check_first_block to read block0 and output a message
on screen if the device has been remounted. The function is called
for version >= 4 only; it executes after a failing block verification
and before recovery attempts.

Bug: 21124327
Change-Id: I49dc0b861c702698896a2495ca094215705d4650
(cherry picked from commit 9dac797013)
2015-12-18 11:05:34 -08:00
Alex Klyubin
421d84f911 Merge "Move signapk sources to src dir." 2015-12-18 18:06:37 +00:00
Sami Tolvanen
4a0600406e build_image: don't call append2simg for FEC
append2simg can be slow, so generate error correction data before verity
data is appended, and append all metadata to the image at the same time.

Needs matching changes from
  I09349368925e5e2f2a7961a712a1e933eb0b9ec8

Bug: 26251929
Change-Id: Iea8cee0aee353b4d029d9581e8fbd68ec7b7dd4b
2015-12-18 15:50:25 +00:00
Sami Tolvanen
ff914f5dd0 build_image: remove an unnecessary call to append2simg
append2simg on a large image is fairly slow, so append verity metadata to
the hash tree to avoid two calls.

Bug: 26251929
Change-Id: I5ec84dcd6e8500e990af13b1f9cef5e809b41605
2015-12-18 13:28:25 +00:00
Todd Poynor
ffce16c7e6 Merge "Make squashfs sparse image generation optional" 2015-12-16 22:12:53 +00:00
Gina Dimino
8cc3a9e117 Docs: Replace custom search engine
Bug: 25778395

Change-Id: I432698f63088a3e4ec285e46c7de2295c4cefad3
2015-12-16 10:00:33 -08:00
Todd Poynor
b2a555e6fc Make squashfs sparse image generation optional
Allow non-sparse squashfs image generation, a la ext filesystems.

Bug: 26218766
Change-Id: Ifd596af16411e0cf69a2e7e05d725fd9442dc79c
2015-12-15 20:11:12 -08:00
Colin Cross
493205eee4 Remove unneccessary TARGET_BUILD_APPS conditional
The prebuilt tools no longer conflict with the tools built from source,
remove the conditional.

Change-Id: Id334e25d9cfa2d5934450dd223bc9e30cd890062
2015-12-15 15:49:53 -08:00
Alex Klyubin
fe7c1e59d1 Move signapk sources to src dir.
This also makes source files follow the standard directory structure
based on Java package names.

Bug: 25794543
Change-Id: Ie0b568057f836e56407f76d29eeacd28ab907ba8
2015-12-15 09:08:45 -08:00
Alex Klyubin
9667b18f23 Make signapk use Conscrypt.
This makes the signapk tool use Conscrypt (where possible) instead of
the platform-default JCA providers and the Bouncy Castle JCA provider.
This speeds up (by 10-30%) APK and OTA update signing because
Conscrypt's crypto primitives are backed by BoringSSL.

Previously, the signapk tool consisted only of the signapk.jar.
Because Conscrypt is backed by native code, signapk now consists of
signapk.jar and crypto_openjdk_jni shared library. This requires that
users of the tool be updated to provide a suitable -Djava.library.path
argument to the Java runtime. This change updates all known users of
the tool inside the Android source tree to do so.

Bug: 26097626
Change-Id: I8411b37d7f771ed99269751a3007dff103083552
2015-12-11 08:36:42 -08:00
Alex Klyubin
eb756d7b7b Do not run zipalign when re-signing APKs.
Running zipalign is no longer needed because signapk takes care of
alignment.

Bug: 25794543
Change-Id: I1080240a67ea6f1b41585fff83d18d57fdcf44e2
2015-12-08 11:05:13 -08:00
Alex Klyubin
7f1eda800d Merge "Make signapk align .so entries to 4096 bytes."
am: dbb5527a9e

* commit 'dbb5527a9ef27f292794d1e51ae56d1df68c328b':
  Make signapk align .so entries to 4096 bytes.
2015-12-04 17:10:01 +00:00
Alex Klyubin
dbb5527a9e Merge "Make signapk align .so entries to 4096 bytes." 2015-12-04 17:05:27 +00:00
Shinichiro Hamaji
8707422e4e Merge "Remove warnings from ijar/classfile.cc"
am: 128053b91b

* commit '128053b91b959d0664c33659063c5246eb57a594':
  Remove warnings from ijar/classfile.cc
2015-12-03 05:42:52 +00:00
Shinichiro Hamaji
128053b91b Merge "Remove warnings from ijar/classfile.cc" 2015-12-03 05:39:24 +00:00
Alex Klyubin
924a683760 Make signapk align .so entries to 4096 bytes.
This makes signapk align uncompressed .so entries to memory page
boundary (4096 bytes) to enable such libraries to be loaded at runtime
through memory-mapping the APK.

With this change in place, there should no longer be a need to run
zipalign after (or before) signapk.

Bug: 25794543
Change-Id: I74775af15a683791f57fcbd3497a79951b3f63a1
2015-12-02 19:02:01 -08:00
Tao Bao
1709cf3768 Merge "releasetools: Always use recovery mount options."
am: 643d466f7b

* commit '643d466f7b853ab4009723e2da200e3a6642d2ad':
  releasetools: Always use recovery mount options.
2015-12-03 01:30:40 +00:00
Tao Bao
269d785ce0 releasetools: Always use recovery mount options.
Change-Id: I6e96c417ffb5ad36405f4a6f5342f80f358f375f
2015-12-02 15:51:47 -08:00
Tao Bao
d77af53fc6 Merge "releasetools: Abort the update on apply_patch failures."
am: 2a23c0c859

* commit '2a23c0c85919bada137985f9e3b32514185b38c5':
  releasetools: Abort the update on apply_patch failures.
2015-12-02 22:00:18 +00:00
Tao Bao
c386890d0e releasetools: Abort the update on apply_patch failures.
We used to silently ignore the return value from apply_patch() even if
it had failed. It gives us more trouble to investigate the failure when
the affected file/partition gets touched in subsequent OTAs. This CL
adds the checking of the return value and aborts the update accordingly.

Bug: 25893277
Change-Id: Ie5e1c563576e503343e6a5b28ed4d7039f6f919c
2015-12-02 12:26:57 -08:00
Shinichiro Hamaji
8f2968f095 Remove warnings from ijar/classfile.cc
Also add -Werror.

Change-Id: I2f9fda288d31bd34735856ade33916c93c45922a
2015-12-01 16:44:32 +09:00
Colin Cross
bae8872294 Merge changes I1de10391,I4399ca26,Iec3b2b0b
am: bff3c9b4c1

* commit 'bff3c9b4c10dcb3ce3820d3a5e144e3df20313dc':
  Use libstdc++ for ijar
  Build ijar for apps build
  Use .KATI_RESTAT to reduce unnecessary rebuilds of .jar files
2015-12-01 00:03:27 +00:00
Colin Cross
bff3c9b4c1 Merge changes I1de10391,I4399ca26,Iec3b2b0b
* changes:
  Use libstdc++ for ijar
  Build ijar for apps build
  Use .KATI_RESTAT to reduce unnecessary rebuilds of .jar files
2015-12-01 00:00:36 +00:00
Tao Bao
e88245ddf0 Merge "releasetools: Allow logging the diff for incrementals."
am: 6d6e0481fa

* commit '6d6e0481fa86cb552e1b386e5449fe1fde2325cf':
  releasetools: Allow logging the diff for incrementals.
2015-11-30 20:15:39 +00:00
Tao Bao
d62c603573 releasetools: Allow logging the diff for incrementals.
Add an option "--log_diff <filename>" to ota_from_target_files.py
script. When enabled, it logs the differences between the source
and target builds into <filename> when generating incremental OTAs.

Also move target_files_diff.py into releasetools/ so that it can be
packed into otatools.zip.

Bug: 25372309
Change-Id: Ifd4ed0f2f12ef040ee377621ec8c35a873cec34f
2015-11-30 11:26:40 -08:00
Colin Cross
b15149cb2f Use libstdc++ for ijar
For some reason ijar won't build against libc++ for TARGET_BUILD_APPS
builds, but does build with libstdc++.

(cherry picked from commit 718bab6aec)

Bug: 25904002
Change-Id: I1de103918faa5bb574af6f12cc954e7fed44dc62
2015-11-30 11:16:30 -08:00