From 3c5ed64380e438a14128440da0d9435ecc5ff232 Mon Sep 17 00:00:00 2001 From: elseif Date: Thu, 21 Aug 2025 20:52:04 +0800 Subject: [PATCH] Update npk.py Signed-off-by: elseif --- npk.py | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/npk.py b/npk.py index ec573b1..3fb672c 100644 --- a/npk.py +++ b/npk.py @@ -207,7 +207,27 @@ class NovaPackage(Package): self._parts.append(NpkPartItem(NpkPartID(part_id),NpkInfo.unserialize_from(part_data))) else: self._parts.append(NpkPartItem(NpkPartID(part_id),part_data)) - + def set_null_block(self): + if len(self._packages) > 0: + for package in self._packages: + count = 8 + for part in package._parts: + count += 6 + if part.id == NpkPartID.NULL_BLOCK: + break + count += len(part.data) + count += 6 + package[NpkPartID.NULL_BLOCK].data = b'\x00' * (4096-count) + + else: + count = 8 + for part in self._parts: + count += 6 + if part.id == NpkPartID.NULL_BLOCK: + break + count += len(part.data) + count += 6 + self[NpkPartID.NULL_BLOCK].data = b'\x00' * (4096-count) def get_digest(self,hash_fnc,package:Package=None)->bytes: parts = package._parts if package else self._parts for part in parts: @@ -229,6 +249,7 @@ class NovaPackage(Package): import hashlib from mikro import mikro_kcdsa_sign,mikro_eddsa_sign build_time = os.getenv('BUILD_TIME',None) + self.set_null_block() if len(self._packages) > 0: if build_time: self[NpkPartID.PKG_INFO].data._build_time = int(build_time) @@ -356,4 +377,4 @@ if __name__=='__main__': option_npk.save(args.output) print(f'Created {args.output}') else: - parser.print_help() \ No newline at end of file + parser.print_help()