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 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
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=3, 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 java.lang.StringBuilder
dup
ldc "-DIGEST-"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "Manifest-Main-Attributes"
getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
invokevirtual java.lang.String.toUpperCase:(Ljava/util/Locale;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
2: putstatic sun.security.util.SignatureFileVerifier.ATTR_DIGEST:Ljava/lang/String;
3: 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 java.lang.String getBlockExtension(java.security.PrivateKey);
descriptor: (Ljava/security/PrivateKey;)Ljava/lang/String;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
invokeinterface java.security.PrivateKey.getAlgorithm:()Ljava/lang/String;
getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
invokevirtual java.lang.String.toUpperCase:(Ljava/util/Locale;)Ljava/lang/String;
astore 1
start local 1 1: aload 1
ldc "RSASSA-PSS"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 3
2: ldc "RSA"
areturn
3: StackMap locals: java.lang.String
StackMap stack:
aload 1
ldc "EDDSA"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 6
4: aload 1
ldc "ED25519"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 6
5: aload 1
ldc "ED448"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 7
6: StackMap locals:
StackMap stack:
ldc "EC"
areturn
7: StackMap locals:
StackMap stack:
aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 key Ljava/security/PrivateKey;
1 8 1 keyAlgorithm Ljava/lang/String;
MethodParameters:
Name Flags
key
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=11, 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:
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 6
start local 6 12: aload 6
ifnonnull 14
13: return
14: StackMap locals: java.security.CodeSigner[]
StackMap stack:
aload 6
dup
astore 10
arraylength
istore 9
iconst_0
istore 8
goto 30
StackMap locals: sun.security.util.SignatureFileVerifier java.util.Hashtable java.util.List java.util.jar.Manifest java.lang.String sun.security.pkcs.SignerInfo[] java.security.CodeSigner[] top int int java.security.CodeSigner[]
StackMap stack:
15: aload 10
iload 8
aaload
astore 7
start local 7 16: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
ifnull 18
17: 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 7
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
18: StackMap locals: sun.security.util.SignatureFileVerifier java.util.Hashtable java.util.List java.util.jar.Manifest java.lang.String sun.security.pkcs.SignerInfo[] java.security.CodeSigner[] java.security.CodeSigner int int java.security.CodeSigner[]
StackMap stack:
aload 7
invokevirtual java.security.CodeSigner.getTimestamp:()Ljava/security/Timestamp;
ifnonnull 21
19: aload 0
aconst_null
putfield sun.security.util.SignatureFileVerifier.timestamp:Ljava/security/Timestamp;
20: goto 31
21: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.util.SignatureFileVerifier.timestamp:Ljava/security/Timestamp;
ifnonnull 24
22: aload 0
aload 7
invokevirtual java.security.CodeSigner.getTimestamp:()Ljava/security/Timestamp;
putfield sun.security.util.SignatureFileVerifier.timestamp:Ljava/security/Timestamp;
23: goto 29
24: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.util.SignatureFileVerifier.timestamp:Ljava/security/Timestamp;
invokevirtual java.security.Timestamp.getTimestamp:()Ljava/util/Date;
25: aload 7
invokevirtual java.security.CodeSigner.getTimestamp:()Ljava/security/Timestamp;
invokevirtual java.security.Timestamp.getTimestamp:()Ljava/util/Date;
26: invokevirtual java.util.Date.before:(Ljava/util/Date;)Z
27: ifeq 29
28: aload 0
aload 7
invokevirtual java.security.CodeSigner.getTimestamp:()Ljava/security/Timestamp;
putfield sun.security.util.SignatureFileVerifier.timestamp:Ljava/security/Timestamp;
end local 7 29: StackMap locals: sun.security.util.SignatureFileVerifier java.util.Hashtable java.util.List java.util.jar.Manifest java.lang.String sun.security.pkcs.SignerInfo[] java.security.CodeSigner[] top int int java.security.CodeSigner[]
StackMap stack:
iinc 8 1
StackMap locals:
StackMap stack:
30: iload 8
iload 9
if_icmplt 15
31: StackMap locals: sun.security.util.SignatureFileVerifier java.util.Hashtable java.util.List java.util.jar.Manifest java.lang.String sun.security.pkcs.SignerInfo[] 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;
32: astore 7
start local 7 33: aload 0
aload 3
aload 0
getfield sun.security.util.SignatureFileVerifier.md:Lsun/security/util/ManifestDigester;
aload 2
invokevirtual sun.security.util.SignatureFileVerifier.verifyManifestHash:(Ljava/util/jar/Manifest;Lsun/security/util/ManifestDigester;Ljava/util/List;)Z
istore 8
start local 8 34: iload 8
ifne 52
aload 0
aload 3
aload 0
getfield sun.security.util.SignatureFileVerifier.md:Lsun/security/util/ManifestDigester;
invokevirtual sun.security.util.SignatureFileVerifier.verifyManifestMainAttrs:(Ljava/util/jar/Manifest;Lsun/security/util/ManifestDigester;)Z
ifne 52
35: new java.lang.SecurityException
dup
36: ldc "Invalid signature file digest for Manifest main attributes"
37: invokespecial java.lang.SecurityException.<init>:(Ljava/lang/String;)V
athrow
38: StackMap locals: java.util.Iterator int
StackMap stack:
aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.util.Map$Entry
astore 9
start local 9 39: aload 9
invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
checkcast java.lang.String
astore 10
start local 10 40: iload 8
ifne 42
41: aload 0
aload 9
invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
checkcast java.util.jar.Attributes
aload 10
aload 0
getfield sun.security.util.SignatureFileVerifier.md:Lsun/security/util/ManifestDigester;
invokevirtual sun.security.util.SignatureFileVerifier.verifySection:(Ljava/util/jar/Attributes;Ljava/lang/String;Lsun/security/util/ManifestDigester;)Z
ifeq 50
42: StackMap locals: java.util.Map$Entry java.lang.String
StackMap stack:
aload 10
ldc "./"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 44
43: aload 10
iconst_2
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
astore 10
44: StackMap locals:
StackMap stack:
aload 10
ldc "/"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 46
45: aload 10
iconst_1
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
astore 10
46: StackMap locals:
StackMap stack:
aload 0
aload 6
aload 1
aload 10
invokevirtual sun.security.util.SignatureFileVerifier.updateSigners:([Ljava/security/CodeSigner;Ljava/util/Hashtable;Ljava/lang/String;)V
47: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
ifnull 52
48: 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 10
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
49: goto 52
StackMap locals:
StackMap stack:
50: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
ifnull 52
51: 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 10
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 10 end local 9 52: StackMap locals:
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 38
53: aload 0
aload 6
aload 1
ldc "META-INF/MANIFEST.MF"
invokevirtual sun.security.util.SignatureFileVerifier.updateSigners:([Ljava/security/CodeSigner;Ljava/util/Hashtable;Ljava/lang/String;)V
54: return
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 55 0 this Lsun/security/util/SignatureFileVerifier;
0 55 1 signers Ljava/util/Hashtable<Ljava/lang/String;[Ljava/security/CodeSigner;>;
0 55 2 manifestDigests Ljava/util/List<Ljava/lang/Object;>;
1 55 3 sf Ljava/util/jar/Manifest;
4 55 4 version Ljava/lang/String;
7 55 5 infos [Lsun/security/pkcs/SignerInfo;
12 55 6 newSigners [Ljava/security/CodeSigner;
16 29 7 s Ljava/security/CodeSigner;
33 55 7 entries Ljava/util/Iterator<Ljava/util/Map$Entry<Ljava/lang/String;Ljava/util/jar/Attributes;>;>;
34 55 8 manifestSigned Z
39 52 9 e Ljava/util/Map$Entry<Ljava/lang/String;Ljava/util/jar/Attributes;>;
40 52 10 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 21
2: getstatic sun.security.util.SignatureFileVerifier$ConfigurationHolder.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 19
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 18
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 18
13: StackMap locals: java.security.GeneralSecurityException
StackMap stack:
getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
new java.lang.StringBuilder
dup
ldc "Debug info only. "
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;
14: aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
15: 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;
16: invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
17: aload 4
invokevirtual java.security.GeneralSecurityException.printStackTrace:()V
18: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 4 19: 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
20: iconst_1
ireturn
21: 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 22 0 this Lsun/security/util/SignatureFileVerifier;
0 22 1 key Ljava/lang/String;
0 22 2 algorithm Ljava/lang/String;
1 22 3 permitted Ljava/lang/Boolean;
7 19 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.isEmpty:()Z
ifeq 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, java.util.List<java.lang.Object>);
descriptor: (Ljava/util/jar/Manifest;Lsun/security/util/ManifestDigester;Ljava/util/List;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=15, 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_0
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 29
StackMap locals: sun.security.util.SignatureFileVerifier java.util.jar.Manifest sun.security.util.ManifestDigester java.util.List 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;
ldc "-DIGEST-MANIFEST"
invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
ifeq 29
8: aload 10
iconst_0
aload 10
invokevirtual java.lang.String.length:()I
bipush 16
isub
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
astore 11
start local 11 9: iconst_1
istore 7
10: aload 0
aload 10
aload 11
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 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 6
13: aload 3
aload 10
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
14: aload 3
aload 8
invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
15: aload 0
aload 11
invokevirtual sun.security.util.SignatureFileVerifier.getDigest:(Ljava/lang/String;)Ljava/security/MessageDigest;
astore 12
start local 12 16: aload 12
ifnull 29
17: aload 2
aload 12
invokevirtual sun.security.util.ManifestDigester.manifestDigest:(Ljava/security/MessageDigest;)[B
astore 13
start local 13 18: invokestatic java.util.Base64.getMimeDecoder:()Ljava/util/Base64$Decoder;
aload 8
invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
checkcast java.lang.String
invokevirtual java.util.Base64$Decoder.decode:(Ljava/lang/String;)[B
19: astore 14
start local 14 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 11
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
invokestatic java.util.HexFormat.of:()Ljava/util/HexFormat;
aload 14
invokevirtual java.util.HexFormat.formatHex:([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
invokestatic java.util.HexFormat.of:()Ljava/util/HexFormat;
aload 13
invokevirtual java.util.HexFormat.formatHex:([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 13
aload 14
invokestatic java.security.MessageDigest.isEqual:([B[B)Z
ifeq 29
28: iconst_1
istore 5
end local 14 end local 13 end local 12 end local 11 end local 10 end local 8 29: StackMap locals: sun.security.util.SignatureFileVerifier java.util.jar.Manifest sun.security.util.ManifestDigester java.util.List java.util.jar.Attributes int int int top java.util.Iterator
StackMap stack:
aload 9
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 9
goto 37
StackMap locals:
StackMap stack:
33: aload 9
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.String
astore 8
start local 8 34: 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;
35: 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;
36: invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
end local 8 37: StackMap locals:
StackMap stack:
aload 9
invokeinterface java.util.Iterator.hasNext:()Z
ifne 33
38: StackMap locals: sun.security.util.SignatureFileVerifier java.util.jar.Manifest sun.security.util.ManifestDigester java.util.List java.util.jar.Attributes int int int
StackMap stack:
iload 7
ifeq 42
iload 6
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 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 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 manifestDigests Ljava/util/List<Ljava/lang/Object;>;
1 43 4 mattr Ljava/util/jar/Attributes;
2 43 5 manifestSigned Z
3 43 6 weakAlgs Z
4 43 7 validEntry Z
6 29 8 se Ljava/util/Map$Entry<Ljava/lang/Object;Ljava/lang/Object;>;
7 29 10 key Ljava/lang/String;
9 29 11 algorithm Ljava/lang/String;
16 29 12 digest Ljava/security/MessageDigest;
18 29 13 computedHash [B
20 29 14 expectedHash [B
34 37 8 key Ljava/lang/String;
Exceptions:
throws java.io.IOException, java.security.SignatureException
Signature: (Ljava/util/jar/Manifest;Lsun/security/util/ManifestDigester;Ljava/util/List<Ljava/lang/Object;>;)Z
MethodParameters:
Name Flags
sf
md
manifestDigests
private boolean verifyManifestMainAttrs(java.util.jar.Manifest, sun.security.util.ManifestDigester);
descriptor: (Ljava/util/jar/Manifest;Lsun/security/util/ManifestDigester;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=15, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokevirtual java.util.jar.Manifest.getMainAttributes:()Ljava/util/jar/Attributes;
astore 3
start local 3 1: iconst_1
istore 4
start local 4 2: iconst_1
istore 5
start local 5 3: iconst_0
istore 6
start local 6 4: aload 3
invokevirtual java.util.jar.Attributes.entrySet:()Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 8
goto 33
StackMap locals: sun.security.util.SignatureFileVerifier java.util.jar.Manifest sun.security.util.ManifestDigester java.util.jar.Attributes int int int top java.util.Iterator
StackMap stack:
5: aload 8
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.util.Map$Entry
astore 7
start local 7 6: aload 7
invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
invokevirtual java.lang.Object.toString:()Ljava/lang/String;
astore 9
start local 9 7: aload 9
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 33
8: aload 9
iconst_0
aload 9
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 10
start local 10 10: iconst_1
istore 6
11: aload 0
aload 9
aload 10
invokevirtual sun.security.util.SignatureFileVerifier.permittedCheck:(Ljava/lang/String;Ljava/lang/String;)Z
ifne 13
12: goto 33
13: StackMap locals: sun.security.util.SignatureFileVerifier java.util.jar.Manifest sun.security.util.ManifestDigester 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 5
14: aload 0
aload 10
invokevirtual sun.security.util.SignatureFileVerifier.getDigest:(Ljava/lang/String;)Ljava/security/MessageDigest;
astore 11
start local 11 15: aload 11
ifnull 33
16: aload 2
iconst_0
invokevirtual sun.security.util.ManifestDigester.getMainAttsEntry:(Z)Lsun/security/util/ManifestDigester$Entry;
astore 12
start local 12 17: aload 12
aload 11
invokevirtual sun.security.util.ManifestDigester$Entry.digest:(Ljava/security/MessageDigest;)[B
astore 13
start local 13 18: invokestatic java.util.Base64.getMimeDecoder:()Ljava/util/Base64$Decoder;
aload 7
invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
checkcast java.lang.String
invokevirtual java.util.Base64$Decoder.decode:(Ljava/lang/String;)[B
19: astore 14
start local 14 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 Main Attributes digest "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
22: aload 11
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;
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
invokestatic java.util.HexFormat.of:()Ljava/util/HexFormat;
aload 14
invokevirtual java.util.HexFormat.formatHex:([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
invokestatic java.util.HexFormat.of:()Ljava/util/HexFormat;
aload 13
invokevirtual java.util.HexFormat.formatHex:([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: sun.security.util.SignatureFileVerifier java.util.jar.Manifest sun.security.util.ManifestDigester 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 13
aload 14
invokestatic java.security.MessageDigest.isEqual:([B[B)Z
ifne 33
28: iconst_0
istore 4
29: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
ifnull 34
30: 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
31: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
invokevirtual sun.security.util.Debug.println:()V
32: goto 34
end local 14 end local 13 end local 12 end local 11 end local 10 end local 9 end local 7 33: StackMap locals: sun.security.util.SignatureFileVerifier java.util.jar.Manifest sun.security.util.ManifestDigester java.util.jar.Attributes int int int top java.util.Iterator
StackMap stack:
aload 8
invokeinterface java.util.Iterator.hasNext:()Z
ifne 5
34: StackMap locals: sun.security.util.SignatureFileVerifier java.util.jar.Manifest sun.security.util.ManifestDigester java.util.jar.Attributes int int int
StackMap stack:
getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
ifnull 42
35: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
ldc "PermittedAlgs mapping: "
invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
36: 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 8
goto 41
StackMap locals: sun.security.util.SignatureFileVerifier java.util.jar.Manifest sun.security.util.ManifestDigester java.util.jar.Attributes int int int top java.util.Iterator
StackMap stack:
37: aload 8
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.String
astore 7
start local 7 38: getstatic sun.security.util.SignatureFileVerifier.debug:Lsun/security/util/Debug;
new java.lang.StringBuilder
dup
aload 7
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;
39: aload 0
getfield sun.security.util.SignatureFileVerifier.permittedAlgs:Ljava/util/Map;
aload 7
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;
40: invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
end local 7 41: StackMap locals:
StackMap stack:
aload 8
invokeinterface java.util.Iterator.hasNext:()Z
ifne 37
42: StackMap locals: sun.security.util.SignatureFileVerifier java.util.jar.Manifest sun.security.util.ManifestDigester java.util.jar.Attributes int int int
StackMap stack:
iload 6
ifeq 48
iload 5
ifeq 48
43: 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
44: 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;
45: ldc "Disabled algorithm(s) used: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
46: 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;
47: invokespecial java.security.SignatureException.<init>:(Ljava/lang/String;)V
athrow
48: StackMap locals:
StackMap stack:
iload 4
ireturn
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 49 0 this Lsun/security/util/SignatureFileVerifier;
0 49 1 sf Ljava/util/jar/Manifest;
0 49 2 md Lsun/security/util/ManifestDigester;
1 49 3 mattr Ljava/util/jar/Attributes;
2 49 4 attrsVerified Z
3 49 5 weakAlgs Z
4 49 6 validEntry Z
6 33 7 se Ljava/util/Map$Entry<Ljava/lang/Object;Ljava/lang/Object;>;
7 33 9 key Ljava/lang/String;
10 33 10 algorithm Ljava/lang/String;
15 33 11 digest Ljava/security/MessageDigest;
17 33 12 mde Lsun/security/util/ManifestDigester$Entry;
18 33 13 computedHash [B
20 33 14 expectedHash [B
38 41 7 key Ljava/lang/String;
Exceptions:
throws java.io.IOException, java.security.SignatureException
MethodParameters:
Name Flags
sf
md
private boolean verifySection(java.util.jar.Attributes, java.lang.String, sun.security.util.ManifestDigester);
descriptor: (Ljava/util/jar/Attributes;Ljava/lang/String;Lsun/security/util/ManifestDigester;)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: iconst_0
istore 4
start local 4 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 5
start local 5 2: iconst_1
istore 6
start local 6 3: iconst_0
istore 7
start local 7 4: aload 5
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 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 9
goto 52
StackMap locals: sun.security.util.SignatureFileVerifier java.util.jar.Attributes java.lang.String sun.security.util.ManifestDigester int sun.security.util.ManifestDigester$Entry int int top java.util.Iterator
StackMap stack:
10: aload 9
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.util.Map$Entry
astore 8
start local 8 11: aload 8
invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
invokevirtual java.lang.Object.toString:()Ljava/lang/String;
astore 10
start local 10 12: aload 10
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 10
iconst_0
aload 10
invokevirtual java.lang.String.length:()I
bipush 7
isub
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
astore 11
start local 11 14: iconst_1
istore 7
15: aload 0
aload 10
aload 11
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 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 6
18: aload 0
aload 11
invokevirtual sun.security.util.SignatureFileVerifier.getDigest:(Ljava/lang/String;)Ljava/security/MessageDigest;
astore 12
start local 12 19: aload 12
ifnull 52
20: iconst_0
istore 13
start local 13 21: invokestatic java.util.Base64.getMimeDecoder:()Ljava/util/Base64$Decoder;
aload 8
invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
checkcast java.lang.String
invokevirtual java.util.Base64$Decoder.decode:(Ljava/lang/String;)[B
22: astore 14
start local 14 23: aload 0
getfield sun.security.util.SignatureFileVerifier.workaround:Z
ifeq 26
24: aload 5
aload 12
invokevirtual sun.security.util.ManifestDigester$Entry.digestWorkaround:(Ljava/security/MessageDigest;)[B
astore 15
start local 15 25: goto 27
end local 15 26: StackMap locals: java.security.MessageDigest int byte[]
StackMap stack:
aload 5
aload 12
invokevirtual sun.security.util.ManifestDigester$Entry.digest:(Ljava/security/MessageDigest;)[B
astore 15
start local 15 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 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;
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
invokestatic java.util.HexFormat.of:()Ljava/util/HexFormat;
aload 14
invokevirtual java.util.HexFormat.formatHex:([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
invokestatic java.util.HexFormat.of:()Ljava/util/HexFormat;
aload 15
invokevirtual java.util.HexFormat.formatHex:([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 15
aload 14
invokestatic java.security.MessageDigest.isEqual:([B[B)Z
ifeq 38
35: iconst_1
istore 4
36: iconst_1
istore 13
37: goto 47
38: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.util.SignatureFileVerifier.workaround:Z
ifne 47
39: aload 5
aload 12
invokevirtual sun.security.util.ManifestDigester$Entry.digestWorkaround:(Ljava/security/MessageDigest;)[B
astore 15
40: aload 15
aload 14
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
invokestatic java.util.HexFormat.of:()Ljava/util/HexFormat;
aload 15
invokevirtual java.util.HexFormat.formatHex:([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 4
46: iconst_1
istore 13
47: StackMap locals:
StackMap stack:
iload 13
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 12
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 15 end local 14 end local 13 end local 12 end local 11 end local 10 end local 8 52: StackMap locals: sun.security.util.SignatureFileVerifier java.util.jar.Attributes java.lang.String sun.security.util.ManifestDigester int sun.security.util.ManifestDigester$Entry int int top java.util.Iterator
StackMap stack:
aload 9
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 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 9
goto 60
StackMap locals: sun.security.util.SignatureFileVerifier java.util.jar.Attributes java.lang.String sun.security.util.ManifestDigester int sun.security.util.ManifestDigester$Entry int int top java.util.Iterator
StackMap stack:
56: aload 9
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.String
astore 8
start local 8 57: 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;
58: 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;
59: invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
end local 8 60: StackMap locals:
StackMap stack:
aload 9
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 int sun.security.util.ManifestDigester$Entry int int
StackMap stack:
iload 7
ifeq 65
iload 6
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 4
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 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;
1 66 4 oneDigestVerified Z
2 66 5 mde Lsun/security/util/ManifestDigester$Entry;
3 66 6 weakAlgs Z
4 66 7 validEntry Z
11 52 8 se Ljava/util/Map$Entry<Ljava/lang/Object;Ljava/lang/Object;>;
12 52 10 key Ljava/lang/String;
14 52 11 algorithm Ljava/lang/String;
19 52 12 digest Ljava/security/MessageDigest;
21 52 13 ok Z
23 52 14 expected [B
25 26 15 computed [B
27 52 15 computed [B
57 60 8 key Ljava/lang/String;
Exceptions:
throws java.io.IOException, java.security.SignatureException
MethodParameters:
Name Flags
sfAttr
name
md
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 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"
NestMembers:
sun.security.util.SignatureFileVerifier$ConfigurationHolder
InnerClasses:
public Decoder = java.util.Base64$Decoder of java.util.Base64
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
private ConfigurationHolder = sun.security.util.SignatureFileVerifier$ConfigurationHolder of sun.security.util.SignatureFileVerifier