public class sun.security.util.SignatureFileVerifier
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: sun.security.util.SignatureFileVerifier
super_class: java.lang.Object
{
private static final sun.security.util.Debug debug;
descriptor: Lsun/security/util/Debug;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final sun.security.util.DisabledAlgorithmConstraints JAR_DISABLED_CHECK;
descriptor: Lsun/security/util/DisabledAlgorithmConstraints;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private java.util.ArrayList<java.security.CodeSigner[]> signerCache;
descriptor: Ljava/util/ArrayList;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/ArrayList<[Ljava/security/CodeSigner;>;
private static final java.lang.String ATTR_DIGEST;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private sun.security.pkcs.PKCS7 block;
descriptor: Lsun/security/pkcs/PKCS7;
flags: (0x0002) ACC_PRIVATE
private byte[] sfBytes;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private java.lang.String name;
descriptor: Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
private sun.security.util.ManifestDigester md;
descriptor: Lsun/security/util/ManifestDigester;
flags: (0x0002) ACC_PRIVATE
private java.util.HashMap<java.lang.String, java.security.MessageDigest> createdDigests;
descriptor: Ljava/util/HashMap;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/HashMap<Ljava/lang/String;Ljava/security/MessageDigest;>;
private boolean workaround;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private java.security.cert.CertificateFactory certificateFactory;
descriptor: Ljava/security/cert/CertificateFactory;
flags: (0x0002) ACC_PRIVATE
private java.util.Map<java.lang.String, java.lang.Boolean> permittedAlgs;
descriptor: Ljava/util/Map;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/Map<Ljava/lang/String;Ljava/lang/Boolean;>;
private java.security.Timestamp timestamp;
descriptor: Ljava/security/Timestamp;
flags: (0x0002) ACC_PRIVATE
private static final char[] hexc;
descriptor: [C
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=0, args_size=0
0: ldc "jar"
invokestatic sun.security.util.Debug.getInstance:(Ljava/lang/String;)Lsun/security/util/Debug;
putstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
1: new sun.security.util.DisabledAlgorithmConstraints
dup
2: ldc "jdk.jar.disabledAlgorithms"
3: invokespecial sun.security.util.DisabledAlgorithmConstraints.<init>:(Ljava/lang/String;)V
4: putstatic sun.security.util.SignatureFileVerifier.JAR_DISABLED_CHECK:Lsun/security/util/DisabledAlgorithmConstraints;
5: ldc "-DIGEST-Manifest-Main-Attributes"
6: getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
7: invokevirtual java.lang.String.toUpperCase:(Ljava/util/Locale;)Ljava/lang/String;
8: putstatic sun.security.util.SignatureFileVerifier.ATTR_DIGEST:Ljava/lang/String;
9: bipush 16
newarray 5
dup
iconst_0
bipush 48
castore
dup
iconst_1
bipush 49
castore
dup
iconst_2
bipush 50
castore
dup
iconst_3
bipush 51
castore
dup
iconst_4
bipush 52
castore
dup
iconst_5
bipush 53
castore
dup
bipush 6
bipush 54
castore
dup
bipush 7
bipush 55
castore
dup
bipush 8
bipush 56
castore
dup
bipush 9
bipush 57
castore
dup
bipush 10
bipush 97
castore
dup
bipush 11
bipush 98
castore
dup
bipush 12
bipush 99
castore
dup
bipush 13
bipush 100
castore
dup
bipush 14
bipush 101
castore
dup
bipush 15
bipush 102
castore
10: putstatic sun.security.util.SignatureFileVerifier.hexc:[C
11: return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(java.util.ArrayList<java.security.CodeSigner[]>, sun.security.util.ManifestDigester, java.lang.String, );
descriptor: (Ljava/util/ArrayList;Lsun/security/util/ManifestDigester;Ljava/lang/String;[B)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=7, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
iconst_0
putfield sun.security.util.SignatureFileVerifier.workaround:Z
2: aload 0
aconst_null
putfield sun.security.util.SignatureFileVerifier.certificateFactory:Ljava/security/cert/CertificateFactory;
3: aload 0
new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
putfield sun.security.util.SignatureFileVerifier.permittedAlgs:Ljava/util/Map;
4: aload 0
aconst_null
putfield sun.security.util.SignatureFileVerifier.timestamp:Ljava/security/Timestamp;
5: aconst_null
astore 5
start local 5 6: invokestatic sun.security.jca.Providers.startJarVerification:()Ljava/lang/Object;
astore 5
7: aload 0
new sun.security.pkcs.PKCS7
dup
aload 4
invokespecial sun.security.pkcs.PKCS7.<init>:([B)V
putfield sun.security.util.SignatureFileVerifier.block:Lsun/security/pkcs/PKCS7;
8: aload 0
aload 0
getfield sun.security.util.SignatureFileVerifier.block:Lsun/security/pkcs/PKCS7;
invokevirtual sun.security.pkcs.PKCS7.getContentInfo:()Lsun/security/pkcs/ContentInfo;
invokevirtual sun.security.pkcs.ContentInfo.getData:()[B
putfield sun.security.util.SignatureFileVerifier.sfBytes:[B
9: aload 0
ldc "X509"
invokestatic java.security.cert.CertificateFactory.getInstance:(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
putfield sun.security.util.SignatureFileVerifier.certificateFactory:Ljava/security/cert/CertificateFactory;
10: goto 14
StackMap locals: sun.security.util.SignatureFileVerifier java.util.ArrayList sun.security.util.ManifestDigester java.lang.String byte[] java.lang.Object
StackMap stack: java.lang.Throwable
11: astore 6
12: aload 5
invokestatic sun.security.jca.Providers.stopJarVerification:(Ljava/lang/Object;)V
13: aload 6
athrow
14: StackMap locals:
StackMap stack:
aload 5
invokestatic sun.security.jca.Providers.stopJarVerification:(Ljava/lang/Object;)V
15: aload 0
aload 3
iconst_0
aload 3
bipush 46
invokevirtual java.lang.String.lastIndexOf:(I)I
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
16: getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
invokevirtual java.lang.String.toUpperCase:(Ljava/util/Locale;)Ljava/lang/String;
17: putfield sun.security.util.SignatureFileVerifier.name:Ljava/lang/String;
18: aload 0
aload 2
putfield sun.security.util.SignatureFileVerifier.md:Lsun/security/util/ManifestDigester;
19: aload 0
aload 1
putfield sun.security.util.SignatureFileVerifier.signerCache:Ljava/util/ArrayList;
20: return
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 this Lsun/security/util/SignatureFileVerifier;
0 21 1 signerCache Ljava/util/ArrayList<[Ljava/security/CodeSigner;>;
0 21 2 md Lsun/security/util/ManifestDigester;
0 21 3 name Ljava/lang/String;
0 21 4 rawBytes [B
6 21 5 obj Ljava/lang/Object;
Exception table:
from to target type
6 11 11 any
Exceptions:
throws java.io.IOException, java.security.cert.CertificateException
Signature: (Ljava/util/ArrayList<[Ljava/security/CodeSigner;>;Lsun/security/util/ManifestDigester;Ljava/lang/String;[B)V
MethodParameters:
Name Flags
signerCache
md
name
rawBytes
public boolean needSignatureFileBytes();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.util.SignatureFileVerifier.sfBytes:[B
ifnonnull 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/util/SignatureFileVerifier;
public boolean needSignatureFile(java.lang.String);
descriptor: (Ljava/lang/String;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield sun.security.util.SignatureFileVerifier.name:Ljava/lang/String;
aload 1
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/util/SignatureFileVerifier;
0 1 1 name Ljava/lang/String;
MethodParameters:
Name Flags
name
public void setSignatureFile(byte[]);
descriptor: ([B)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
putfield sun.security.util.SignatureFileVerifier.sfBytes:[B
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/util/SignatureFileVerifier;
0 2 1 sfBytes [B
MethodParameters:
Name Flags
sfBytes
public static boolean isBlockOrSF(java.lang.String);
descriptor: (Ljava/lang/String;)Z
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
ldc ".SF"
invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
ifne 5
1: aload 0
ldc ".DSA"
invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
ifne 5
2: aload 0
ldc ".RSA"
invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
ifne 5
3: aload 0
ldc ".EC"
invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
ifne 5
4: iconst_0
ireturn
StackMap locals:
StackMap stack:
5: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 s Ljava/lang/String;
MethodParameters:
Name Flags
s
public static boolean isSigningRelated(java.lang.String);
descriptor: (Ljava/lang/String;)Z
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=5, args_size=1
start local 0 0: aload 0
getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
invokevirtual java.lang.String.toUpperCase:(Ljava/util/Locale;)Ljava/lang/String;
astore 0
1: aload 0
ldc "META-INF/"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifne 3
2: iconst_0
ireturn
3: StackMap locals:
StackMap stack:
aload 0
bipush 9
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
astore 0
4: aload 0
bipush 47
invokevirtual java.lang.String.indexOf:(I)I
iconst_m1
if_icmpeq 6
5: iconst_0
ireturn
6: StackMap locals:
StackMap stack:
aload 0
invokestatic sun.security.util.SignatureFileVerifier.isBlockOrSF:(Ljava/lang/String;)Z
ifne 7
aload 0
ldc "MANIFEST.MF"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 8
7: StackMap locals:
StackMap stack:
iconst_1
ireturn
8: StackMap locals:
StackMap stack:
aload 0
ldc "SIG-"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 23
9: aload 0
bipush 46
invokevirtual java.lang.String.lastIndexOf:(I)I
istore 1
start local 1 10: iload 1
iconst_m1
if_icmpeq 22
11: aload 0
iload 1
iconst_1
iadd
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
astore 2
start local 2 12: aload 2
invokevirtual java.lang.String.length:()I
iconst_3
if_icmpgt 13
aload 2
invokevirtual java.lang.String.length:()I
iconst_1
if_icmpge 14
13: StackMap locals: int java.lang.String
StackMap stack:
iconst_0
ireturn
14: StackMap locals:
StackMap stack:
iconst_0
istore 3
start local 3 15: goto 21
16: StackMap locals: int
StackMap stack:
aload 2
iload 3
invokevirtual java.lang.String.charAt:(I)C
istore 4
start local 4 17: iload 4
bipush 65
if_icmplt 18
iload 4
bipush 90
if_icmple 20
StackMap locals: int
StackMap stack:
18: iload 4
bipush 48
if_icmplt 19
iload 4
bipush 57
if_icmple 20
19: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 4 20: StackMap locals:
StackMap stack:
iinc 3 1
StackMap locals:
StackMap stack:
21: iload 3
aload 2
invokevirtual java.lang.String.length:()I
if_icmplt 16
end local 3 end local 2 22: StackMap locals:
StackMap stack:
iconst_1
ireturn
end local 1 23: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 24 0 name Ljava/lang/String;
10 23 1 extIndex I
12 22 2 ext Ljava/lang/String;
15 22 3 index I
17 20 4 cc C
MethodParameters:
Name Flags
name
private java.security.MessageDigest getDigest(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/security/MessageDigest;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield sun.security.util.SignatureFileVerifier.createdDigests:Ljava/util/HashMap;
ifnonnull 2
1: aload 0
new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
putfield sun.security.util.SignatureFileVerifier.createdDigests:Ljava/util/HashMap;
2: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.util.SignatureFileVerifier.createdDigests:Ljava/util/HashMap;
aload 1
invokevirtual java.util.HashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.security.MessageDigest
astore 2
start local 2 3: aload 2
ifnonnull 8
4: aload 1
invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
astore 2
5: aload 0
getfield sun.security.util.SignatureFileVerifier.createdDigests:Ljava/util/HashMap;
aload 1
aload 2
invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
6: goto 8
StackMap locals: sun.security.util.SignatureFileVerifier java.lang.String java.security.MessageDigest
StackMap stack: java.security.NoSuchAlgorithmException
7: pop
8: StackMap locals:
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lsun/security/util/SignatureFileVerifier;
0 9 1 algorithm Ljava/lang/String;
3 9 2 digest Ljava/security/MessageDigest;
Exception table:
from to target type
4 6 7 Class java.security.NoSuchAlgorithmException
Exceptions:
throws java.security.SignatureException
MethodParameters:
Name Flags
algorithm
public void process(java.util.Hashtable<java.lang.String, java.security.CodeSigner[]>, java.util.List<java.lang.Object>);
descriptor: (Ljava/util/Hashtable;Ljava/util/List;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aconst_null
astore 3
start local 3 1: invokestatic sun.security.jca.Providers.startJarVerification:()Ljava/lang/Object;
astore 3
2: aload 0
aload 1
aload 2
invokevirtual sun.security.util.SignatureFileVerifier.processImpl:(Ljava/util/Hashtable;Ljava/util/List;)V
3: goto 7
StackMap locals: sun.security.util.SignatureFileVerifier java.util.Hashtable java.util.List java.lang.Object
StackMap stack: java.lang.Throwable
4: astore 4
5: aload 3
invokestatic sun.security.jca.Providers.stopJarVerification:(Ljava/lang/Object;)V
6: aload 4
athrow
7: StackMap locals:
StackMap stack:
aload 3
invokestatic sun.security.jca.Providers.stopJarVerification:(Ljava/lang/Object;)V
8: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lsun/security/util/SignatureFileVerifier;
0 9 1 signers Ljava/util/Hashtable<Ljava/lang/String;[Ljava/security/CodeSigner;>;
0 9 2 manifestDigests Ljava/util/List<Ljava/lang/Object;>;
1 9 3 obj Ljava/lang/Object;
Exception table:
from to target type
1 4 4 any
Exceptions:
throws java.io.IOException, java.security.SignatureException, java.security.NoSuchAlgorithmException, java.util.jar.JarException, java.security.cert.CertificateException
Signature: (Ljava/util/Hashtable<Ljava/lang/String;[Ljava/security/CodeSigner;>;Ljava/util/List<Ljava/lang/Object;>;)V
MethodParameters:
Name Flags
signers
manifestDigests
private void processImpl(java.util.Hashtable<java.lang.String, java.security.CodeSigner[]>, java.util.List<java.lang.Object>);
descriptor: (Ljava/util/Hashtable;Ljava/util/List;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=12, args_size=3
start local 0 start local 1 start local 2 0: new java.util.jar.Manifest
dup
invokespecial java.util.jar.Manifest.<init>:()V
astore 3
start local 3 1: aload 3
new java.io.ByteArrayInputStream
dup
aload 0
getfield sun.security.util.SignatureFileVerifier.sfBytes:[B
invokespecial java.io.ByteArrayInputStream.<init>:([B)V
invokevirtual java.util.jar.Manifest.read:(Ljava/io/InputStream;)V
2: aload 3
invokevirtual java.util.jar.Manifest.getMainAttributes:()Ljava/util/jar/Attributes;
getstatic java.util.jar.Attributes$Name.SIGNATURE_VERSION:Ljava/util/jar/Attributes$Name;
invokevirtual java.util.jar.Attributes.getValue:(Ljava/util/jar/Attributes$Name;)Ljava/lang/String;
3: astore 4
start local 4 4: aload 4
ifnull 5
aload 4
ldc "1.0"
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifne 6
5: StackMap locals: java.util.jar.Manifest java.lang.String
StackMap stack:
return
6: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.util.SignatureFileVerifier.block:Lsun/security/pkcs/PKCS7;
aload 0
getfield sun.security.util.SignatureFileVerifier.sfBytes:[B
invokevirtual sun.security.pkcs.PKCS7.verify:([B)[Lsun/security/pkcs/SignerInfo;
astore 5
start local 5 7: aload 5
ifnonnull 11
8: new java.lang.SecurityException
dup
new java.lang.StringBuilder
dup
ldc "cannot verify signature block file "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
9: aload 0
getfield sun.security.util.SignatureFileVerifier.name:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
10: invokespecial java.lang.SecurityException.<init>:(Ljava/lang/String;)V
athrow
11: StackMap locals: sun.security.pkcs.SignerInfo[]
StackMap stack:
new sun.misc.BASE64Decoder
dup
invokespecial sun.misc.BASE64Decoder.<init>:()V
astore 6
start local 6 12: aload 0
aload 5
aload 0
getfield sun.security.util.SignatureFileVerifier.block:Lsun/security/pkcs/PKCS7;
invokevirtual sun.security.util.SignatureFileVerifier.getSigners:([Lsun/security/pkcs/SignerInfo;Lsun/security/pkcs/PKCS7;)[Ljava/security/CodeSigner;
astore 7
start local 7 13: aload 7
ifnonnull 15
14: return
15: StackMap locals: sun.misc.BASE64Decoder java.security.CodeSigner[]
StackMap stack:
aload 7
dup
astore 11
arraylength
istore 10
iconst_0
istore 9
goto 31
StackMap locals: sun.security.util.SignatureFileVerifier java.util.Hashtable java.util.List java.util.jar.Manifest java.lang.String sun.security.pkcs.SignerInfo[] sun.misc.BASE64Decoder java.security.CodeSigner[] top int int java.security.CodeSigner[]
StackMap stack:
16: aload 11
iload 9
aaload
astore 8
start local 8 17: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
ifnull 19
18: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
new java.lang.StringBuilder
dup
ldc "Gathering timestamp for: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 8
invokevirtual java.security.CodeSigner.toString:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
19: StackMap locals: sun.security.util.SignatureFileVerifier java.util.Hashtable java.util.List java.util.jar.Manifest java.lang.String sun.security.pkcs.SignerInfo[] sun.misc.BASE64Decoder java.security.CodeSigner[] java.security.CodeSigner int int java.security.CodeSigner[]
StackMap stack:
aload 8
invokevirtual java.security.CodeSigner.getTimestamp:()Ljava/security/Timestamp;
ifnonnull 22
20: aload 0
aconst_null
putfield sun.security.util.SignatureFileVerifier.timestamp:Ljava/security/Timestamp;
21: goto 32
22: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.util.SignatureFileVerifier.timestamp:Ljava/security/Timestamp;
ifnonnull 25
23: aload 0
aload 8
invokevirtual java.security.CodeSigner.getTimestamp:()Ljava/security/Timestamp;
putfield sun.security.util.SignatureFileVerifier.timestamp:Ljava/security/Timestamp;
24: goto 30
25: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.util.SignatureFileVerifier.timestamp:Ljava/security/Timestamp;
invokevirtual java.security.Timestamp.getTimestamp:()Ljava/util/Date;
26: aload 8
invokevirtual java.security.CodeSigner.getTimestamp:()Ljava/security/Timestamp;
invokevirtual java.security.Timestamp.getTimestamp:()Ljava/util/Date;
27: invokevirtual java.util.Date.before:(Ljava/util/Date;)Z
28: ifeq 30
29: aload 0
aload 8
invokevirtual java.security.CodeSigner.getTimestamp:()Ljava/security/Timestamp;
putfield sun.security.util.SignatureFileVerifier.timestamp:Ljava/security/Timestamp;
end local 8 30: StackMap locals: sun.security.util.SignatureFileVerifier java.util.Hashtable java.util.List java.util.jar.Manifest java.lang.String sun.security.pkcs.SignerInfo[] sun.misc.BASE64Decoder java.security.CodeSigner[] top int int java.security.CodeSigner[]
StackMap stack:
iinc 9 1
StackMap locals:
StackMap stack:
31: iload 9
iload 10
if_icmplt 16
32: StackMap locals: sun.security.util.SignatureFileVerifier java.util.Hashtable java.util.List java.util.jar.Manifest java.lang.String sun.security.pkcs.SignerInfo[] sun.misc.BASE64Decoder java.security.CodeSigner[]
StackMap stack:
aload 3
invokevirtual java.util.jar.Manifest.getEntries:()Ljava/util/Map;
invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
33: astore 8
start local 8 34: aload 0
aload 3
aload 0
getfield sun.security.util.SignatureFileVerifier.md:Lsun/security/util/ManifestDigester;
aload 6
aload 2
invokevirtual sun.security.util.SignatureFileVerifier.verifyManifestHash:(Ljava/util/jar/Manifest;Lsun/security/util/ManifestDigester;Lsun/misc/BASE64Decoder;Ljava/util/List;)Z
istore 9
start local 9 35: iload 9
ifne 53
aload 0
aload 3
aload 0
getfield sun.security.util.SignatureFileVerifier.md:Lsun/security/util/ManifestDigester;
aload 6
invokevirtual sun.security.util.SignatureFileVerifier.verifyManifestMainAttrs:(Ljava/util/jar/Manifest;Lsun/security/util/ManifestDigester;Lsun/misc/BASE64Decoder;)Z
ifne 53
36: new java.lang.SecurityException
dup
37: ldc "Invalid signature file digest for Manifest main attributes"
38: invokespecial java.lang.SecurityException.<init>:(Ljava/lang/String;)V
athrow
39: StackMap locals: java.util.Iterator int
StackMap stack:
aload 8
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.util.Map$Entry
astore 10
start local 10 40: aload 10
invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
checkcast java.lang.String
astore 11
start local 11 41: iload 9
ifne 43
42: aload 0
aload 10
invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
checkcast java.util.jar.Attributes
aload 11
aload 0
getfield sun.security.util.SignatureFileVerifier.md:Lsun/security/util/ManifestDigester;
aload 6
invokevirtual sun.security.util.SignatureFileVerifier.verifySection:(Ljava/util/jar/Attributes;Ljava/lang/String;Lsun/security/util/ManifestDigester;Lsun/misc/BASE64Decoder;)Z
ifeq 51
43: StackMap locals: java.util.Map$Entry java.lang.String
StackMap stack:
aload 11
ldc "./"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 45
44: aload 11
iconst_2
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
astore 11
45: StackMap locals:
StackMap stack:
aload 11
ldc "/"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 47
46: aload 11
iconst_1
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
astore 11
47: StackMap locals:
StackMap stack:
aload 0
aload 7
aload 1
aload 11
invokevirtual sun.security.util.SignatureFileVerifier.updateSigners:([Ljava/security/CodeSigner;Ljava/util/Hashtable;Ljava/lang/String;)V
48: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
ifnull 53
49: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
new java.lang.StringBuilder
dup
ldc "processSignature signed name = "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 11
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
50: goto 53
StackMap locals:
StackMap stack:
51: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
ifnull 53
52: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
new java.lang.StringBuilder
dup
ldc "processSignature unsigned name = "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 11
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
end local 11 end local 10 53: StackMap locals:
StackMap stack:
aload 8
invokeinterface java.util.Iterator.hasNext:()Z
ifne 39
54: aload 0
aload 7
aload 1
ldc "META-INF/MANIFEST.MF"
invokevirtual sun.security.util.SignatureFileVerifier.updateSigners:([Ljava/security/CodeSigner;Ljava/util/Hashtable;Ljava/lang/String;)V
55: return
end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 56 0 this Lsun/security/util/SignatureFileVerifier;
0 56 1 signers Ljava/util/Hashtable<Ljava/lang/String;[Ljava/security/CodeSigner;>;
0 56 2 manifestDigests Ljava/util/List<Ljava/lang/Object;>;
1 56 3 sf Ljava/util/jar/Manifest;
4 56 4 version Ljava/lang/String;
7 56 5 infos [Lsun/security/pkcs/SignerInfo;
12 56 6 decoder Lsun/misc/BASE64Decoder;
13 56 7 newSigners [Ljava/security/CodeSigner;
17 30 8 s Ljava/security/CodeSigner;
34 56 8 entries Ljava/util/Iterator<Ljava/util/Map$Entry<Ljava/lang/String;Ljava/util/jar/Attributes;>;>;
35 56 9 manifestSigned Z
40 53 10 e Ljava/util/Map$Entry<Ljava/lang/String;Ljava/util/jar/Attributes;>;
41 53 11 name Ljava/lang/String;
Exceptions:
throws java.io.IOException, java.security.SignatureException, java.security.NoSuchAlgorithmException, java.util.jar.JarException, java.security.cert.CertificateException
Signature: (Ljava/util/Hashtable<Ljava/lang/String;[Ljava/security/CodeSigner;>;Ljava/util/List<Ljava/lang/Object;>;)V
MethodParameters:
Name Flags
signers
manifestDigests
boolean permittedCheck(java.lang.String, java.lang.String);
descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
flags: (0x0000)
Code:
stack=5, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield sun.security.util.SignatureFileVerifier.permittedAlgs:Ljava/util/Map;
aload 2
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.Boolean
astore 3
start local 3 1: aload 3
ifnonnull 20
2: getstatic sun.security.util.SignatureFileVerifier.JAR_DISABLED_CHECK:Lsun/security/util/DisabledAlgorithmConstraints;
aload 2
3: new sun.security.util.ConstraintsParameters
dup
aload 0
getfield sun.security.util.SignatureFileVerifier.timestamp:Ljava/security/Timestamp;
invokespecial sun.security.util.ConstraintsParameters.<init>:(Ljava/security/Timestamp;)V
4: invokevirtual sun.security.util.DisabledAlgorithmConstraints.permits:(Ljava/lang/String;Lsun/security/util/ConstraintsParameters;)V
5: goto 18
StackMap locals: sun.security.util.SignatureFileVerifier java.lang.String java.lang.String java.lang.Boolean
StackMap stack: java.security.GeneralSecurityException
6: astore 4
start local 4 7: aload 0
getfield sun.security.util.SignatureFileVerifier.permittedAlgs:Ljava/util/Map;
aload 2
getstatic java.lang.Boolean.FALSE:Ljava/lang/Boolean;
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
8: aload 0
getfield sun.security.util.SignatureFileVerifier.permittedAlgs:Ljava/util/Map;
aload 1
invokevirtual java.lang.String.toUpperCase:()Ljava/lang/String;
getstatic java.lang.Boolean.FALSE:Ljava/lang/Boolean;
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
9: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
ifnull 17
10: aload 4
invokevirtual java.security.GeneralSecurityException.getMessage:()Ljava/lang/String;
ifnull 13
11: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
new java.lang.StringBuilder
dup
aload 1
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc ": "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 4
invokevirtual java.security.GeneralSecurityException.getMessage:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
12: goto 17
13: StackMap locals: java.security.GeneralSecurityException
StackMap stack:
getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
new java.lang.StringBuilder
dup
aload 1
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc ": "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
14: ldc " was disabled, no exception msg given."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
15: invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
16: aload 4
invokevirtual java.security.GeneralSecurityException.printStackTrace:()V
17: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 4 18: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.util.SignatureFileVerifier.permittedAlgs:Ljava/util/Map;
aload 2
getstatic java.lang.Boolean.TRUE:Ljava/lang/Boolean;
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
19: iconst_1
ireturn
20: StackMap locals:
StackMap stack:
aload 3
invokevirtual java.lang.Boolean.booleanValue:()Z
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 this Lsun/security/util/SignatureFileVerifier;
0 21 1 key Ljava/lang/String;
0 21 2 algorithm Ljava/lang/String;
1 21 3 permitted Ljava/lang/Boolean;
7 18 4 e Ljava/security/GeneralSecurityException;
Exception table:
from to target type
2 5 6 Class java.security.GeneralSecurityException
MethodParameters:
Name Flags
key
algorithm
java.lang.String getWeakAlgorithms(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/lang/String;
flags: (0x0000)
Code:
stack=5, locals=5, args_size=2
start local 0 start local 1 0: ldc ""
astore 2
start local 2 1: aload 0
getfield sun.security.util.SignatureFileVerifier.permittedAlgs:Ljava/util/Map;
invokeinterface java.util.Map.keySet:()Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 4
goto 5
StackMap locals: sun.security.util.SignatureFileVerifier java.lang.String java.lang.String top java.util.Iterator
StackMap stack:
2: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.String
astore 3
start local 3 3: aload 3
aload 1
invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
ifeq 5
4: new java.lang.StringBuilder
dup
aload 2
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
iconst_0
aload 3
invokevirtual java.lang.String.length:()I
aload 1
invokevirtual java.lang.String.length:()I
isub
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 2
end local 3 5: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
6: goto 11
StackMap locals: sun.security.util.SignatureFileVerifier java.lang.String java.lang.String
StackMap stack: java.lang.RuntimeException
7: astore 3
start local 3 8: new java.lang.StringBuilder
dup
ldc "Unknown Algorithm(s). Error processing "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc ". "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
9: aload 3
invokevirtual java.lang.RuntimeException.getMessage:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
10: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 2
end local 3 11: StackMap locals:
StackMap stack:
aload 2
invokevirtual java.lang.String.length:()I
ifne 13
12: ldc "Unknown Algorithm(s)"
areturn
13: StackMap locals:
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lsun/security/util/SignatureFileVerifier;
0 14 1 header Ljava/lang/String;
1 14 2 w Ljava/lang/String;
3 5 3 key Ljava/lang/String;
8 11 3 e Ljava/lang/RuntimeException;
Exception table:
from to target type
1 6 7 Class java.lang.RuntimeException
MethodParameters:
Name Flags
header
private boolean verifyManifestHash(java.util.jar.Manifest, sun.security.util.ManifestDigester, sun.misc.BASE64Decoder, java.util.List<java.lang.Object>);
descriptor: (Ljava/util/jar/Manifest;Lsun/security/util/ManifestDigester;Lsun/misc/BASE64Decoder;Ljava/util/List;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=16, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 1
invokevirtual java.util.jar.Manifest.getMainAttributes:()Ljava/util/jar/Attributes;
astore 5
start local 5 1: iconst_0
istore 6
start local 6 2: iconst_1
istore 7
start local 7 3: iconst_0
istore 8
start local 8 4: aload 5
invokevirtual java.util.jar.Attributes.entrySet:()Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 10
goto 29
StackMap locals: sun.security.util.SignatureFileVerifier java.util.jar.Manifest sun.security.util.ManifestDigester sun.misc.BASE64Decoder java.util.List java.util.jar.Attributes int int int top java.util.Iterator
StackMap stack:
5: aload 10
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.util.Map$Entry
astore 9
start local 9 6: aload 9
invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
invokevirtual java.lang.Object.toString:()Ljava/lang/String;
astore 11
start local 11 7: aload 11
getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
invokevirtual java.lang.String.toUpperCase:(Ljava/util/Locale;)Ljava/lang/String;
ldc "-DIGEST-MANIFEST"
invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
ifeq 29
8: aload 11
iconst_0
aload 11
invokevirtual java.lang.String.length:()I
bipush 16
isub
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
astore 12
start local 12 9: iconst_1
istore 8
10: aload 0
aload 11
aload 12
invokevirtual sun.security.util.SignatureFileVerifier.permittedCheck:(Ljava/lang/String;Ljava/lang/String;)Z
ifne 12
11: goto 29
12: StackMap locals: sun.security.util.SignatureFileVerifier java.util.jar.Manifest sun.security.util.ManifestDigester sun.misc.BASE64Decoder java.util.List java.util.jar.Attributes int int int java.util.Map$Entry java.util.Iterator java.lang.String java.lang.String
StackMap stack:
iconst_0
istore 7
13: aload 4
aload 11
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
14: aload 4
aload 9
invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
15: aload 0
aload 12
invokevirtual sun.security.util.SignatureFileVerifier.getDigest:(Ljava/lang/String;)Ljava/security/MessageDigest;
astore 13
start local 13 16: aload 13
ifnull 29
17: aload 2
aload 13
invokevirtual sun.security.util.ManifestDigester.manifestDigest:(Ljava/security/MessageDigest;)[B
astore 14
start local 14 18: aload 3
aload 9
invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
checkcast java.lang.String
invokevirtual sun.misc.BASE64Decoder.decodeBuffer:(Ljava/lang/String;)[B
19: astore 15
start local 15 20: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
ifnull 27
21: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
new java.lang.StringBuilder
dup
ldc "Signature File: Manifest digest "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
22: aload 12
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
23: invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
24: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
new java.lang.StringBuilder
dup
ldc " sigfile "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 15
invokestatic sun.security.util.SignatureFileVerifier.toHex:([B)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
25: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
new java.lang.StringBuilder
dup
ldc " computed "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 14
invokestatic sun.security.util.SignatureFileVerifier.toHex:([B)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
26: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
invokevirtual sun.security.util.Debug.println:()V
27: StackMap locals: java.security.MessageDigest byte[] byte[]
StackMap stack:
aload 14
aload 15
invokestatic java.security.MessageDigest.isEqual:([B[B)Z
ifeq 29
28: iconst_1
istore 6
end local 15 end local 14 end local 13 end local 12 end local 11 end local 9 29: StackMap locals: sun.security.util.SignatureFileVerifier java.util.jar.Manifest sun.security.util.ManifestDigester sun.misc.BASE64Decoder java.util.List java.util.jar.Attributes int int int top java.util.Iterator
StackMap stack:
aload 10
invokeinterface java.util.Iterator.hasNext:()Z
ifne 5
30: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
ifnull 38
31: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
ldc "PermittedAlgs mapping: "
invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
32: aload 0
getfield sun.security.util.SignatureFileVerifier.permittedAlgs:Ljava/util/Map;
invokeinterface java.util.Map.keySet:()Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 10
goto 37
StackMap locals:
StackMap stack:
33: aload 10
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.String
astore 9
start local 9 34: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
new java.lang.StringBuilder
dup
aload 9
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " : "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
35: aload 0
getfield sun.security.util.SignatureFileVerifier.permittedAlgs:Ljava/util/Map;
aload 9
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.toString:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
36: invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
end local 9 37: StackMap locals:
StackMap stack:
aload 10
invokeinterface java.util.Iterator.hasNext:()Z
ifne 33
38: StackMap locals: sun.security.util.SignatureFileVerifier java.util.jar.Manifest sun.security.util.ManifestDigester sun.misc.BASE64Decoder java.util.List java.util.jar.Attributes int int int
StackMap stack:
iload 8
ifeq 42
iload 7
ifeq 42
39: new java.security.SignatureException
dup
new java.lang.StringBuilder
dup
ldc "Manifest hash check failed (DIGEST-MANIFEST). Disabled algorithm(s) used: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
40: aload 0
ldc "-DIGEST-MANIFEST"
invokevirtual sun.security.util.SignatureFileVerifier.getWeakAlgorithms:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
41: invokespecial java.security.SignatureException.<init>:(Ljava/lang/String;)V
athrow
42: StackMap locals:
StackMap stack:
iload 6
ireturn
end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 43 0 this Lsun/security/util/SignatureFileVerifier;
0 43 1 sf Ljava/util/jar/Manifest;
0 43 2 md Lsun/security/util/ManifestDigester;
0 43 3 decoder Lsun/misc/BASE64Decoder;
0 43 4 manifestDigests Ljava/util/List<Ljava/lang/Object;>;
1 43 5 mattr Ljava/util/jar/Attributes;
2 43 6 manifestSigned Z
3 43 7 weakAlgs Z
4 43 8 validEntry Z
6 29 9 se Ljava/util/Map$Entry<Ljava/lang/Object;Ljava/lang/Object;>;
7 29 11 key Ljava/lang/String;
9 29 12 algorithm Ljava/lang/String;
16 29 13 digest Ljava/security/MessageDigest;
18 29 14 computedHash [B
20 29 15 expectedHash [B
34 37 9 key Ljava/lang/String;
Exceptions:
throws java.io.IOException, java.security.SignatureException
Signature: (Ljava/util/jar/Manifest;Lsun/security/util/ManifestDigester;Lsun/misc/BASE64Decoder;Ljava/util/List<Ljava/lang/Object;>;)Z
MethodParameters:
Name Flags
sf
md
decoder
manifestDigests
private boolean verifyManifestMainAttrs(java.util.jar.Manifest, sun.security.util.ManifestDigester, sun.misc.BASE64Decoder);
descriptor: (Ljava/util/jar/Manifest;Lsun/security/util/ManifestDigester;Lsun/misc/BASE64Decoder;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=16, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
invokevirtual java.util.jar.Manifest.getMainAttributes:()Ljava/util/jar/Attributes;
astore 4
start local 4 1: iconst_1
istore 5
start local 5 2: iconst_1
istore 6
start local 6 3: iconst_0
istore 7
start local 7 4: aload 4
invokevirtual java.util.jar.Attributes.entrySet:()Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 9
goto 34
StackMap locals: sun.security.util.SignatureFileVerifier java.util.jar.Manifest sun.security.util.ManifestDigester sun.misc.BASE64Decoder java.util.jar.Attributes int int int top java.util.Iterator
StackMap stack:
5: aload 9
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.util.Map$Entry
astore 8
start local 8 6: aload 8
invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
invokevirtual java.lang.Object.toString:()Ljava/lang/String;
astore 10
start local 10 7: aload 10
getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
invokevirtual java.lang.String.toUpperCase:(Ljava/util/Locale;)Ljava/lang/String;
getstatic sun.security.util.SignatureFileVerifier.ATTR_DIGEST:Ljava/lang/String;
invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
ifeq 34
8: aload 10
iconst_0
aload 10
invokevirtual java.lang.String.length:()I
getstatic sun.security.util.SignatureFileVerifier.ATTR_DIGEST:Ljava/lang/String;
invokevirtual java.lang.String.length:()I
isub
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
9: astore 11
start local 11 10: iconst_1
istore 7
11: aload 0
aload 10
aload 11
invokevirtual sun.security.util.SignatureFileVerifier.permittedCheck:(Ljava/lang/String;Ljava/lang/String;)Z
ifne 13
12: goto 34
13: StackMap locals: sun.security.util.SignatureFileVerifier java.util.jar.Manifest sun.security.util.ManifestDigester sun.misc.BASE64Decoder java.util.jar.Attributes int int int java.util.Map$Entry java.util.Iterator java.lang.String java.lang.String
StackMap stack:
iconst_0
istore 6
14: aload 0
aload 11
invokevirtual sun.security.util.SignatureFileVerifier.getDigest:(Ljava/lang/String;)Ljava/security/MessageDigest;
astore 12
start local 12 15: aload 12
ifnull 34
16: aload 2
ldc "Manifest-Main-Attributes"
iconst_0
invokevirtual sun.security.util.ManifestDigester.get:(Ljava/lang/String;Z)Lsun/security/util/ManifestDigester$Entry;
17: astore 13
start local 13 18: aload 13
aload 12
invokevirtual sun.security.util.ManifestDigester$Entry.digest:(Ljava/security/MessageDigest;)[B
astore 14
start local 14 19: aload 3
aload 8
invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
checkcast java.lang.String
invokevirtual sun.misc.BASE64Decoder.decodeBuffer:(Ljava/lang/String;)[B
20: astore 15
start local 15 21: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
ifnull 28
22: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
new java.lang.StringBuilder
dup
ldc "Signature File: Manifest Main Attributes digest "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
23: aload 12
invokevirtual java.security.MessageDigest.getAlgorithm:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
24: invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
25: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
new java.lang.StringBuilder
dup
ldc " sigfile "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 15
invokestatic sun.security.util.SignatureFileVerifier.toHex:([B)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
26: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
new java.lang.StringBuilder
dup
ldc " computed "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 14
invokestatic sun.security.util.SignatureFileVerifier.toHex:([B)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
27: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
invokevirtual sun.security.util.Debug.println:()V
28: StackMap locals: sun.security.util.SignatureFileVerifier java.util.jar.Manifest sun.security.util.ManifestDigester sun.misc.BASE64Decoder java.util.jar.Attributes int int int java.util.Map$Entry java.util.Iterator java.lang.String java.lang.String java.security.MessageDigest sun.security.util.ManifestDigester$Entry byte[] byte[]
StackMap stack:
aload 14
aload 15
invokestatic java.security.MessageDigest.isEqual:([B[B)Z
ifne 34
29: iconst_0
istore 5
30: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
ifnull 35
31: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
ldc "Verification of Manifest main attributes failed"
invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
32: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
invokevirtual sun.security.util.Debug.println:()V
33: goto 35
end local 15 end local 14 end local 13 end local 12 end local 11 end local 10 end local 8 34: StackMap locals: sun.security.util.SignatureFileVerifier java.util.jar.Manifest sun.security.util.ManifestDigester sun.misc.BASE64Decoder java.util.jar.Attributes int int int top java.util.Iterator
StackMap stack:
aload 9
invokeinterface java.util.Iterator.hasNext:()Z
ifne 5
35: StackMap locals: sun.security.util.SignatureFileVerifier java.util.jar.Manifest sun.security.util.ManifestDigester sun.misc.BASE64Decoder java.util.jar.Attributes int int int
StackMap stack:
getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
ifnull 43
36: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
ldc "PermittedAlgs mapping: "
invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
37: aload 0
getfield sun.security.util.SignatureFileVerifier.permittedAlgs:Ljava/util/Map;
invokeinterface java.util.Map.keySet:()Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 9
goto 42
StackMap locals: sun.security.util.SignatureFileVerifier java.util.jar.Manifest sun.security.util.ManifestDigester sun.misc.BASE64Decoder java.util.jar.Attributes int int int top java.util.Iterator
StackMap stack:
38: aload 9
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.String
astore 8
start local 8 39: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
new java.lang.StringBuilder
dup
aload 8
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " : "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
40: aload 0
getfield sun.security.util.SignatureFileVerifier.permittedAlgs:Ljava/util/Map;
aload 8
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.toString:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
41: invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
end local 8 42: StackMap locals:
StackMap stack:
aload 9
invokeinterface java.util.Iterator.hasNext:()Z
ifne 38
43: StackMap locals: sun.security.util.SignatureFileVerifier java.util.jar.Manifest sun.security.util.ManifestDigester sun.misc.BASE64Decoder java.util.jar.Attributes int int int
StackMap stack:
iload 7
ifeq 49
iload 6
ifeq 49
44: new java.security.SignatureException
dup
new java.lang.StringBuilder
dup
ldc "Manifest Main Attribute check failed ("
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
45: getstatic sun.security.util.SignatureFileVerifier.ATTR_DIGEST:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "). "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
46: ldc "Disabled algorithm(s) used: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
47: aload 0
getstatic sun.security.util.SignatureFileVerifier.ATTR_DIGEST:Ljava/lang/String;
invokevirtual sun.security.util.SignatureFileVerifier.getWeakAlgorithms:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
48: invokespecial java.security.SignatureException.<init>:(Ljava/lang/String;)V
athrow
49: StackMap locals:
StackMap stack:
iload 5
ireturn
end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 50 0 this Lsun/security/util/SignatureFileVerifier;
0 50 1 sf Ljava/util/jar/Manifest;
0 50 2 md Lsun/security/util/ManifestDigester;
0 50 3 decoder Lsun/misc/BASE64Decoder;
1 50 4 mattr Ljava/util/jar/Attributes;
2 50 5 attrsVerified Z
3 50 6 weakAlgs Z
4 50 7 validEntry Z
6 34 8 se Ljava/util/Map$Entry<Ljava/lang/Object;Ljava/lang/Object;>;
7 34 10 key Ljava/lang/String;
10 34 11 algorithm Ljava/lang/String;
15 34 12 digest Ljava/security/MessageDigest;
18 34 13 mde Lsun/security/util/ManifestDigester$Entry;
19 34 14 computedHash [B
21 34 15 expectedHash [B
39 42 8 key Ljava/lang/String;
Exceptions:
throws java.io.IOException, java.security.SignatureException
MethodParameters:
Name Flags
sf
md
decoder
private boolean verifySection(java.util.jar.Attributes, java.lang.String, sun.security.util.ManifestDigester, sun.misc.BASE64Decoder);
descriptor: (Ljava/util/jar/Attributes;Ljava/lang/String;Lsun/security/util/ManifestDigester;Lsun/misc/BASE64Decoder;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=17, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: iconst_0
istore 5
start local 5 1: aload 3
aload 2
aload 0
getfield sun.security.util.SignatureFileVerifier.block:Lsun/security/pkcs/PKCS7;
invokevirtual sun.security.pkcs.PKCS7.isOldStyle:()Z
invokevirtual sun.security.util.ManifestDigester.get:(Ljava/lang/String;Z)Lsun/security/util/ManifestDigester$Entry;
astore 6
start local 6 2: iconst_1
istore 7
start local 7 3: iconst_0
istore 8
start local 8 4: aload 6
ifnonnull 8
5: new java.lang.SecurityException
dup
6: new java.lang.StringBuilder
dup
ldc "no manifest section for signature file entry "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
7: invokespecial java.lang.SecurityException.<init>:(Ljava/lang/String;)V
athrow
8: StackMap locals: sun.security.util.SignatureFileVerifier java.util.jar.Attributes java.lang.String sun.security.util.ManifestDigester sun.misc.BASE64Decoder int sun.security.util.ManifestDigester$Entry int int
StackMap stack:
aload 1
ifnull 53
9: aload 1
invokevirtual java.util.jar.Attributes.entrySet:()Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 10
goto 52
StackMap locals: sun.security.util.SignatureFileVerifier java.util.jar.Attributes java.lang.String sun.security.util.ManifestDigester sun.misc.BASE64Decoder int sun.security.util.ManifestDigester$Entry int int top java.util.Iterator
StackMap stack:
10: aload 10
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.util.Map$Entry
astore 9
start local 9 11: aload 9
invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
invokevirtual java.lang.Object.toString:()Ljava/lang/String;
astore 11
start local 11 12: aload 11
getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
invokevirtual java.lang.String.toUpperCase:(Ljava/util/Locale;)Ljava/lang/String;
ldc "-DIGEST"
invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
ifeq 52
13: aload 11
iconst_0
aload 11
invokevirtual java.lang.String.length:()I
bipush 7
isub
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
astore 12
start local 12 14: iconst_1
istore 8
15: aload 0
aload 11
aload 12
invokevirtual sun.security.util.SignatureFileVerifier.permittedCheck:(Ljava/lang/String;Ljava/lang/String;)Z
ifne 17
16: goto 52
17: StackMap locals: sun.security.util.SignatureFileVerifier java.util.jar.Attributes java.lang.String sun.security.util.ManifestDigester sun.misc.BASE64Decoder int sun.security.util.ManifestDigester$Entry int int java.util.Map$Entry java.util.Iterator java.lang.String java.lang.String
StackMap stack:
iconst_0
istore 7
18: aload 0
aload 12
invokevirtual sun.security.util.SignatureFileVerifier.getDigest:(Ljava/lang/String;)Ljava/security/MessageDigest;
astore 13
start local 13 19: aload 13
ifnull 52
20: iconst_0
istore 14
start local 14 21: aload 4
aload 9
invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
checkcast java.lang.String
invokevirtual sun.misc.BASE64Decoder.decodeBuffer:(Ljava/lang/String;)[B
22: astore 15
start local 15 23: aload 0
getfield sun.security.util.SignatureFileVerifier.workaround:Z
ifeq 26
24: aload 6
aload 13
invokevirtual sun.security.util.ManifestDigester$Entry.digestWorkaround:(Ljava/security/MessageDigest;)[B
astore 16
start local 16 25: goto 27
end local 16 26: StackMap locals: java.security.MessageDigest int byte[]
StackMap stack:
aload 6
aload 13
invokevirtual sun.security.util.ManifestDigester$Entry.digest:(Ljava/security/MessageDigest;)[B
astore 16
start local 16 27: StackMap locals: byte[]
StackMap stack:
getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
ifnull 34
28: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
new java.lang.StringBuilder
dup
ldc "Signature Block File: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
29: aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " digest="
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 13
invokevirtual java.security.MessageDigest.getAlgorithm:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
30: invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
31: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
new java.lang.StringBuilder
dup
ldc " expected "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 15
invokestatic sun.security.util.SignatureFileVerifier.toHex:([B)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
32: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
new java.lang.StringBuilder
dup
ldc " computed "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 16
invokestatic sun.security.util.SignatureFileVerifier.toHex:([B)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
33: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
invokevirtual sun.security.util.Debug.println:()V
34: StackMap locals:
StackMap stack:
aload 16
aload 15
invokestatic java.security.MessageDigest.isEqual:([B[B)Z
ifeq 38
35: iconst_1
istore 5
36: iconst_1
istore 14
37: goto 47
38: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.util.SignatureFileVerifier.workaround:Z
ifne 47
39: aload 6
aload 13
invokevirtual sun.security.util.ManifestDigester$Entry.digestWorkaround:(Ljava/security/MessageDigest;)[B
astore 16
40: aload 16
aload 15
invokestatic java.security.MessageDigest.isEqual:([B[B)Z
ifeq 47
41: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
ifnull 44
42: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
new java.lang.StringBuilder
dup
ldc " re-computed "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 16
invokestatic sun.security.util.SignatureFileVerifier.toHex:([B)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
43: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
invokevirtual sun.security.util.Debug.println:()V
44: StackMap locals:
StackMap stack:
aload 0
iconst_1
putfield sun.security.util.SignatureFileVerifier.workaround:Z
45: iconst_1
istore 5
46: iconst_1
istore 14
47: StackMap locals:
StackMap stack:
iload 14
ifne 52
48: new java.lang.SecurityException
dup
new java.lang.StringBuilder
dup
ldc "invalid "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
49: aload 13
invokevirtual java.security.MessageDigest.getAlgorithm:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
50: ldc " signature file digest for "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
51: invokespecial java.lang.SecurityException.<init>:(Ljava/lang/String;)V
athrow
end local 16 end local 15 end local 14 end local 13 end local 12 end local 11 end local 9 52: StackMap locals: sun.security.util.SignatureFileVerifier java.util.jar.Attributes java.lang.String sun.security.util.ManifestDigester sun.misc.BASE64Decoder int sun.security.util.ManifestDigester$Entry int int top java.util.Iterator
StackMap stack:
aload 10
invokeinterface java.util.Iterator.hasNext:()Z
ifne 10
53: StackMap locals: sun.security.util.SignatureFileVerifier java.util.jar.Attributes java.lang.String sun.security.util.ManifestDigester sun.misc.BASE64Decoder int sun.security.util.ManifestDigester$Entry int int
StackMap stack:
getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
ifnull 61
54: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
ldc "PermittedAlgs mapping: "
invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
55: aload 0
getfield sun.security.util.SignatureFileVerifier.permittedAlgs:Ljava/util/Map;
invokeinterface java.util.Map.keySet:()Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 10
goto 60
StackMap locals: sun.security.util.SignatureFileVerifier java.util.jar.Attributes java.lang.String sun.security.util.ManifestDigester sun.misc.BASE64Decoder int sun.security.util.ManifestDigester$Entry int int top java.util.Iterator
StackMap stack:
56: aload 10
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.String
astore 9
start local 9 57: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
new java.lang.StringBuilder
dup
aload 9
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " : "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
58: aload 0
getfield sun.security.util.SignatureFileVerifier.permittedAlgs:Ljava/util/Map;
aload 9
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.toString:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
59: invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
end local 9 60: StackMap locals:
StackMap stack:
aload 10
invokeinterface java.util.Iterator.hasNext:()Z
ifne 56
61: StackMap locals: sun.security.util.SignatureFileVerifier java.util.jar.Attributes java.lang.String sun.security.util.ManifestDigester sun.misc.BASE64Decoder int sun.security.util.ManifestDigester$Entry int int
StackMap stack:
iload 8
ifeq 65
iload 7
ifeq 65
62: new java.security.SignatureException
dup
new java.lang.StringBuilder
dup
ldc "Manifest Main Attribute check failed (DIGEST). Disabled algorithm(s) used: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
63: aload 0
ldc "DIGEST"
invokevirtual sun.security.util.SignatureFileVerifier.getWeakAlgorithms:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
64: invokespecial java.security.SignatureException.<init>:(Ljava/lang/String;)V
athrow
65: StackMap locals:
StackMap stack:
iload 5
ireturn
end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 66 0 this Lsun/security/util/SignatureFileVerifier;
0 66 1 sfAttr Ljava/util/jar/Attributes;
0 66 2 name Ljava/lang/String;
0 66 3 md Lsun/security/util/ManifestDigester;
0 66 4 decoder Lsun/misc/BASE64Decoder;
1 66 5 oneDigestVerified Z
2 66 6 mde Lsun/security/util/ManifestDigester$Entry;
3 66 7 weakAlgs Z
4 66 8 validEntry Z
11 52 9 se Ljava/util/Map$Entry<Ljava/lang/Object;Ljava/lang/Object;>;
12 52 11 key Ljava/lang/String;
14 52 12 algorithm Ljava/lang/String;
19 52 13 digest Ljava/security/MessageDigest;
21 52 14 ok Z
23 52 15 expected [B
25 26 16 computed [B
27 52 16 computed [B
57 60 9 key Ljava/lang/String;
Exceptions:
throws java.io.IOException, java.security.SignatureException
MethodParameters:
Name Flags
sfAttr
name
md
decoder
private java.security.CodeSigner[] getSigners(sun.security.pkcs.SignerInfo[], sun.security.pkcs.PKCS7);
descriptor: ([Lsun/security/pkcs/SignerInfo;Lsun/security/pkcs/PKCS7;)[Ljava/security/CodeSigner;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=8, args_size=3
start local 0 start local 1 start local 2 0: aconst_null
astore 3
start local 3 1: iconst_0
istore 4
start local 4 2: goto 14
3: StackMap locals: java.util.ArrayList int
StackMap stack:
aload 1
iload 4
aaload
astore 5
start local 5 4: aload 5
aload 2
invokevirtual sun.security.pkcs.SignerInfo.getCertificateChain:(Lsun/security/pkcs/PKCS7;)Ljava/util/ArrayList;
astore 6
start local 6 5: aload 0
getfield sun.security.util.SignatureFileVerifier.certificateFactory:Ljava/security/cert/CertificateFactory;
aload 6
invokevirtual java.security.cert.CertificateFactory.generateCertPath:(Ljava/util/List;)Ljava/security/cert/CertPath;
astore 7
start local 7 6: aload 3
ifnonnull 8
7: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 3
8: StackMap locals: sun.security.pkcs.SignerInfo java.util.ArrayList java.security.cert.CertPath
StackMap stack:
aload 3
new java.security.CodeSigner
dup
aload 7
aload 5
invokevirtual sun.security.pkcs.SignerInfo.getTimestamp:()Ljava/security/Timestamp;
invokespecial java.security.CodeSigner.<init>:(Ljava/security/cert/CertPath;Ljava/security/Timestamp;)V
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
9: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
ifnull 13
10: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
new java.lang.StringBuilder
dup
ldc "Signature Block Certificate: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
11: aload 6
iconst_0
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
12: invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
end local 7 end local 6 end local 5 13: StackMap locals:
StackMap stack:
iinc 4 1
StackMap locals:
StackMap stack:
14: iload 4
aload 1
arraylength
if_icmplt 3
end local 4 15: aload 3
ifnull 17
16: aload 3
aload 3
invokevirtual java.util.ArrayList.size:()I
anewarray java.security.CodeSigner
invokevirtual java.util.ArrayList.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
checkcast java.security.CodeSigner[]
areturn
17: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lsun/security/util/SignatureFileVerifier;
0 18 1 infos [Lsun/security/pkcs/SignerInfo;
0 18 2 block Lsun/security/pkcs/PKCS7;
1 18 3 signers Ljava/util/ArrayList<Ljava/security/CodeSigner;>;
2 15 4 i I
4 13 5 info Lsun/security/pkcs/SignerInfo;
5 13 6 chain Ljava/util/ArrayList<Ljava/security/cert/X509Certificate;>;
6 13 7 certChain Ljava/security/cert/CertPath;
Exceptions:
throws java.io.IOException, java.security.NoSuchAlgorithmException, java.security.SignatureException, java.security.cert.CertificateException
MethodParameters:
Name Flags
infos
block
static java.lang.String toHex(byte[]);
descriptor: ([B)Ljava/lang/String;
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=3, args_size=1
start local 0 0: new java.lang.StringBuilder
dup
aload 0
arraylength
iconst_2
imul
invokespecial java.lang.StringBuilder.<init>:(I)V
astore 1
start local 1 1: iconst_0
istore 2
start local 2 2: goto 6
3: StackMap locals: java.lang.StringBuilder int
StackMap stack:
aload 1
getstatic sun.security.util.SignatureFileVerifier.hexc:[C
aload 0
iload 2
baload
iconst_4
ishr
bipush 15
iand
caload
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
4: aload 1
getstatic sun.security.util.SignatureFileVerifier.hexc:[C
aload 0
iload 2
baload
bipush 15
iand
caload
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
5: iinc 2 1
StackMap locals:
StackMap stack:
6: iload 2
aload 0
arraylength
if_icmplt 3
end local 2 7: aload 1
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 data [B
1 8 1 sb Ljava/lang/StringBuilder;
2 7 2 i I
MethodParameters:
Name Flags
data
static boolean contains(java.security.CodeSigner[], java.security.CodeSigner);
descriptor: ([Ljava/security/CodeSigner;Ljava/security/CodeSigner;)Z
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: iconst_0
istore 2
start local 2 1: goto 5
2: StackMap locals: int
StackMap stack:
aload 0
iload 2
aaload
aload 1
invokevirtual java.security.CodeSigner.equals:(Ljava/lang/Object;)Z
ifeq 4
3: iconst_1
ireturn
4: StackMap locals:
StackMap stack:
iinc 2 1
StackMap locals:
StackMap stack:
5: iload 2
aload 0
arraylength
if_icmplt 2
end local 2 6: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 set [Ljava/security/CodeSigner;
0 7 1 signer Ljava/security/CodeSigner;
1 6 2 i I
MethodParameters:
Name Flags
set
signer
static boolean isSubSet(java.security.CodeSigner[], java.security.CodeSigner[]);
descriptor: ([Ljava/security/CodeSigner;[Ljava/security/CodeSigner;)Z
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 1
aload 0
if_acmpne 2
1: iconst_1
ireturn
2: StackMap locals:
StackMap stack:
iconst_0
istore 2
start local 2 3: goto 7
4: StackMap locals: int
StackMap stack:
aload 1
aload 0
iload 2
aaload
invokestatic sun.security.util.SignatureFileVerifier.contains:([Ljava/security/CodeSigner;Ljava/security/CodeSigner;)Z
ifne 6
5: iconst_0
ireturn
6: StackMap locals:
StackMap stack:
iinc 2 1
StackMap locals:
StackMap stack:
7: iload 2
aload 0
arraylength
if_icmplt 4
end local 2 8: iconst_1
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 subset [Ljava/security/CodeSigner;
0 9 1 set [Ljava/security/CodeSigner;
3 8 2 i I
MethodParameters:
Name Flags
subset
set
static boolean matches(java.security.CodeSigner[], java.security.CodeSigner[], java.security.CodeSigner[]);
descriptor: ([Ljava/security/CodeSigner;[Ljava/security/CodeSigner;[Ljava/security/CodeSigner;)Z
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 1
ifnonnull 2
aload 0
aload 2
if_acmpne 2
1: iconst_1
ireturn
2: StackMap locals:
StackMap stack:
aload 1
ifnull 4
aload 1
aload 0
invokestatic sun.security.util.SignatureFileVerifier.isSubSet:([Ljava/security/CodeSigner;[Ljava/security/CodeSigner;)Z
ifne 4
3: iconst_0
ireturn
4: StackMap locals:
StackMap stack:
aload 2
aload 0
invokestatic sun.security.util.SignatureFileVerifier.isSubSet:([Ljava/security/CodeSigner;[Ljava/security/CodeSigner;)Z
ifne 6
5: iconst_0
ireturn
6: StackMap locals:
StackMap stack:
iconst_0
istore 3
start local 3 7: goto 16
8: StackMap locals: int
StackMap stack:
aload 1
ifnull 9
aload 1
aload 0
iload 3
aaload
invokestatic sun.security.util.SignatureFileVerifier.contains:([Ljava/security/CodeSigner;Ljava/security/CodeSigner;)Z
ifne 11
9: StackMap locals:
StackMap stack:
aload 2
aload 0
iload 3
aaload
invokestatic sun.security.util.SignatureFileVerifier.contains:([Ljava/security/CodeSigner;Ljava/security/CodeSigner;)Z
ifne 11
10: iconst_0
goto 12
StackMap locals:
StackMap stack:
11: iconst_1
StackMap locals:
StackMap stack: int
12: istore 4
start local 4 13: iload 4
ifne 15
14: iconst_0
ireturn
end local 4 15: StackMap locals:
StackMap stack:
iinc 3 1
StackMap locals:
StackMap stack:
16: iload 3
aload 0
arraylength
if_icmplt 8
end local 3 17: iconst_1
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 signers [Ljava/security/CodeSigner;
0 18 1 oldSigners [Ljava/security/CodeSigner;
0 18 2 newSigners [Ljava/security/CodeSigner;
7 17 3 i I
13 15 4 found Z
MethodParameters:
Name Flags
signers
oldSigners
newSigners
void updateSigners(java.security.CodeSigner[], java.util.Hashtable<java.lang.String, java.security.CodeSigner[]>, java.lang.String);
descriptor: ([Ljava/security/CodeSigner;Ljava/util/Hashtable;Ljava/lang/String;)V
flags: (0x0000)
Code:
stack=5, locals=7, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 2
aload 3
invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.security.CodeSigner[]
astore 4
start local 4 1: aload 0
getfield sun.security.util.SignatureFileVerifier.signerCache:Ljava/util/ArrayList;
invokevirtual java.util.ArrayList.size:()I
iconst_1
isub
istore 6
start local 6 2: goto 8
3: StackMap locals: sun.security.util.SignatureFileVerifier java.security.CodeSigner[] java.util.Hashtable java.lang.String java.security.CodeSigner[] top int
StackMap stack:
aload 0
getfield sun.security.util.SignatureFileVerifier.signerCache:Ljava/util/ArrayList;
iload 6
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast java.security.CodeSigner[]
astore 5
start local 5 4: aload 5
aload 4
aload 1
invokestatic sun.security.util.SignatureFileVerifier.matches:([Ljava/security/CodeSigner;[Ljava/security/CodeSigner;[Ljava/security/CodeSigner;)Z
ifeq 7
5: aload 2
aload 3
aload 5
invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
6: return
7: StackMap locals: sun.security.util.SignatureFileVerifier java.security.CodeSigner[] java.util.Hashtable java.lang.String java.security.CodeSigner[] java.security.CodeSigner[] int
StackMap stack:
iinc 6 -1
end local 5 StackMap locals: sun.security.util.SignatureFileVerifier java.security.CodeSigner[] java.util.Hashtable java.lang.String java.security.CodeSigner[] top int
StackMap stack:
8: iload 6
iconst_m1
if_icmpne 3
end local 6 9: aload 4
ifnonnull 12
10: aload 1
astore 5
start local 5 11: goto 20
end local 5 12: StackMap locals: sun.security.util.SignatureFileVerifier java.security.CodeSigner[] java.util.Hashtable java.lang.String java.security.CodeSigner[]
StackMap stack:
aload 4
arraylength
aload 1
arraylength
iadd
anewarray java.security.CodeSigner
13: astore 5
start local 5 14: aload 4
iconst_0
aload 5
iconst_0
15: aload 4
arraylength
16: invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
17: aload 1
iconst_0
aload 5
aload 4
arraylength
18: aload 1
arraylength
19: invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
20: StackMap locals: java.security.CodeSigner[]
StackMap stack:
aload 0
getfield sun.security.util.SignatureFileVerifier.signerCache:Ljava/util/ArrayList;
aload 5
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
21: aload 2
aload 3
aload 5
invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
22: return
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 23 0 this Lsun/security/util/SignatureFileVerifier;
0 23 1 newSigners [Ljava/security/CodeSigner;
0 23 2 signers Ljava/util/Hashtable<Ljava/lang/String;[Ljava/security/CodeSigner;>;
0 23 3 name Ljava/lang/String;
1 23 4 oldSigners [Ljava/security/CodeSigner;
4 8 5 cachedSigners [Ljava/security/CodeSigner;
11 12 5 cachedSigners [Ljava/security/CodeSigner;
14 23 5 cachedSigners [Ljava/security/CodeSigner;
2 9 6 i I
Signature: ([Ljava/security/CodeSigner;Ljava/util/Hashtable<Ljava/lang/String;[Ljava/security/CodeSigner;>;Ljava/lang/String;)V
MethodParameters:
Name Flags
newSigners
signers
name
}
SourceFile: "SignatureFileVerifier.java"
InnerClasses:
public abstract Entry = java.util.Map$Entry of java.util.Map
public Name = java.util.jar.Attributes$Name of java.util.jar.Attributes
public Entry = sun.security.util.ManifestDigester$Entry of sun.security.util.ManifestDigester