From c3bb4fb35680c161138c3375c991626ede450916 Mon Sep 17 00:00:00 2001 From: cfig Date: Wed, 26 Jun 2019 18:32:27 +0800 Subject: [PATCH] support vbmeta_{system|vendor|product}.img etc For newly added dynamic partition related features --- bbootimg/src/main/kotlin/R.kt | 2 +- bbootimg/src/main/kotlin/avb/Avb.kt | 12 ++++++------ bbootimg/src/main/kotlin/packable/VBMetaParser.kt | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/bbootimg/src/main/kotlin/R.kt b/bbootimg/src/main/kotlin/R.kt index aeeb0b7..6c36dd7 100755 --- a/bbootimg/src/main/kotlin/R.kt +++ b/bbootimg/src/main/kotlin/R.kt @@ -18,7 +18,7 @@ fun main(args: Array) { Avb().parseVbMeta(args[1]) } "pack" -> { - Avb().packVbMetaWithPadding() + Avb().packVbMetaWithPadding(null) } "sign" -> { log.info("vbmeta is already signed") diff --git a/bbootimg/src/main/kotlin/avb/Avb.kt b/bbootimg/src/main/kotlin/avb/Avb.kt index 03f834d..7f9bcef 100755 --- a/bbootimg/src/main/kotlin/avb/Avb.kt +++ b/bbootimg/src/main/kotlin/avb/Avb.kt @@ -374,8 +374,8 @@ class Avb { return ai } - private fun packVbMeta(info: AVBInfo? = null): ByteArray { - val ai = info ?: ObjectMapper().readValue(File(getJsonFileName("vbmeta.img")), AVBInfo::class.java) + private fun packVbMeta(info: AVBInfo? = null, image_file: String? = null): ByteArray { + val ai = info ?: ObjectMapper().readValue(File(getJsonFileName(image_file!!)), AVBInfo::class.java) val alg = Algorithms.get(ai.header!!.algorithm_type.toInt())!! val encodedDesc = ai.auxBlob!!.encodeDescriptors() //encoded pubkey @@ -428,13 +428,13 @@ class Avb { return Helper.join(headerBlob, authBlob, auxBlob) } - fun packVbMetaWithPadding(info: AVBInfo? = null) { - val rawBlob = packVbMeta(info) + fun packVbMetaWithPadding(image_file: String? = null, info: AVBInfo? = null) { + val rawBlob = packVbMeta(info, image_file) val paddingSize = Helper.round_to_multiple(rawBlob.size.toLong(), BLOCK_SIZE) - rawBlob.size val paddedBlob = Helper.join(rawBlob, Struct3("${paddingSize}x").pack(null)) log.info("raw vbmeta size ${rawBlob.size}, padding size $paddingSize, total blob size ${paddedBlob.size}") - log.info("Writing padded vbmeta to file: vbmeta.img.signed") - Files.write(Paths.get("vbmeta.img.signed"), paddedBlob, StandardOpenOption.CREATE) + log.info("Writing padded vbmeta to file: $image_file.signed") + Files.write(Paths.get("$image_file.signed"), paddedBlob, StandardOpenOption.CREATE) } companion object { diff --git a/bbootimg/src/main/kotlin/packable/VBMetaParser.kt b/bbootimg/src/main/kotlin/packable/VBMetaParser.kt index 7cde985..34769a6 100644 --- a/bbootimg/src/main/kotlin/packable/VBMetaParser.kt +++ b/bbootimg/src/main/kotlin/packable/VBMetaParser.kt @@ -5,7 +5,7 @@ import cfig.Avb @ExperimentalUnsignedTypes class VBMetaParser: IPackable { override fun capabilities(): List { - return listOf("^vbmeta\\.img$") + return listOf("^vbmeta\\.img$", "^vbmeta\\_[a-z]+.img$") } override fun unpack(fileName: String) { @@ -13,6 +13,6 @@ class VBMetaParser: IPackable { } override fun pack(fileName: String) { - Avb().packVbMetaWithPadding() + Avb().packVbMetaWithPadding(fileName) } }