From 2905b1ff87bfcabca64c6d13fbe8bd4e9b06fee4 Mon Sep 17 00:00:00 2001 From: zfeixiang Date: Sat, 14 Dec 2024 20:54:28 +0800 Subject: [PATCH 01/13] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20pageinfo=20=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E8=BE=93=E5=87=BA=E9=94=99=E8=AF=AF=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zfeixiang --- .../codesigning/datastructure/SignInfo.java | 10 +++++++--- .../codesigning/fsverity/FsVerityGenerator.java | 3 +++ .../ohos/hapsigntool/codesigning/sign/CodeSigning.java | 1 + .../codesigning/sign/PageInfoGenerator.java | 3 ++- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/datastructure/SignInfo.java b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/datastructure/SignInfo.java index 748b92a2..dbd5a831 100644 --- a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/datastructure/SignInfo.java +++ b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/datastructure/SignInfo.java @@ -260,7 +260,7 @@ public class SignInfo { % SIGNATURE_ALIGNMENT]; bf.get(inZeroPadding); // parse merkle tree extension - List inExtensionList = parseExtensionList(bf, inExtensionNum); + List inExtensionList = parseExtensionList(bf, inExtensionNum, inDataSize); return new SignInfoBuilder().setSaltSize(inSaltSize) .setSigSize(inSigSize) .setFlags(inFlags) @@ -274,7 +274,7 @@ public class SignInfo { .build(); } - private static List parseExtensionList(ByteBuffer bf, int inExtensionNum) + private static List parseExtensionList(ByteBuffer bf, int inExtensionNum, long inDataSize) throws VerifyCodeSignException { List inExtensionList = new ArrayList<>(); for (int i = 0; i < inExtensionNum; i++) { @@ -296,7 +296,11 @@ public class SignInfo { } byte[] pageInfoExtension = new byte[extensionSize]; bf.get(pageInfoExtension); - inExtensionList.add(PageInfoExtension.fromByteArray(pageInfoExtension)); + PageInfoExtension pageInfoExtension1 = PageInfoExtension.fromByteArray(pageInfoExtension); + if (pageInfoExtension1.getMapOffset() > inDataSize - pageInfoExtension1.getMapSize() / Byte.SIZE) { + throw new VerifyCodeSignException("Invalid page info offset/size"); + } + inExtensionList.add(pageInfoExtension1); } else { LOGGER.info("Invalid extensionType {} of SignInfo", extensionType); } diff --git a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/fsverity/FsVerityGenerator.java b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/fsverity/FsVerityGenerator.java index c7a674bb..1cbb5942 100644 --- a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/fsverity/FsVerityGenerator.java +++ b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/fsverity/FsVerityGenerator.java @@ -116,6 +116,9 @@ public class FsVerityGenerator { throw new FsVerityDigestException("Invalid algorithm" + e.getMessage(), e); } if (pageInfoExtension != null && flags != 0) { + if (pageInfoExtension.getMapOffset() > size - pageInfoExtension.getMapSize() / Byte.SIZE){ + throw new FsVerityDigestException("Invalid page info offset/size"); + } try { byte[] fsVerityDescriptorV2 = builder.build() .getDiscByteCsv2(pageInfoExtension.getMapOffset(), pageInfoExtension.getMapSize(), diff --git a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/sign/CodeSigning.java b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/sign/CodeSigning.java index ee95ce70..3a25b4bb 100644 --- a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/sign/CodeSigning.java +++ b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/sign/CodeSigning.java @@ -213,6 +213,7 @@ public class CodeSigning { .getZipEntryHeader() .getExtraLength(); long bitmapSize = bitmapOff / CodeSignBlock.PAGE_SIZE_4K * PageInfoExtension.DEFAULT_UNIT_SIZE; + bitmapSize = ((bitmapSize - 1) / Long.SIZE + 1) * Long.SIZE; pageInfoExtension = new PageInfoExtension(bitmapOff, bitmapSize); } diff --git a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/sign/PageInfoGenerator.java b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/sign/PageInfoGenerator.java index 7ddfd52c..e90c371a 100644 --- a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/sign/PageInfoGenerator.java +++ b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/sign/PageInfoGenerator.java @@ -148,7 +148,8 @@ public class PageInfoGenerator { } } long[] longArray = bitmap.toLongArray(); - ByteBuffer buffer = ByteBuffer.allocate(longArray.length * 8).order(ByteOrder.LITTLE_ENDIAN); + int byteLen = bitmap.size() / Byte.SIZE; + ByteBuffer buffer = ByteBuffer.allocate(byteLen).order(ByteOrder.LITTLE_ENDIAN); for (long l : longArray) { buffer.putLong(l); } -- Gitee From 7473937ea42ad0d4871139bd849540880f17e089 Mon Sep 17 00:00:00 2001 From: zfeixiang Date: Mon, 16 Dec 2024 21:45:31 +0800 Subject: [PATCH 02/13] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20pageinfo=20=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E8=BE=93=E5=87=BA=E9=94=99=E8=AF=AF=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zfeixiang --- .../codesigning/datastructure/SignInfo.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/datastructure/SignInfo.java b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/datastructure/SignInfo.java index dbd5a831..878d553d 100644 --- a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/datastructure/SignInfo.java +++ b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/datastructure/SignInfo.java @@ -294,13 +294,13 @@ public class SignInfo { if (extensionSize < (PageInfoExtension.PAGE_INFO_EXTENSION_DATA_SIZE_WITHOUT_SIGN)) { throw new VerifyCodeSignException("Invalid PageInfo extensionSize of SignInfo"); } - byte[] pageInfoExtension = new byte[extensionSize]; - bf.get(pageInfoExtension); - PageInfoExtension pageInfoExtension1 = PageInfoExtension.fromByteArray(pageInfoExtension); - if (pageInfoExtension1.getMapOffset() > inDataSize - pageInfoExtension1.getMapSize() / Byte.SIZE) { + byte[] extensionBytes = new byte[extensionSize]; + bf.get(extensionBytes); + PageInfoExtension pageInfoExtension = PageInfoExtension.fromByteArray(extensionBytes); + if (pageInfoExtension.getMapOffset() > inDataSize - pageInfoExtension.getMapSize() / Byte.SIZE) { throw new VerifyCodeSignException("Invalid page info offset/size"); } - inExtensionList.add(pageInfoExtension1); + inExtensionList.add(pageInfoExtension); } else { LOGGER.info("Invalid extensionType {} of SignInfo", extensionType); } -- Gitee From 39c870ed16919f882b8fc1f52151922f527f6b77 Mon Sep 17 00:00:00 2001 From: zfeixiang Date: Wed, 18 Dec 2024 11:07:02 +0800 Subject: [PATCH 03/13] =?UTF-8?q?=E6=96=B0=E7=9A=84=20pageinfo=20=E8=A6=86?= =?UTF-8?q?=E7=9B=96=E6=97=A7=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zfeixiang --- .../src/main/java/com/ohos/hapsigntool/zip/Zip.java | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/zip/Zip.java b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/zip/Zip.java index ee69e770..62b9f65c 100644 --- a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/zip/Zip.java +++ b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/zip/Zip.java @@ -265,14 +265,7 @@ public class Zip { * @throws ZipException ZipException */ public void addBitMap(byte[] data) throws ZipException { - for (ZipEntry e : zipEntries) { - if (e.getZipEntryData().getType() == EntryType.BIT_MAP) { - e.getZipEntryData().setData(data); - e.getZipEntryData().getZipEntryHeader().setUnCompressedSize(data.length); - e.getZipEntryData().getZipEntryHeader().setCompressedSize(data.length); - return; - } - } + zipEntries.removeIf(e -> e.getZipEntryData().getType() == EntryType.BIT_MAP); ZipEntry entry = new ZipEntry.Builder().setMethod(FILE_UNCOMPRESS_METHOD_FLAG) .setUncompressedSize(data.length) .setCompressedSize(data.length) -- Gitee From 17f0089e9289eef2a0ec2c422c0afa97227d6ff0 Mon Sep 17 00:00:00 2001 From: zfeixiang Date: Wed, 18 Dec 2024 14:24:27 +0800 Subject: [PATCH 04/13] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20pageinfo=20=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E8=BE=93=E5=87=BA=E9=94=99=E8=AF=AF=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zfeixiang --- .../hapsigntool/codesigning/datastructure/SignInfo.java | 4 ++++ .../codesigning/fsverity/FsVerityGenerator.java | 7 ++++++- .../com/ohos/hapsigntool/codesigning/sign/CodeSigning.java | 1 - 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/datastructure/SignInfo.java b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/datastructure/SignInfo.java index 878d553d..bdfd7ed4 100644 --- a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/datastructure/SignInfo.java +++ b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/datastructure/SignInfo.java @@ -300,6 +300,10 @@ public class SignInfo { if (pageInfoExtension.getMapOffset() > inDataSize - pageInfoExtension.getMapSize() / Byte.SIZE) { throw new VerifyCodeSignException("Invalid page info offset/size"); } + if (pageInfoExtension.getMapSize() / pageInfoExtension.getUnitSize() + > inDataSize / CodeSignBlock.PAGE_SIZE_4K) { + throw new VerifyCodeSignException("page info size is not consistent data page "); + } inExtensionList.add(pageInfoExtension); } else { LOGGER.info("Invalid extensionType {} of SignInfo", extensionType); diff --git a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/fsverity/FsVerityGenerator.java b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/fsverity/FsVerityGenerator.java index 1cbb5942..6cdfaa21 100644 --- a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/fsverity/FsVerityGenerator.java +++ b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/fsverity/FsVerityGenerator.java @@ -15,6 +15,7 @@ package com.ohos.hapsigntool.codesigning.fsverity; +import com.ohos.hapsigntool.codesigning.datastructure.CodeSignBlock; import com.ohos.hapsigntool.codesigning.datastructure.PageInfoExtension; import com.ohos.hapsigntool.codesigning.exception.FsVerityDigestException; import com.ohos.hapsigntool.codesigning.utils.DigestUtils; @@ -116,9 +117,13 @@ public class FsVerityGenerator { throw new FsVerityDigestException("Invalid algorithm" + e.getMessage(), e); } if (pageInfoExtension != null && flags != 0) { - if (pageInfoExtension.getMapOffset() > size - pageInfoExtension.getMapSize() / Byte.SIZE){ + if (pageInfoExtension.getMapOffset() > size - pageInfoExtension.getMapSize() / Byte.SIZE) { throw new FsVerityDigestException("Invalid page info offset/size"); } + if (pageInfoExtension.getMapSize() / PageInfoExtension.DEFAULT_UNIT_SIZE + > size / CodeSignBlock.PAGE_SIZE_4K) { + throw new FsVerityDigestException("page info size is not consistent data page "); + } try { byte[] fsVerityDescriptorV2 = builder.build() .getDiscByteCsv2(pageInfoExtension.getMapOffset(), pageInfoExtension.getMapSize(), diff --git a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/sign/CodeSigning.java b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/sign/CodeSigning.java index 3a25b4bb..ee95ce70 100644 --- a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/sign/CodeSigning.java +++ b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/sign/CodeSigning.java @@ -213,7 +213,6 @@ public class CodeSigning { .getZipEntryHeader() .getExtraLength(); long bitmapSize = bitmapOff / CodeSignBlock.PAGE_SIZE_4K * PageInfoExtension.DEFAULT_UNIT_SIZE; - bitmapSize = ((bitmapSize - 1) / Long.SIZE + 1) * Long.SIZE; pageInfoExtension = new PageInfoExtension(bitmapOff, bitmapSize); } -- Gitee From 7acb9b7d2d0214f9dad5e5bbf7d16a6aa4421cc7 Mon Sep 17 00:00:00 2001 From: zfeixiang Date: Wed, 18 Dec 2024 14:34:45 +0800 Subject: [PATCH 05/13] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20pageinfo=20=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E8=BE=93=E5=87=BA=E9=94=99=E8=AF=AF=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zfeixiang --- .../hapsigntool/codesigning/fsverity/FsVerityGenerator.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/fsverity/FsVerityGenerator.java b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/fsverity/FsVerityGenerator.java index 6cdfaa21..6133125e 100644 --- a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/fsverity/FsVerityGenerator.java +++ b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/fsverity/FsVerityGenerator.java @@ -120,8 +120,7 @@ public class FsVerityGenerator { if (pageInfoExtension.getMapOffset() > size - pageInfoExtension.getMapSize() / Byte.SIZE) { throw new FsVerityDigestException("Invalid page info offset/size"); } - if (pageInfoExtension.getMapSize() / PageInfoExtension.DEFAULT_UNIT_SIZE - > size / CodeSignBlock.PAGE_SIZE_4K) { + if (pageInfoExtension.getMapSize() / pageInfoExtension.getUnitSize() > size / CodeSignBlock.PAGE_SIZE_4K) { throw new FsVerityDigestException("page info size is not consistent data page "); } try { -- Gitee From f7925296544dcfd59753dc56e13bfc4be3ca43a0 Mon Sep 17 00:00:00 2001 From: zfeixiang Date: Wed, 18 Dec 2024 15:04:14 +0800 Subject: [PATCH 06/13] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20pageinfo=20=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E8=BE=93=E5=87=BA=E9=94=99=E8=AF=AF=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zfeixiang --- .../ohos/hapsigntool/codesigning/datastructure/SignInfo.java | 2 +- .../hapsigntool/codesigning/fsverity/FsVerityGenerator.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/datastructure/SignInfo.java b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/datastructure/SignInfo.java index bdfd7ed4..704584c4 100644 --- a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/datastructure/SignInfo.java +++ b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/datastructure/SignInfo.java @@ -302,7 +302,7 @@ public class SignInfo { } if (pageInfoExtension.getMapSize() / pageInfoExtension.getUnitSize() > inDataSize / CodeSignBlock.PAGE_SIZE_4K) { - throw new VerifyCodeSignException("page info size is not consistent data page "); + throw new VerifyCodeSignException("page info size is not consistent with data page "); } inExtensionList.add(pageInfoExtension); } else { diff --git a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/fsverity/FsVerityGenerator.java b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/fsverity/FsVerityGenerator.java index 6133125e..4d543a10 100644 --- a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/fsverity/FsVerityGenerator.java +++ b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/fsverity/FsVerityGenerator.java @@ -121,7 +121,7 @@ public class FsVerityGenerator { throw new FsVerityDigestException("Invalid page info offset/size"); } if (pageInfoExtension.getMapSize() / pageInfoExtension.getUnitSize() > size / CodeSignBlock.PAGE_SIZE_4K) { - throw new FsVerityDigestException("page info size is not consistent data page "); + throw new FsVerityDigestException("page info size is not consistent with data page "); } try { byte[] fsVerityDescriptorV2 = builder.build() -- Gitee From 0638f2df2cdd9de5821b3cd580f1ac3ca0d66fe1 Mon Sep 17 00:00:00 2001 From: zfeixiang Date: Thu, 19 Dec 2024 17:10:46 +0800 Subject: [PATCH 07/13] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20pageinfo=20=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E8=BE=93=E5=87=BA=E9=94=99=E8=AF=AF=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zfeixiang --- .../hapsigntool/codesigning/datastructure/SignInfo.java | 2 +- .../hapsigntool/codesigning/fsverity/FsVerityGenerator.java | 3 ++- .../com/ohos/hapsigntool/codesigning/sign/CodeSigning.java | 6 +++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/datastructure/SignInfo.java b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/datastructure/SignInfo.java index 704584c4..c402ce1b 100644 --- a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/datastructure/SignInfo.java +++ b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/datastructure/SignInfo.java @@ -301,7 +301,7 @@ public class SignInfo { throw new VerifyCodeSignException("Invalid page info offset/size"); } if (pageInfoExtension.getMapSize() / pageInfoExtension.getUnitSize() - > inDataSize / CodeSignBlock.PAGE_SIZE_4K) { + >= inDataSize / CodeSignBlock.PAGE_SIZE_4K) { throw new VerifyCodeSignException("page info size is not consistent with data page "); } inExtensionList.add(pageInfoExtension); diff --git a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/fsverity/FsVerityGenerator.java b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/fsverity/FsVerityGenerator.java index 4d543a10..7a817b09 100644 --- a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/fsverity/FsVerityGenerator.java +++ b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/fsverity/FsVerityGenerator.java @@ -120,7 +120,8 @@ public class FsVerityGenerator { if (pageInfoExtension.getMapOffset() > size - pageInfoExtension.getMapSize() / Byte.SIZE) { throw new FsVerityDigestException("Invalid page info offset/size"); } - if (pageInfoExtension.getMapSize() / pageInfoExtension.getUnitSize() > size / CodeSignBlock.PAGE_SIZE_4K) { + if (pageInfoExtension.getMapSize() / pageInfoExtension.getUnitSize() + >= size / CodeSignBlock.PAGE_SIZE_4K) { throw new FsVerityDigestException("page info size is not consistent with data page "); } try { diff --git a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/sign/CodeSigning.java b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/sign/CodeSigning.java index ee95ce70..e282e00a 100644 --- a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/sign/CodeSigning.java +++ b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/sign/CodeSigning.java @@ -207,11 +207,15 @@ public class CodeSigning { return generated; } - private void createPageInfoExtension(ZipEntry entry) { + private void createPageInfoExtension(ZipEntry entry) throws HapFormatException { long bitmapOff = entry.getCentralDirectory().getOffset() + ZipEntryHeader.HEADER_LENGTH + entry.getZipEntryData().getZipEntryHeader().getFileNameLength() + entry.getZipEntryData() .getZipEntryHeader() .getExtraLength(); + if (!NumberUtils.isMultiple4K(bitmapOff)) { + throw new HapFormatException( + String.format(Locale.ROOT, "Invalid bitmapOff(%d), not a multiple of 4096", bitmapOff)); + } long bitmapSize = bitmapOff / CodeSignBlock.PAGE_SIZE_4K * PageInfoExtension.DEFAULT_UNIT_SIZE; pageInfoExtension = new PageInfoExtension(bitmapOff, bitmapSize); } -- Gitee From 49f34db7aa572144470dbf578d6f4da6e6aed089 Mon Sep 17 00:00:00 2001 From: zfeixiang Date: Fri, 20 Dec 2024 15:09:26 +0800 Subject: [PATCH 08/13] =?UTF-8?q?=E5=A2=9E=E5=8A=A0page=20info=20=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E5=BC=82=E5=B8=B8=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zfeixiang --- .../datastructure/PageInfoExtension.java | 33 ++++++++++++++ .../codesigning/datastructure/SignInfo.java | 11 +++-- .../exception/PageInfoException.java | 44 +++++++++++++++++++ .../fsverity/FsVerityGenerator.java | 12 ++--- .../codesigning/sign/CodeSigning.java | 13 +++--- .../codesigning/sign/VerifyCodeSignature.java | 10 ++++- 6 files changed, 101 insertions(+), 22 deletions(-) create mode 100644 hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/exception/PageInfoException.java diff --git a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/datastructure/PageInfoExtension.java b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/datastructure/PageInfoExtension.java index 377de03c..2136bd98 100644 --- a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/datastructure/PageInfoExtension.java +++ b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/datastructure/PageInfoExtension.java @@ -15,6 +15,7 @@ package com.ohos.hapsigntool.codesigning.datastructure; +import com.ohos.hapsigntool.codesigning.exception.PageInfoException; import com.ohos.hapsigntool.codesigning.exception.VerifyCodeSignException; import com.ohos.hapsigntool.codesigning.utils.NumberUtils; @@ -171,6 +172,38 @@ public class PageInfoExtension extends Extension { return extension; } + /** + * validate PageInfoExtension with dataSize + * + * @param pgExtension PageInfoExtension + * @param dataSize signed data size + * @return true while PageInfoExtension filed value is valid + * @throws PageInfoException error while filed value is invalid + */ + public static boolean valid(PageInfoExtension pgExtension, long dataSize) throws PageInfoException { + if (!NumberUtils.isMultiple4K(pgExtension.getMapOffset())) { + throw new PageInfoException(String.format(Locale.ROOT, "Invalid bitmapOff(%d), not a multiple of 4096", + pgExtension.getMapOffset())); + } + if (pgExtension.getUnitSize() != PageInfoExtension.DEFAULT_UNIT_SIZE) { + throw new PageInfoException("Invalid page info unitSize : " + pgExtension.getUnitSize()); + } + if (pgExtension.getMapOffset() < 0 || pgExtension.getMapSize() < 0) { + throw new PageInfoException("Page info offset/size is negative number"); + } + if (pgExtension.getMapSize() % pgExtension.getUnitSize() != 0) { + throw new PageInfoException("Page info size is not multiple of unit"); + } + + if (pgExtension.getMapOffset() > dataSize - pgExtension.getMapSize() / Byte.SIZE) { + throw new PageInfoException("Page info is out of dataSize"); + } + if (pgExtension.getMapSize() / pgExtension.getUnitSize() >= dataSize / CodeSignBlock.PAGE_SIZE_4K) { + throw new PageInfoException("page info size is not consistent with data page "); + } + return true; + } + @Override public String toString() { return String.format(Locale.ROOT, diff --git a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/datastructure/SignInfo.java b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/datastructure/SignInfo.java index c402ce1b..a3406a66 100644 --- a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/datastructure/SignInfo.java +++ b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/datastructure/SignInfo.java @@ -15,6 +15,7 @@ package com.ohos.hapsigntool.codesigning.datastructure; +import com.ohos.hapsigntool.codesigning.exception.PageInfoException; import com.ohos.hapsigntool.codesigning.exception.VerifyCodeSignException; import org.apache.logging.log4j.LogManager; @@ -297,12 +298,10 @@ public class SignInfo { byte[] extensionBytes = new byte[extensionSize]; bf.get(extensionBytes); PageInfoExtension pageInfoExtension = PageInfoExtension.fromByteArray(extensionBytes); - if (pageInfoExtension.getMapOffset() > inDataSize - pageInfoExtension.getMapSize() / Byte.SIZE) { - throw new VerifyCodeSignException("Invalid page info offset/size"); - } - if (pageInfoExtension.getMapSize() / pageInfoExtension.getUnitSize() - >= inDataSize / CodeSignBlock.PAGE_SIZE_4K) { - throw new VerifyCodeSignException("page info size is not consistent with data page "); + try { + PageInfoExtension.valid(pageInfoExtension, inDataSize); + } catch (PageInfoException e) { + throw new VerifyCodeSignException(e.getMessage()); } inExtensionList.add(pageInfoExtension); } else { diff --git a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/exception/PageInfoException.java b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/exception/PageInfoException.java new file mode 100644 index 00000000..5c3bc0f9 --- /dev/null +++ b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/exception/PageInfoException.java @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2023-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.ohos.hapsigntool.codesigning.exception; + +/** + * CodeSign exception + * + * @since 2023/06/05 + */ +public class PageInfoException extends Exception { + private static final long serialVersionUID = -6814492423615912290L; + + /** + * PageInfoException + * + * @param message msg + */ + public PageInfoException(String message) { + super(message); + } + + /** + * PageInfoException + * + * @param message msg + * @param cause cause + */ + public PageInfoException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/fsverity/FsVerityGenerator.java b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/fsverity/FsVerityGenerator.java index 7a817b09..601f2ae6 100644 --- a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/fsverity/FsVerityGenerator.java +++ b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/fsverity/FsVerityGenerator.java @@ -15,9 +15,9 @@ package com.ohos.hapsigntool.codesigning.fsverity; -import com.ohos.hapsigntool.codesigning.datastructure.CodeSignBlock; import com.ohos.hapsigntool.codesigning.datastructure.PageInfoExtension; import com.ohos.hapsigntool.codesigning.exception.FsVerityDigestException; +import com.ohos.hapsigntool.codesigning.exception.PageInfoException; import com.ohos.hapsigntool.codesigning.utils.DigestUtils; import java.io.IOException; @@ -92,7 +92,7 @@ public class FsVerityGenerator { * @throws FsVerityDigestException if error */ public void generateFsVerityDigest(InputStream inputStream, long size, long fsvTreeOffset) - throws FsVerityDigestException { + throws FsVerityDigestException, PageInfoException { MerkleTree merkleTree; if (size == 0) { merkleTree = new MerkleTree(null, null, FS_VERITY_HASH_ALGORITHM); @@ -117,13 +117,7 @@ public class FsVerityGenerator { throw new FsVerityDigestException("Invalid algorithm" + e.getMessage(), e); } if (pageInfoExtension != null && flags != 0) { - if (pageInfoExtension.getMapOffset() > size - pageInfoExtension.getMapSize() / Byte.SIZE) { - throw new FsVerityDigestException("Invalid page info offset/size"); - } - if (pageInfoExtension.getMapSize() / pageInfoExtension.getUnitSize() - >= size / CodeSignBlock.PAGE_SIZE_4K) { - throw new FsVerityDigestException("page info size is not consistent with data page "); - } + PageInfoExtension.valid(pageInfoExtension,size); try { byte[] fsVerityDescriptorV2 = builder.build() .getDiscByteCsv2(pageInfoExtension.getMapOffset(), pageInfoExtension.getMapSize(), diff --git a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/sign/CodeSigning.java b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/sign/CodeSigning.java index e282e00a..900b8ba0 100644 --- a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/sign/CodeSigning.java +++ b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/sign/CodeSigning.java @@ -25,6 +25,7 @@ import com.ohos.hapsigntool.codesigning.datastructure.SignInfo; import com.ohos.hapsigntool.codesigning.elf.ElfHeader; import com.ohos.hapsigntool.codesigning.exception.CodeSignException; import com.ohos.hapsigntool.codesigning.exception.FsVerityDigestException; +import com.ohos.hapsigntool.codesigning.exception.PageInfoException; import com.ohos.hapsigntool.codesigning.fsverity.FsVerityDescriptor; import com.ohos.hapsigntool.codesigning.fsverity.FsVerityDescriptorWithSign; import com.ohos.hapsigntool.codesigning.fsverity.FsVerityGenerator; @@ -146,6 +147,8 @@ public class CodeSigning { ElfSignBlock signBlock = new ElfSignBlock(paddingSize, treeBytes, fsVerityDescriptorWithSign); LOGGER.info("Sign elf successfully."); return signBlock.toByteArray(); + } catch (PageInfoException e) { + throw new CodeSignException(e.getMessage()); } } @@ -212,10 +215,6 @@ public class CodeSigning { + entry.getZipEntryData().getZipEntryHeader().getFileNameLength() + entry.getZipEntryData() .getZipEntryHeader() .getExtraLength(); - if (!NumberUtils.isMultiple4K(bitmapOff)) { - throw new HapFormatException( - String.format(Locale.ROOT, "Invalid bitmapOff(%d), not a multiple of 4096", bitmapOff)); - } long bitmapSize = bitmapOff / CodeSignBlock.PAGE_SIZE_4K * PageInfoExtension.DEFAULT_UNIT_SIZE; pageInfoExtension = new PageInfoExtension(bitmapOff, bitmapSize); } @@ -445,7 +444,11 @@ public class CodeSigning { long fsvTreeOffset, String ownerID) throws FsVerityDigestException, CodeSignException { FsVerityGenerator fsVerityGenerator = new FsVerityGenerator(); fsVerityGenerator.setPageInfoExtension(pageInfoExtension); - fsVerityGenerator.generateFsVerityDigest(inputStream, fileSize, fsvTreeOffset); + try { + fsVerityGenerator.generateFsVerityDigest(inputStream, fileSize, fsvTreeOffset); + } catch (PageInfoException e) { + throw new CodeSignException(e.getMessage()); + } byte[] fsVerityDigest = fsVerityGenerator.getFsVerityDigest(); byte[] signature = generateSignature(fsVerityDigest, ownerID); int flags = 0; diff --git a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/sign/VerifyCodeSignature.java b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/sign/VerifyCodeSignature.java index 4c4a401b..66b8d729 100644 --- a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/sign/VerifyCodeSignature.java +++ b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/sign/VerifyCodeSignature.java @@ -26,6 +26,7 @@ import com.ohos.hapsigntool.codesigning.datastructure.NativeLibInfoSegment; import com.ohos.hapsigntool.codesigning.datastructure.SegmentHeader; import com.ohos.hapsigntool.codesigning.datastructure.SignInfo; import com.ohos.hapsigntool.codesigning.exception.FsVerityDigestException; +import com.ohos.hapsigntool.codesigning.exception.PageInfoException; import com.ohos.hapsigntool.codesigning.exception.VerifyCodeSignException; import com.ohos.hapsigntool.codesigning.fsverity.FsVerityGenerator; import com.ohos.hapsigntool.codesigning.utils.CmsUtils; @@ -384,7 +385,12 @@ public class VerifyCodeSignature { */ public static void verifySingleFile(InputStream input, long length, byte[] signature, long merkleTreeOffset, byte[] inMerkleTreeBytes) throws FsVerityDigestException, CMSException, VerifyCodeSignException { - Pair pairResult = generateFsVerityDigest(input, length, merkleTreeOffset); + Pair pairResult = null; + try { + pairResult = generateFsVerityDigest(input, length, merkleTreeOffset); + } catch (PageInfoException e) { + throw new VerifyCodeSignException(e.getMessage()); + } byte[] generatedMerkleTreeBytes = pairResult.getSecond(); if (generatedMerkleTreeBytes == null) { generatedMerkleTreeBytes = new byte[0]; @@ -397,7 +403,7 @@ public class VerifyCodeSignature { } private static Pair generateFsVerityDigest(InputStream inputStream, long size, - long merkleTreeOffset) throws FsVerityDigestException { + long merkleTreeOffset) throws FsVerityDigestException, PageInfoException { FsVerityGenerator fsVerityGenerator = new FsVerityGenerator(); fsVerityGenerator.generateFsVerityDigest(inputStream, size, merkleTreeOffset); return Pair.create(fsVerityGenerator.getFsVerityDigest(), fsVerityGenerator.getTreeBytes()); -- Gitee From 1ba6a674b1e37662ec2e1383bc135a43d95020e6 Mon Sep 17 00:00:00 2001 From: zfeixiang Date: Sat, 21 Dec 2024 14:37:46 +0800 Subject: [PATCH 09/13] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20pageinfo=20=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E8=BE=93=E5=87=BA=E9=94=99=E8=AF=AF=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zfeixiang --- .../java/com/ohos/hapsigntool/codesigning/sign/CodeSigning.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/sign/CodeSigning.java b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/sign/CodeSigning.java index 900b8ba0..36da0523 100644 --- a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/sign/CodeSigning.java +++ b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/sign/CodeSigning.java @@ -210,7 +210,7 @@ public class CodeSigning { return generated; } - private void createPageInfoExtension(ZipEntry entry) throws HapFormatException { + private void createPageInfoExtension(ZipEntry entry) { long bitmapOff = entry.getCentralDirectory().getOffset() + ZipEntryHeader.HEADER_LENGTH + entry.getZipEntryData().getZipEntryHeader().getFileNameLength() + entry.getZipEntryData() .getZipEntryHeader() -- Gitee From bba76fd74551b4712a76156416991410906a346b Mon Sep 17 00:00:00 2001 From: zfeixiang Date: Sat, 21 Dec 2024 16:25:03 +0800 Subject: [PATCH 10/13] =?UTF-8?q?=E5=A2=9E=E5=8A=A0page=20info=20=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E5=BC=82=E5=B8=B8=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zfeixiang --- .../hapsigntool/codesigning/exception/PageInfoException.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/exception/PageInfoException.java b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/exception/PageInfoException.java index 5c3bc0f9..3e6ce934 100644 --- a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/exception/PageInfoException.java +++ b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/exception/PageInfoException.java @@ -16,9 +16,9 @@ package com.ohos.hapsigntool.codesigning.exception; /** - * CodeSign exception + * PageInfo exception * - * @since 2023/06/05 + * @since 2024/12/20 */ public class PageInfoException extends Exception { private static final long serialVersionUID = -6814492423615912290L; -- Gitee From 7606aaf82a799844d74a0869b69fe43251989a26 Mon Sep 17 00:00:00 2001 From: zfeixiang Date: Mon, 23 Dec 2024 14:17:52 +0800 Subject: [PATCH 11/13] =?UTF-8?q?=E5=A2=9E=E5=8A=A0page=20info=20=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E5=BC=82=E5=B8=B8=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zfeixiang --- .../hapsigntool/codesigning/fsverity/FsVerityGenerator.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/fsverity/FsVerityGenerator.java b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/fsverity/FsVerityGenerator.java index 601f2ae6..b9656a6b 100644 --- a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/fsverity/FsVerityGenerator.java +++ b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/fsverity/FsVerityGenerator.java @@ -89,7 +89,8 @@ public class FsVerityGenerator { * @param inputStream input stream for generate FsVerity digest * @param size total size of input stream * @param fsvTreeOffset merkle tree raw bytes offset based on the start of file - * @throws FsVerityDigestException if error + * @throws FsVerityDigestException fsVerity digest error + * @throws PageInfoException page info error */ public void generateFsVerityDigest(InputStream inputStream, long size, long fsvTreeOffset) throws FsVerityDigestException, PageInfoException { -- Gitee From 478d3451eb9b3e81301a86eef822c5b258fa1095 Mon Sep 17 00:00:00 2001 From: zfeixiang Date: Mon, 23 Dec 2024 15:11:35 +0800 Subject: [PATCH 12/13] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E5=8C=96=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zfeixiang --- .../hapsigntool/codesigning/fsverity/FsVerityGenerator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/fsverity/FsVerityGenerator.java b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/fsverity/FsVerityGenerator.java index b9656a6b..ff7e3954 100644 --- a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/fsverity/FsVerityGenerator.java +++ b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/fsverity/FsVerityGenerator.java @@ -118,7 +118,7 @@ public class FsVerityGenerator { throw new FsVerityDigestException("Invalid algorithm" + e.getMessage(), e); } if (pageInfoExtension != null && flags != 0) { - PageInfoExtension.valid(pageInfoExtension,size); + PageInfoExtension.valid(pageInfoExtension, size); try { byte[] fsVerityDescriptorV2 = builder.build() .getDiscByteCsv2(pageInfoExtension.getMapOffset(), pageInfoExtension.getMapSize(), -- Gitee From b5db4a2173951ef26623e23cba439f995e974c7c Mon Sep 17 00:00:00 2001 From: zfeixiang Date: Mon, 23 Dec 2024 22:24:48 +0800 Subject: [PATCH 13/13] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E5=90=88=E8=A7=84?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zfeixiang --- .../hapsigntool/codesigning/exception/PageInfoException.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/exception/PageInfoException.java b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/exception/PageInfoException.java index 3e6ce934..f105cfb7 100644 --- a/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/exception/PageInfoException.java +++ b/hapsigntool/hap_sign_tool_lib/src/main/java/com/ohos/hapsigntool/codesigning/exception/PageInfoException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023-2023 Huawei Device Co., Ltd. + * Copyright (c) 2024-2024 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at -- Gitee