From 1c810ece260463adc33f46a2a3c4c16665a1a735 Mon Sep 17 00:00:00 2001 From: REAndroid Date: Wed, 26 Apr 2023 18:42:26 +0200 Subject: [PATCH] Dump and load apk signature block #33 --- .../java/com/reandroid/apk/ApkModule.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/main/java/com/reandroid/apk/ApkModule.java b/src/main/java/com/reandroid/apk/ApkModule.java index ab1d8a2..3199adc 100644 --- a/src/main/java/com/reandroid/apk/ApkModule.java +++ b/src/main/java/com/reandroid/apk/ApkModule.java @@ -71,6 +71,48 @@ public class ApkModule implements ApkFile { this.apkSignatureBlock = apkSignatureBlock; } + public boolean hasSignatureBlock(){ + return getApkSignatureBlock() != null; + } + + public void dumpSignatureInfoFiles(File directory) throws IOException{ + ApkSignatureBlock apkSignatureBlock = getApkSignatureBlock(); + if(apkSignatureBlock == null){ + throw new IOException("Don't have signature block"); + } + apkSignatureBlock.writeSplitRawToDirectory(directory); + } + public void dumpSignatureBlock(File file) throws IOException{ + ApkSignatureBlock apkSignatureBlock = getApkSignatureBlock(); + if(apkSignatureBlock == null){ + throw new IOException("Don't have signature block"); + } + apkSignatureBlock.writeRaw(file); + } + + public void scanSignatureInfoFiles(File directory) throws IOException{ + if(!directory.isDirectory()){ + throw new IOException("No such directory: " + directory); + } + ApkSignatureBlock apkSignatureBlock = this.apkSignatureBlock; + if(apkSignatureBlock == null){ + apkSignatureBlock = new ApkSignatureBlock(); + } + apkSignatureBlock.scanSplitFiles(directory); + setApkSignatureBlock(apkSignatureBlock); + } + public void loadSignatureBlock(File file) throws IOException{ + if(!file.isFile()){ + throw new IOException("No such file: " + file); + } + ApkSignatureBlock apkSignatureBlock = this.apkSignatureBlock; + if(apkSignatureBlock == null){ + apkSignatureBlock = new ApkSignatureBlock(); + } + apkSignatureBlock.read(file); + setApkSignatureBlock(apkSignatureBlock); + } + public String getSplit(){ if(!hasAndroidManifestBlock()){ return null;