public class org.postgresql.ssl.PGjdbcHostnameVerifier implements javax.net.ssl.HostnameVerifier
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.postgresql.ssl.PGjdbcHostnameVerifier
super_class: java.lang.Object
{
private static final java.util.logging.Logger LOGGER;
descriptor: Ljava/util/logging/Logger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
public static final org.postgresql.ssl.PGjdbcHostnameVerifier INSTANCE;
descriptor: Lorg/postgresql/ssl/PGjdbcHostnameVerifier;
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
private static final int TYPE_DNS_NAME;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 2
private static final int TYPE_IP_ADDRESS;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 7
public static final java.util.Comparator<java.lang.String> HOSTNAME_PATTERN_COMPARATOR;
descriptor: Ljava/util/Comparator;
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/Comparator<Ljava/lang/String;>;
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: ldc Lorg/postgresql/ssl/PGjdbcHostnameVerifier;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
invokestatic java.util.logging.Logger.getLogger:(Ljava/lang/String;)Ljava/util/logging/Logger;
putstatic org.postgresql.ssl.PGjdbcHostnameVerifier.LOGGER:Ljava/util/logging/Logger;
1: new org.postgresql.ssl.PGjdbcHostnameVerifier
dup
invokespecial org.postgresql.ssl.PGjdbcHostnameVerifier.<init>:()V
putstatic org.postgresql.ssl.PGjdbcHostnameVerifier.INSTANCE:Lorg/postgresql/ssl/PGjdbcHostnameVerifier;
2: new org.postgresql.ssl.PGjdbcHostnameVerifier$1
dup
invokespecial org.postgresql.ssl.PGjdbcHostnameVerifier$1.<init>:()V
putstatic org.postgresql.ssl.PGjdbcHostnameVerifier.HOSTNAME_PATTERN_COMPARATOR:Ljava/util/Comparator;
3: return
LocalVariableTable:
Start End Slot Name Signature
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/postgresql/ssl/PGjdbcHostnameVerifier;
public boolean verify(java.lang.String, javax.net.ssl.SSLSession);
descriptor: (Ljava/lang/String;Ljavax/net/ssl/SSLSession;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=12, args_size=3
start local 0 start local 1 start local 2 0: aload 2
invokeinterface javax.net.ssl.SSLSession.getPeerCertificates:()[Ljava/security/cert/Certificate;
checkcast java.security.cert.X509Certificate[]
astore 3
start local 3 1: goto 7
end local 3 StackMap locals:
StackMap stack: javax.net.ssl.SSLPeerUnverifiedException
2: astore 4
start local 4 3: getstatic org.postgresql.ssl.PGjdbcHostnameVerifier.LOGGER:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.SEVERE:Ljava/util/logging/Level;
4: ldc "Unable to parse X509Certificate for hostname {0}"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 1
aastore
invokestatic org.postgresql.util.GT.tr:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
aload 4
5: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
6: iconst_0
ireturn
end local 4 start local 3 7: StackMap locals: java.security.cert.X509Certificate[]
StackMap stack:
aload 3
ifnull 8
aload 3
arraylength
ifne 12
8: StackMap locals:
StackMap stack:
getstatic org.postgresql.ssl.PGjdbcHostnameVerifier.LOGGER:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.SEVERE:Ljava/util/logging/Level;
9: ldc "No certificates found for hostname {0}"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 1
aastore
invokestatic org.postgresql.util.GT.tr:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
10: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;)V
11: iconst_0
ireturn
12: StackMap locals:
StackMap stack:
aload 1
ldc "["
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 15
aload 1
ldc "]"
invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
ifeq 15
13: aload 1
iconst_1
aload 1
invokevirtual java.lang.String.length:()I
iconst_1
isub
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
astore 4
start local 4 14: goto 26
end local 4 15: StackMap locals:
StackMap stack:
aload 1
invokestatic java.net.IDN.toASCII:(Ljava/lang/String;)Ljava/lang/String;
astore 4
start local 4 16: getstatic org.postgresql.ssl.PGjdbcHostnameVerifier.LOGGER:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINEST:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 26
17: getstatic org.postgresql.ssl.PGjdbcHostnameVerifier.LOGGER:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINEST:Ljava/util/logging/Level;
ldc "Canonical host name for {0} is {1}"
18: iconst_2
anewarray java.lang.Object
dup
iconst_0
aload 1
aastore
dup
iconst_1
aload 4
aastore
19: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;[Ljava/lang/Object;)V
20: goto 26
end local 4 StackMap locals:
StackMap stack: java.lang.IllegalArgumentException
21: astore 5
start local 5 22: getstatic org.postgresql.ssl.PGjdbcHostnameVerifier.LOGGER:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.SEVERE:Ljava/util/logging/Level;
23: ldc "Hostname {0} is invalid"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 1
aastore
invokestatic org.postgresql.util.GT.tr:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
aload 5
24: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
25: iconst_0
ireturn
end local 5 start local 4 26: StackMap locals: java.lang.String
StackMap stack:
aload 3
iconst_0
aaload
astore 5
start local 5 27: aload 5
invokevirtual java.security.cert.X509Certificate.getSubjectAlternativeNames:()Ljava/util/Collection;
astore 6
start local 6 28: aload 6
ifnonnull 36
29: invokestatic java.util.Collections.emptyList:()Ljava/util/List;
astore 6
30: goto 36
end local 6 StackMap locals: org.postgresql.ssl.PGjdbcHostnameVerifier java.lang.String javax.net.ssl.SSLSession java.security.cert.X509Certificate[] java.lang.String java.security.cert.X509Certificate
StackMap stack: java.security.cert.CertificateParsingException
31: astore 7
start local 7 32: getstatic org.postgresql.ssl.PGjdbcHostnameVerifier.LOGGER:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.SEVERE:Ljava/util/logging/Level;
33: ldc "Unable to parse certificates for hostname {0}"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 1
aastore
invokestatic org.postgresql.util.GT.tr:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
aload 7
34: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
35: iconst_0
ireturn
end local 7 start local 6 36: StackMap locals: java.util.Collection
StackMap stack:
iconst_0
istore 7
start local 7 37: aload 6
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 9
goto 58
StackMap locals: org.postgresql.ssl.PGjdbcHostnameVerifier java.lang.String javax.net.ssl.SSLSession java.security.cert.X509Certificate[] java.lang.String java.security.cert.X509Certificate java.util.Collection int top java.util.Iterator
StackMap stack:
38: aload 9
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.util.List
astore 8
start local 8 39: aload 8
invokeinterface java.util.List.size:()I
iconst_2
if_icmpeq 41
40: goto 58
41: StackMap locals: org.postgresql.ssl.PGjdbcHostnameVerifier java.lang.String javax.net.ssl.SSLSession java.security.cert.X509Certificate[] java.lang.String java.security.cert.X509Certificate java.util.Collection int java.util.List java.util.Iterator
StackMap stack:
aload 8
iconst_0
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast java.lang.Integer
astore 10
start local 10 42: aload 10
ifnonnull 44
43: goto 58
44: StackMap locals: java.lang.Integer
StackMap stack:
aload 10
invokevirtual java.lang.Integer.intValue:()I
bipush 7
if_icmpeq 46
aload 10
invokevirtual java.lang.Integer.intValue:()I
iconst_2
if_icmpeq 46
45: goto 58
46: StackMap locals:
StackMap stack:
aload 8
iconst_1
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast java.lang.String
astore 11
start local 11 47: aload 10
invokevirtual java.lang.Integer.intValue:()I
bipush 7
if_icmpne 49
aload 11
ldc "*"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 49
48: goto 58
49: StackMap locals: java.lang.String
StackMap stack:
iload 7
aload 10
invokevirtual java.lang.Integer.intValue:()I
iconst_2
if_icmpne 50
iconst_1
goto 51
StackMap locals:
StackMap stack: int
50: iconst_0
StackMap locals: org.postgresql.ssl.PGjdbcHostnameVerifier java.lang.String javax.net.ssl.SSLSession java.security.cert.X509Certificate[] java.lang.String java.security.cert.X509Certificate java.util.Collection int java.util.List java.util.Iterator java.lang.Integer java.lang.String
StackMap stack: int int
51: ior
istore 7
52: aload 0
aload 4
aload 11
invokevirtual org.postgresql.ssl.PGjdbcHostnameVerifier.verifyHostName:(Ljava/lang/String;Ljava/lang/String;)Z
ifeq 58
53: getstatic org.postgresql.ssl.PGjdbcHostnameVerifier.LOGGER:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINEST:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 57
54: getstatic org.postgresql.ssl.PGjdbcHostnameVerifier.LOGGER:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINEST:Ljava/util/logging/Level;
55: ldc "Server name validation pass for {0}, subjectAltName {1}"
iconst_2
anewarray java.lang.Object
dup
iconst_0
aload 1
aastore
dup
iconst_1
aload 11
aastore
invokestatic org.postgresql.util.GT.tr:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
56: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;)V
57: StackMap locals:
StackMap stack:
iconst_1
ireturn
end local 11 end local 10 end local 8 58: StackMap locals: org.postgresql.ssl.PGjdbcHostnameVerifier java.lang.String javax.net.ssl.SSLSession java.security.cert.X509Certificate[] java.lang.String java.security.cert.X509Certificate java.util.Collection int top java.util.Iterator
StackMap stack:
aload 9
invokeinterface java.util.Iterator.hasNext:()Z
ifne 38
59: iload 7
ifeq 66
60: getstatic org.postgresql.ssl.PGjdbcHostnameVerifier.LOGGER:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.SEVERE:Ljava/util/logging/Level;
61: ldc "Server name validation failed: certificate for host {0} dNSName entries subjectAltName, but none of them match. Assuming server name validation failed"
iconst_1
anewarray java.lang.Object
dup
iconst_0
62: aload 1
aastore
63: invokestatic org.postgresql.util.GT.tr:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
64: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;)V
65: iconst_0
ireturn
66: StackMap locals: org.postgresql.ssl.PGjdbcHostnameVerifier java.lang.String javax.net.ssl.SSLSession java.security.cert.X509Certificate[] java.lang.String java.security.cert.X509Certificate java.util.Collection int
StackMap stack:
new javax.naming.ldap.LdapName
dup
aload 5
invokevirtual java.security.cert.X509Certificate.getSubjectX500Principal:()Ljavax/security/auth/x500/X500Principal;
ldc "RFC2253"
invokevirtual javax.security.auth.x500.X500Principal.getName:(Ljava/lang/String;)Ljava/lang/String;
invokespecial javax.naming.ldap.LdapName.<init>:(Ljava/lang/String;)V
astore 8
start local 8 67: goto 76
end local 8 StackMap locals:
StackMap stack: javax.naming.InvalidNameException
68: astore 9
start local 9 69: getstatic org.postgresql.ssl.PGjdbcHostnameVerifier.LOGGER:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.SEVERE:Ljava/util/logging/Level;
70: ldc "Server name validation failed: unable to extract common name from X509Certificate for hostname {0}"
iconst_1
anewarray java.lang.Object
dup
iconst_0
71: aload 1
aastore
72: invokestatic org.postgresql.util.GT.tr:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
73: aload 9
74: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
75: iconst_0
ireturn
end local 9 start local 8 76: StackMap locals: javax.naming.ldap.LdapName
StackMap stack:
new java.util.ArrayList
dup
iconst_1
invokespecial java.util.ArrayList.<init>:(I)V
astore 9
start local 9 77: aload 8
invokevirtual javax.naming.ldap.LdapName.getRdns:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 11
goto 81
StackMap locals: org.postgresql.ssl.PGjdbcHostnameVerifier java.lang.String javax.net.ssl.SSLSession java.security.cert.X509Certificate[] java.lang.String java.security.cert.X509Certificate java.util.Collection int javax.naming.ldap.LdapName java.util.List top java.util.Iterator
StackMap stack:
78: aload 11
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast javax.naming.ldap.Rdn
astore 10
start local 10 79: ldc "CN"
aload 10
invokevirtual javax.naming.ldap.Rdn.getType:()Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 81
80: aload 9
aload 10
invokevirtual javax.naming.ldap.Rdn.getValue:()Ljava/lang/Object;
checkcast java.lang.String
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 10 81: StackMap locals:
StackMap stack:
aload 11
invokeinterface java.util.Iterator.hasNext:()Z
ifne 78
82: aload 9
invokeinterface java.util.List.isEmpty:()Z
ifeq 89
83: getstatic org.postgresql.ssl.PGjdbcHostnameVerifier.LOGGER:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.SEVERE:Ljava/util/logging/Level;
84: ldc "Server name validation failed: certificate for hostname {0} has no DNS subjectAltNames, and it CommonName is missing as well"
iconst_1
anewarray java.lang.Object
dup
iconst_0
85: aload 1
aastore
86: invokestatic org.postgresql.util.GT.tr:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
87: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;)V
88: iconst_0
ireturn
89: StackMap locals: org.postgresql.ssl.PGjdbcHostnameVerifier java.lang.String javax.net.ssl.SSLSession java.security.cert.X509Certificate[] java.lang.String java.security.cert.X509Certificate java.util.Collection int javax.naming.ldap.LdapName java.util.List
StackMap stack:
aload 9
invokeinterface java.util.List.size:()I
iconst_1
if_icmple 91
90: aload 9
getstatic org.postgresql.ssl.PGjdbcHostnameVerifier.HOSTNAME_PATTERN_COMPARATOR:Ljava/util/Comparator;
invokestatic java.util.Collections.sort:(Ljava/util/List;Ljava/util/Comparator;)V
91: StackMap locals:
StackMap stack:
aload 9
aload 9
invokeinterface java.util.List.size:()I
iconst_1
isub
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast java.lang.String
astore 10
start local 10 92: aload 0
aload 4
aload 10
invokevirtual org.postgresql.ssl.PGjdbcHostnameVerifier.verifyHostName:(Ljava/lang/String;Ljava/lang/String;)Z
istore 11
start local 11 93: iload 11
ifne 99
94: getstatic org.postgresql.ssl.PGjdbcHostnameVerifier.LOGGER:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.SEVERE:Ljava/util/logging/Level;
95: ldc "Server name validation failed: hostname {0} does not match common name {1}"
iconst_2
anewarray java.lang.Object
dup
iconst_0
96: aload 1
aastore
dup
iconst_1
aload 10
aastore
97: invokestatic org.postgresql.util.GT.tr:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
98: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;)V
99: StackMap locals: java.lang.String int
StackMap stack:
iload 11
ireturn
end local 11 end local 10 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 100 0 this Lorg/postgresql/ssl/PGjdbcHostnameVerifier;
0 100 1 hostname Ljava/lang/String;
0 100 2 session Ljavax/net/ssl/SSLSession;
1 2 3 peerCerts [Ljava/security/cert/X509Certificate;
7 100 3 peerCerts [Ljava/security/cert/X509Certificate;
3 7 4 e Ljavax/net/ssl/SSLPeerUnverifiedException;
14 15 4 canonicalHostname Ljava/lang/String;
16 21 4 canonicalHostname Ljava/lang/String;
26 100 4 canonicalHostname Ljava/lang/String;
22 26 5 e Ljava/lang/IllegalArgumentException;
27 100 5 serverCert Ljava/security/cert/X509Certificate;
28 31 6 subjectAltNames Ljava/util/Collection<Ljava/util/List<*>;>;
36 100 6 subjectAltNames Ljava/util/Collection<Ljava/util/List<*>;>;
32 36 7 e Ljava/security/cert/CertificateParsingException;
37 100 7 anyDnsSan Z
39 58 8 sanItem Ljava/util/List<*>;
42 58 10 sanType Ljava/lang/Integer;
47 58 11 san Ljava/lang/String;
67 68 8 dn Ljavax/naming/ldap/LdapName;
76 100 8 dn Ljavax/naming/ldap/LdapName;
69 76 9 e Ljavax/naming/InvalidNameException;
77 100 9 commonNames Ljava/util/List<Ljava/lang/String;>;
79 81 10 rdn Ljavax/naming/ldap/Rdn;
92 100 10 commonName Ljava/lang/String;
93 100 11 result Z
Exception table:
from to target type
0 1 2 Class javax.net.ssl.SSLPeerUnverifiedException
15 20 21 Class java.lang.IllegalArgumentException
27 30 31 Class java.security.cert.CertificateParsingException
66 67 68 Class javax.naming.InvalidNameException
MethodParameters:
Name Flags
hostname
session
public boolean verifyHostName(java.lang.String, java.lang.String);
descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 1
ifnull 1
aload 2
ifnonnull 2
1: StackMap locals:
StackMap stack:
iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 2
bipush 42
invokevirtual java.lang.String.lastIndexOf:(I)I
istore 3
start local 3 3: iload 3
iconst_m1
if_icmpne 5
4: aload 1
aload 2
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ireturn
5: StackMap locals: int
StackMap stack:
iload 3
ifle 7
6: iconst_0
ireturn
7: StackMap locals:
StackMap stack:
aload 2
bipush 46
invokevirtual java.lang.String.indexOf:(I)I
iconst_m1
if_icmpne 9
8: iconst_0
ireturn
9: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.lang.String.length:()I
aload 2
invokevirtual java.lang.String.length:()I
iconst_1
isub
if_icmpge 11
10: iconst_0
ireturn
11: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.lang.String.length:()I
aload 2
invokevirtual java.lang.String.length:()I
isub
iconst_1
iadd
istore 4
start local 4 12: aload 1
bipush 46
iload 4
iconst_1
isub
invokevirtual java.lang.String.lastIndexOf:(II)I
iflt 14
13: iconst_0
ireturn
14: StackMap locals: int
StackMap stack:
aload 1
iconst_1
iload 4
15: aload 2
iconst_1
aload 2
invokevirtual java.lang.String.length:()I
iconst_1
isub
16: invokevirtual java.lang.String.regionMatches:(ZILjava/lang/String;II)Z
ireturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Lorg/postgresql/ssl/PGjdbcHostnameVerifier;
0 17 1 hostname Ljava/lang/String;
0 17 2 pattern Ljava/lang/String;
3 17 3 lastStar I
12 17 4 toffset I
MethodParameters:
Name Flags
hostname
pattern
}
SourceFile: "PGjdbcHostnameVerifier.java"
NestMembers:
org.postgresql.ssl.PGjdbcHostnameVerifier$1
InnerClasses:
org.postgresql.ssl.PGjdbcHostnameVerifier$1