sort signature info after loaded

This commit is contained in:
REAndroid 2023-04-29 20:18:16 +02:00
parent 744694ccee
commit d41bc5857c
2 changed files with 18 additions and 18 deletions

View File

@ -148,13 +148,7 @@ public class ApkSignatureBlock extends LengthPrefixedList<SignatureInfo>
} }
@Override @Override
public int compare(SignatureInfo info1, SignatureInfo info2) { public int compare(SignatureInfo info1, SignatureInfo info2) {
if(SignatureId.PADDING.equals(info1.getId())){ return info1.getId().compareTo(info2.getId());
return 0;
}
if(SignatureId.PADDING.equals(info2.getId())){
return 1;
}
return 0;
} }
public static final String FILE_EXT = ".sig"; public static final String FILE_EXT = ".sig";

View File

@ -19,13 +19,15 @@ import com.reandroid.arsc.decoder.ValueDecoder;
import java.util.Objects; import java.util.Objects;
public class SignatureId { public class SignatureId implements Comparable<SignatureId>{
private final String name; private final String name;
private final int id; private final int id;
private final int sort;
private SignatureId(String name, int id) { private SignatureId(String name, int id, int sort) {
this.name = name; this.name = name;
this.id = id; this.id = id;
this.sort = sort;
} }
public String name() { public String name() {
return name; return name;
@ -51,6 +53,10 @@ public class SignatureId {
return id == that.id; return id == that.id;
} }
@Override @Override
public int compareTo(SignatureId signatureId) {
return Integer.compare(sort, signatureId.sort);
}
@Override
public int hashCode() { public int hashCode() {
return Objects.hash(id); return Objects.hash(id);
} }
@ -76,7 +82,7 @@ public class SignatureId {
} }
} }
if (ValueDecoder.isHex(name)) { if (ValueDecoder.isHex(name)) {
return new SignatureId(null, ValueDecoder.parseHex(name)); return new SignatureId(null, ValueDecoder.parseHex(name), 99);
} }
return null; return null;
} }
@ -86,20 +92,20 @@ public class SignatureId {
return signatureId; return signatureId;
} }
} }
return new SignatureId(null, id); return new SignatureId(null, id, 99);
} }
public static SignatureId[] values() { public static SignatureId[] values() {
return VALUES.clone(); return VALUES.clone();
} }
public static final SignatureId V2 = new SignatureId("V2", 0x7109871A); public static final SignatureId V2 = new SignatureId("V2", 0x7109871A, 0);
public static final SignatureId V3 = new SignatureId("V3", 0xF05368C0); public static final SignatureId V3 = new SignatureId("V3", 0xF05368C0, 1);
public static final SignatureId V31 = new SignatureId("V31", 0x1B93AD61); public static final SignatureId V31 = new SignatureId("V31", 0x1B93AD61, 2);
public static final SignatureId STAMP_V1 = new SignatureId("STAMP_V1", 0x2B09189E); public static final SignatureId STAMP_V1 = new SignatureId("STAMP_V1", 0x2B09189E, 3);
public static final SignatureId STAMP_V2 = new SignatureId("STAMP_V2", 0x6DFF800D); public static final SignatureId STAMP_V2 = new SignatureId("STAMP_V2", 0x6DFF800D, 4);
public static final SignatureId PADDING = new SignatureId("PADDING", 0x42726577); public static final SignatureId PADDING = new SignatureId("PADDING", 0x42726577, 9999);
public static final SignatureId NULL = new SignatureId("NULL", 0x0); public static final SignatureId NULL = new SignatureId("NULL", 0x0, 999);
private static final SignatureId[] VALUES = new SignatureId[]{ private static final SignatureId[] VALUES = new SignatureId[]{
V2, V3, V31, STAMP_V1, STAMP_V2, PADDING, NULL V2, V3, V31, STAMP_V1, STAMP_V2, PADDING, NULL