final class sun.security.ssl.SupportedEllipticCurvesExtension extends sun.security.ssl.HelloExtension
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.SupportedEllipticCurvesExtension
super_class: sun.security.ssl.HelloExtension
{
private static final sun.security.ssl.Debug debug;
descriptor: Lsun/security/ssl/Debug;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int ARBITRARY_PRIME;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 65281
private static final int ARBITRARY_CHAR2;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 65282
private static final java.util.Map<java.lang.String, java.lang.Integer> oidToIdMap;
descriptor: Ljava/util/Map;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/Map<Ljava/lang/String;Ljava/lang/Integer;>;
private static final java.util.Map<java.lang.Integer, java.lang.String> idToOidMap;
descriptor: Ljava/util/Map;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/Map<Ljava/lang/Integer;Ljava/lang/String;>;
private static final java.util.Map<java.lang.Integer, java.security.AlgorithmParameters> idToParams;
descriptor: Ljava/util/Map;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/Map<Ljava/lang/Integer;Ljava/security/AlgorithmParameters;>;
private static final int[] supportedCurveIds;
descriptor: [I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final int[] curveIds;
descriptor: [I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=5, locals=9, args_size=0
0: ldc "ssl"
invokestatic sun.security.ssl.Debug.getInstance:(Ljava/lang/String;)Lsun/security/ssl/Debug;
putstatic sun.security.ssl.SupportedEllipticCurvesExtension.debug:Lsun/security/ssl/Debug;
1: new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
putstatic sun.security.ssl.SupportedEllipticCurvesExtension.oidToIdMap:Ljava/util/Map;
2: new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
putstatic sun.security.ssl.SupportedEllipticCurvesExtension.idToOidMap:Ljava/util/Map;
3: new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
4: putstatic sun.security.ssl.SupportedEllipticCurvesExtension.idToParams:Ljava/util/Map;
5: invokestatic sun.security.ssl.SunJSSE.isFIPS:()Z
istore 0
start local 0 6: ldc "secp256r1"
iconst_0
invokestatic sun.security.ssl.SupportedEllipticCurvesExtension$NamedEllipticCurve.getCurve:(Ljava/lang/String;Z)Lsun/security/ssl/SupportedEllipticCurvesExtension$NamedEllipticCurve;
pop
7: new sun.security.action.GetPropertyAction
dup
ldc "jdk.tls.namedGroups"
invokespecial sun.security.action.GetPropertyAction.<init>:(Ljava/lang/String;)V
8: invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
checkcast java.lang.String
astore 1
start local 1 9: aload 1
ifnull 13
aload 1
invokevirtual java.lang.String.length:()I
ifeq 13
10: aload 1
invokevirtual java.lang.String.length:()I
iconst_1
if_icmple 13
aload 1
iconst_0
invokevirtual java.lang.String.charAt:(I)C
bipush 34
if_icmpne 13
11: aload 1
aload 1
invokevirtual java.lang.String.length:()I
iconst_1
isub
invokevirtual java.lang.String.charAt:(I)C
bipush 34
if_icmpne 13
12: 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 1
13: StackMap locals: int java.lang.String
StackMap stack:
aload 1
ifnull 33
aload 1
invokevirtual java.lang.String.length:()I
ifeq 33
14: aload 1
ldc ","
invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
astore 3
start local 3 15: new java.util.ArrayList
dup
aload 3
arraylength
invokespecial java.util.ArrayList.<init>:(I)V
astore 2
start local 2 16: aload 3
dup
astore 7
arraylength
istore 6
iconst_0
istore 5
goto 26
StackMap locals: int java.lang.String java.util.ArrayList java.lang.String[] top int int java.lang.String[]
StackMap stack:
17: aload 7
iload 5
aaload
astore 4
start local 4 18: aload 4
invokevirtual java.lang.String.trim:()Ljava/lang/String;
astore 4
19: aload 4
invokevirtual java.lang.String.isEmpty:()Z
ifne 25
20: aload 4
iload 0
invokestatic sun.security.ssl.SupportedEllipticCurvesExtension$NamedEllipticCurve.getCurve:(Ljava/lang/String;Z)Lsun/security/ssl/SupportedEllipticCurvesExtension$NamedEllipticCurve;
21: astore 8
start local 8 22: aload 8
ifnull 25
23: aload 8
getfield sun.security.ssl.SupportedEllipticCurvesExtension$NamedEllipticCurve.id:I
invokestatic sun.security.ssl.SupportedEllipticCurvesExtension.isAvailableCurve:(I)Z
ifeq 25
24: aload 2
aload 8
getfield sun.security.ssl.SupportedEllipticCurvesExtension$NamedEllipticCurve.id:I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
end local 8 end local 4 25: StackMap locals:
StackMap stack:
iinc 5 1
StackMap locals:
StackMap stack:
26: iload 5
iload 6
if_icmplt 17
27: aload 2
invokevirtual java.util.ArrayList.isEmpty:()Z
ifeq 49
invokestatic sun.security.ssl.JsseJce.isEcAvailable:()Z
ifeq 49
28: new java.lang.IllegalArgumentException
dup
29: new java.lang.StringBuilder
dup
ldc "System property jdk.tls.namedGroups("
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;
30: ldc "contains no supported elliptic curves"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
31: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
32: invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
end local 3 end local 2 33: StackMap locals: int java.lang.String
StackMap stack:
iload 0
ifeq 38
34: bipush 9
newarray 10
dup
iconst_0
35: bipush 23
iastore
dup
iconst_1
bipush 24
iastore
dup
iconst_2
bipush 25
iastore
dup
iconst_3
bipush 9
iastore
dup
iconst_4
bipush 10
iastore
dup
iconst_5
bipush 11
iastore
dup
bipush 6
bipush 12
iastore
dup
bipush 7
bipush 13
iastore
dup
bipush 8
bipush 14
iastore
36: astore 3
start local 3 37: goto 42
end local 3 38: StackMap locals:
StackMap stack:
bipush 10
newarray 10
dup
iconst_0
39: bipush 23
iastore
dup
iconst_1
bipush 24
iastore
dup
iconst_2
bipush 25
iastore
dup
iconst_3
bipush 9
iastore
dup
iconst_4
bipush 10
iastore
dup
iconst_5
bipush 11
iastore
dup
bipush 6
bipush 12
iastore
dup
bipush 7
bipush 13
iastore
dup
bipush 8
bipush 14
iastore
dup
bipush 9
40: bipush 22
iastore
41: astore 3
start local 3 42: StackMap locals: int java.lang.String top int[]
StackMap stack:
new java.util.ArrayList
dup
aload 3
arraylength
invokespecial java.util.ArrayList.<init>:(I)V
astore 2
start local 2 43: aload 3
dup
astore 7
arraylength
istore 6
iconst_0
istore 5
goto 48
StackMap locals: int java.lang.String java.util.ArrayList int[] top int int int[]
StackMap stack:
44: aload 7
iload 5
iaload
istore 4
start local 4 45: iload 4
invokestatic sun.security.ssl.SupportedEllipticCurvesExtension.isAvailableCurve:(I)Z
ifeq 47
46: aload 2
iload 4
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
end local 4 47: StackMap locals:
StackMap stack:
iinc 5 1
StackMap locals:
StackMap stack:
48: iload 5
iload 6
if_icmplt 44
end local 3 49: StackMap locals: int java.lang.String java.util.ArrayList
StackMap stack:
getstatic sun.security.ssl.SupportedEllipticCurvesExtension.debug:Lsun/security/ssl/Debug;
ifnull 57
aload 2
invokevirtual java.util.ArrayList.isEmpty:()Z
ifeq 57
50: getstatic sun.security.ssl.SupportedEllipticCurvesExtension.debug:Lsun/security/ssl/Debug;
51: new java.lang.StringBuilder
dup
ldc "Initialized [jdk.tls.namedGroups|default] list contains no available elliptic curves. "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
52: aload 1
ifnull 53
new java.lang.StringBuilder
dup
ldc "("
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;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
goto 54
StackMap locals: int java.lang.String java.util.ArrayList
StackMap stack: sun.security.ssl.Debug java.lang.StringBuilder
53: ldc "[Default]"
StackMap locals: int java.lang.String java.util.ArrayList
StackMap stack: sun.security.ssl.Debug java.lang.StringBuilder java.lang.String
54: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
55: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
56: invokevirtual sun.security.ssl.Debug.println:(Ljava/lang/String;)V
57: StackMap locals:
StackMap stack:
aload 2
invokevirtual java.util.ArrayList.size:()I
newarray 10
putstatic sun.security.ssl.SupportedEllipticCurvesExtension.supportedCurveIds:[I
58: iconst_0
istore 3
start local 3 59: aload 2
invokevirtual java.util.ArrayList.iterator:()Ljava/util/Iterator;
astore 5
goto 62
StackMap locals: int java.lang.String java.util.ArrayList int top java.util.Iterator
StackMap stack:
60: aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.Integer
astore 4
start local 4 61: getstatic sun.security.ssl.SupportedEllipticCurvesExtension.supportedCurveIds:[I
iload 3
iinc 3 1
aload 4
invokevirtual java.lang.Integer.intValue:()I
iastore
end local 4 62: StackMap locals:
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 60
end local 3 end local 2 end local 1 end local 0 63: return
LocalVariableTable:
Start End Slot Name Signature
6 63 0 requireFips Z
9 63 1 property Ljava/lang/String;
16 33 2 idList Ljava/util/ArrayList<Ljava/lang/Integer;>;
43 63 2 idList Ljava/util/ArrayList<Ljava/lang/Integer;>;
15 33 3 curves [Ljava/lang/String;
18 25 4 curve Ljava/lang/String;
22 25 8 namedCurve Lsun/security/ssl/SupportedEllipticCurvesExtension$NamedEllipticCurve;
37 38 3 ids [I
42 49 3 ids [I
45 47 4 curveId I
59 63 3 i I
61 62 4 id Ljava/lang/Integer;
private static boolean isAvailableCurve(int);
descriptor: (I)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=3, args_size=1
start local 0 0: getstatic sun.security.ssl.SupportedEllipticCurvesExtension.idToOidMap:Ljava/util/Map;
iload 0
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.String
astore 1
start local 1 1: aload 1
ifnull 10
2: aconst_null
astore 2
start local 2 3: ldc "EC"
invokestatic sun.security.ssl.JsseJce.getAlgorithmParameters:(Ljava/lang/String;)Ljava/security/AlgorithmParameters;
astore 2
4: aload 2
new java.security.spec.ECGenParameterSpec
dup
aload 1
invokespecial java.security.spec.ECGenParameterSpec.<init>:(Ljava/lang/String;)V
invokevirtual java.security.AlgorithmParameters.init:(Ljava/security/spec/AlgorithmParameterSpec;)V
5: goto 8
StackMap locals: int java.lang.String java.security.AlgorithmParameters
StackMap stack: java.lang.Exception
6: pop
7: iconst_0
ireturn
8: StackMap locals:
StackMap stack:
getstatic sun.security.ssl.SupportedEllipticCurvesExtension.idToParams:Ljava/util/Map;
iload 0
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aload 2
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
9: iconst_1
ireturn
end local 2 10: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 curveId I
1 11 1 oid Ljava/lang/String;
3 10 2 params Ljava/security/AlgorithmParameters;
Exception table:
from to target type
3 5 6 Class java.lang.Exception
MethodParameters:
Name Flags
curveId
private void <init>(int[]);
descriptor: ([I)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getstatic sun.security.ssl.ExtensionType.EXT_ELLIPTIC_CURVES:Lsun/security/ssl/ExtensionType;
invokespecial sun.security.ssl.HelloExtension.<init>:(Lsun/security/ssl/ExtensionType;)V
1: aload 0
aload 1
putfield sun.security.ssl.SupportedEllipticCurvesExtension.curveIds:[I
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/security/ssl/SupportedEllipticCurvesExtension;
0 3 1 curveIds [I
MethodParameters:
Name Flags
curveIds
void <init>(sun.security.ssl.HandshakeInStream, int);
descriptor: (Lsun/security/ssl/HandshakeInStream;I)V
flags: (0x0000)
Code:
stack=5, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getstatic sun.security.ssl.ExtensionType.EXT_ELLIPTIC_CURVES:Lsun/security/ssl/ExtensionType;
invokespecial sun.security.ssl.HelloExtension.<init>:(Lsun/security/ssl/ExtensionType;)V
1: aload 1
invokevirtual sun.security.ssl.HandshakeInStream.getInt16:()I
istore 3
start local 3 2: iload 2
iconst_1
iand
ifne 3
iload 3
iconst_2
iadd
iload 2
if_icmpeq 4
3: StackMap locals: sun.security.ssl.SupportedEllipticCurvesExtension sun.security.ssl.HandshakeInStream int int
StackMap stack:
new javax.net.ssl.SSLProtocolException
dup
new java.lang.StringBuilder
dup
ldc "Invalid "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield sun.security.ssl.SupportedEllipticCurvesExtension.type:Lsun/security/ssl/ExtensionType;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " extension"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
aload 0
iload 3
iconst_1
ishr
newarray 10
putfield sun.security.ssl.SupportedEllipticCurvesExtension.curveIds:[I
5: iconst_0
istore 4
start local 4 6: goto 9
7: StackMap locals: int
StackMap stack:
aload 0
getfield sun.security.ssl.SupportedEllipticCurvesExtension.curveIds:[I
iload 4
aload 1
invokevirtual sun.security.ssl.HandshakeInStream.getInt16:()I
iastore
8: iinc 4 1
StackMap locals:
StackMap stack:
9: iload 4
aload 0
getfield sun.security.ssl.SupportedEllipticCurvesExtension.curveIds:[I
arraylength
if_icmplt 7
end local 4 10: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lsun/security/ssl/SupportedEllipticCurvesExtension;
0 11 1 s Lsun/security/ssl/HandshakeInStream;
0 11 2 len I
2 11 3 k I
6 10 4 i I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
s
len
static int getActiveCurves(sun.security.util.AlgorithmConstraints);
descriptor: (Lsun/security/util/AlgorithmConstraints;)I
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: getstatic sun.security.ssl.SupportedEllipticCurvesExtension.supportedCurveIds:[I
aload 0
invokestatic sun.security.ssl.SupportedEllipticCurvesExtension.getPreferredCurve:([ILsun/security/util/AlgorithmConstraints;)I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 constraints Lsun/security/util/AlgorithmConstraints;
MethodParameters:
Name Flags
constraints
static boolean hasActiveCurves(sun.security.util.AlgorithmConstraints);
descriptor: (Lsun/security/util/AlgorithmConstraints;)Z
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokestatic sun.security.ssl.SupportedEllipticCurvesExtension.getActiveCurves:(Lsun/security/util/AlgorithmConstraints;)I
iflt 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 constraints Lsun/security/util/AlgorithmConstraints;
MethodParameters:
Name Flags
constraints
static sun.security.ssl.SupportedEllipticCurvesExtension createExtension(sun.security.util.AlgorithmConstraints);
descriptor: (Lsun/security/util/AlgorithmConstraints;)Lsun/security/ssl/SupportedEllipticCurvesExtension;
flags: (0x0008) ACC_STATIC
Code:
stack=5, locals=6, args_size=1
start local 0 0: new java.util.ArrayList
dup
getstatic sun.security.ssl.SupportedEllipticCurvesExtension.supportedCurveIds:[I
arraylength
invokespecial java.util.ArrayList.<init>:(I)V
astore 1
start local 1 1: getstatic sun.security.ssl.SupportedEllipticCurvesExtension.supportedCurveIds:[I
dup
astore 5
arraylength
istore 4
iconst_0
istore 3
goto 10
StackMap locals: sun.security.util.AlgorithmConstraints java.util.ArrayList top int int int[]
StackMap stack:
2: aload 5
iload 3
iaload
istore 2
start local 2 3: aload 0
4: getstatic sun.security.util.CryptoPrimitive.KEY_AGREEMENT:Lsun/security/util/CryptoPrimitive;
invokestatic java.util.EnumSet.of:(Ljava/lang/Enum;)Ljava/util/EnumSet;
5: ldc "EC"
getstatic sun.security.ssl.SupportedEllipticCurvesExtension.idToParams:Ljava/util/Map;
iload 2
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.security.AlgorithmParameters
6: invokeinterface sun.security.util.AlgorithmConstraints.permits:(Ljava/util/Set;Ljava/lang/String;Ljava/security/AlgorithmParameters;)Z
7: ifeq 9
8: aload 1
iload 2
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
end local 2 9: StackMap locals:
StackMap stack:
iinc 3 1
StackMap locals:
StackMap stack:
10: iload 3
iload 4
if_icmplt 2
11: aload 1
invokevirtual java.util.ArrayList.isEmpty:()Z
ifne 19
12: aload 1
invokevirtual java.util.ArrayList.size:()I
newarray 10
astore 2
start local 2 13: iconst_0
istore 3
start local 3 14: aload 1
invokevirtual java.util.ArrayList.iterator:()Ljava/util/Iterator;
astore 5
goto 17
StackMap locals: sun.security.util.AlgorithmConstraints java.util.ArrayList int[] int top java.util.Iterator
StackMap stack:
15: aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.Integer
astore 4
start local 4 16: aload 2
iload 3
iinc 3 1
aload 4
invokevirtual java.lang.Integer.intValue:()I
iastore
end local 4 17: StackMap locals:
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 15
18: new sun.security.ssl.SupportedEllipticCurvesExtension
dup
aload 2
invokespecial sun.security.ssl.SupportedEllipticCurvesExtension.<init>:([I)V
areturn
end local 3 end local 2 19: StackMap locals: sun.security.util.AlgorithmConstraints java.util.ArrayList
StackMap stack:
aconst_null
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 constraints Lsun/security/util/AlgorithmConstraints;
1 20 1 idList Ljava/util/ArrayList<Ljava/lang/Integer;>;
3 9 2 curveId I
13 19 2 ids [I
14 19 3 i I
16 17 4 id Ljava/lang/Integer;
MethodParameters:
Name Flags
constraints
int getPreferredCurve(sun.security.util.AlgorithmConstraints);
descriptor: (Lsun/security/util/AlgorithmConstraints;)I
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield sun.security.ssl.SupportedEllipticCurvesExtension.curveIds:[I
aload 1
invokestatic sun.security.ssl.SupportedEllipticCurvesExtension.getPreferredCurve:([ILsun/security/util/AlgorithmConstraints;)I
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/ssl/SupportedEllipticCurvesExtension;
0 1 1 constraints Lsun/security/util/AlgorithmConstraints;
MethodParameters:
Name Flags
constraints
private static int getPreferredCurve(int[], sun.security.util.AlgorithmConstraints);
descriptor: ([ILsun/security/util/AlgorithmConstraints;)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=6, args_size=2
start local 0 start local 1 0: aload 0
dup
astore 5
arraylength
istore 4
iconst_0
istore 3
goto 9
StackMap locals: int[] sun.security.util.AlgorithmConstraints top int int int[]
StackMap stack:
1: aload 5
iload 3
iaload
istore 2
start local 2 2: iload 2
invokestatic sun.security.ssl.SupportedEllipticCurvesExtension.isSupported:(I)Z
ifeq 8
aload 1
3: getstatic sun.security.util.CryptoPrimitive.KEY_AGREEMENT:Lsun/security/util/CryptoPrimitive;
invokestatic java.util.EnumSet.of:(Ljava/lang/Enum;)Ljava/util/EnumSet;
4: ldc "EC"
getstatic sun.security.ssl.SupportedEllipticCurvesExtension.idToParams:Ljava/util/Map;
iload 2
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.security.AlgorithmParameters
5: invokeinterface sun.security.util.AlgorithmConstraints.permits:(Ljava/util/Set;Ljava/lang/String;Ljava/security/AlgorithmParameters;)Z
6: ifeq 8
7: iload 2
ireturn
end local 2 8: StackMap locals:
StackMap stack:
iinc 3 1
StackMap locals:
StackMap stack:
9: iload 3
iload 4
if_icmplt 1
10: iconst_m1
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 curves [I
0 11 1 constraints Lsun/security/util/AlgorithmConstraints;
2 8 2 curveId I
MethodParameters:
Name Flags
curves
constraints
boolean contains(int);
descriptor: (I)Z
flags: (0x0000)
Code:
stack=2, locals=6, args_size=2
start local 0 start local 1 0: aload 0
getfield sun.security.ssl.SupportedEllipticCurvesExtension.curveIds:[I
dup
astore 5
arraylength
istore 4
iconst_0
istore 3
goto 5
StackMap locals: sun.security.ssl.SupportedEllipticCurvesExtension int top int int int[]
StackMap stack:
1: aload 5
iload 3
iaload
istore 2
start local 2 2: iload 1
iload 2
if_icmpne 4
3: iconst_1
ireturn
end local 2 4: StackMap locals:
StackMap stack:
iinc 3 1
StackMap locals:
StackMap stack:
5: iload 3
iload 4
if_icmplt 1
6: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lsun/security/ssl/SupportedEllipticCurvesExtension;
0 7 1 index I
2 4 2 curveId I
MethodParameters:
Name Flags
index
int length();
descriptor: ()I
flags: (0x0000)
Code:
stack=3, locals=1, args_size=1
start local 0 0: bipush 6
aload 0
getfield sun.security.ssl.SupportedEllipticCurvesExtension.curveIds:[I
arraylength
iconst_1
ishl
iadd
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/ssl/SupportedEllipticCurvesExtension;
void send(sun.security.ssl.HandshakeOutStream);
descriptor: (Lsun/security/ssl/HandshakeOutStream;)V
flags: (0x0000)
Code:
stack=3, locals=7, args_size=2
start local 0 start local 1 0: aload 1
aload 0
getfield sun.security.ssl.SupportedEllipticCurvesExtension.type:Lsun/security/ssl/ExtensionType;
getfield sun.security.ssl.ExtensionType.id:I
invokevirtual sun.security.ssl.HandshakeOutStream.putInt16:(I)V
1: aload 0
getfield sun.security.ssl.SupportedEllipticCurvesExtension.curveIds:[I
arraylength
iconst_1
ishl
istore 2
start local 2 2: aload 1
iload 2
iconst_2
iadd
invokevirtual sun.security.ssl.HandshakeOutStream.putInt16:(I)V
3: aload 1
iload 2
invokevirtual sun.security.ssl.HandshakeOutStream.putInt16:(I)V
4: aload 0
getfield sun.security.ssl.SupportedEllipticCurvesExtension.curveIds:[I
dup
astore 6
arraylength
istore 5
iconst_0
istore 4
goto 8
StackMap locals: sun.security.ssl.SupportedEllipticCurvesExtension sun.security.ssl.HandshakeOutStream int top int int int[]
StackMap stack:
5: aload 6
iload 4
iaload
istore 3
start local 3 6: aload 1
iload 3
invokevirtual sun.security.ssl.HandshakeOutStream.putInt16:(I)V
end local 3 7: iinc 4 1
StackMap locals:
StackMap stack:
8: iload 4
iload 5
if_icmplt 5
9: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lsun/security/ssl/SupportedEllipticCurvesExtension;
0 10 1 s Lsun/security/ssl/HandshakeOutStream;
2 10 2 k I
6 7 3 curveId I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
s
public java.lang.String toString();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=8, args_size=1
start local 0 0: new java.lang.StringBuilder
dup
invokespecial java.lang.StringBuilder.<init>:()V
astore 1
start local 1 1: aload 1
new java.lang.StringBuilder
dup
ldc "Extension "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield sun.security.ssl.SupportedEllipticCurvesExtension.type:Lsun/security/ssl/ExtensionType;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc ", curve names: {"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
2: iconst_1
istore 2
start local 2 3: aload 0
getfield sun.security.ssl.SupportedEllipticCurvesExtension.curveIds:[I
dup
astore 6
arraylength
istore 5
iconst_0
istore 4
goto 21
StackMap locals: sun.security.ssl.SupportedEllipticCurvesExtension java.lang.StringBuilder int top int int int[]
StackMap stack:
4: aload 6
iload 4
iaload
istore 3
start local 3 5: iload 2
ifeq 8
6: iconst_0
istore 2
7: goto 9
8: StackMap locals: sun.security.ssl.SupportedEllipticCurvesExtension java.lang.StringBuilder int int int int int[]
StackMap stack:
aload 1
ldc ", "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
9: StackMap locals:
StackMap stack:
iload 3
invokestatic sun.security.ssl.SupportedEllipticCurvesExtension.getCurveName:(I)Ljava/lang/String;
astore 7
start local 7 10: aload 7
ifnull 13
11: aload 1
aload 7
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
12: goto 20
StackMap locals: java.lang.String
StackMap stack:
13: iload 3
ldc 65281
if_icmpne 16
14: aload 1
ldc "arbitrary_explicit_prime_curves"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
15: goto 20
StackMap locals:
StackMap stack:
16: iload 3
ldc 65282
if_icmpne 19
17: aload 1
ldc "arbitrary_explicit_char2_curves"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
18: goto 20
19: StackMap locals:
StackMap stack:
aload 1
new java.lang.StringBuilder
dup
ldc "unknown curve "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 3
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
end local 7 end local 3 20: StackMap locals: sun.security.ssl.SupportedEllipticCurvesExtension java.lang.StringBuilder int top int int int[]
StackMap stack:
iinc 4 1
StackMap locals:
StackMap stack:
21: iload 4
iload 5
if_icmplt 4
22: aload 1
ldc "}"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
23: aload 1
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 24 0 this Lsun/security/ssl/SupportedEllipticCurvesExtension;
1 24 1 sb Ljava/lang/StringBuilder;
3 24 2 first Z
5 20 3 curveId I
10 20 7 curveName Ljava/lang/String;
static boolean isSupported(int);
descriptor: (I)Z
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=5, args_size=1
start local 0 0: getstatic sun.security.ssl.SupportedEllipticCurvesExtension.supportedCurveIds:[I
dup
astore 4
arraylength
istore 3
iconst_0
istore 2
goto 5
StackMap locals: int top int int int[]
StackMap stack:
1: aload 4
iload 2
iaload
istore 1
start local 1 2: iload 0
iload 1
if_icmpne 4
3: iconst_1
ireturn
end local 1 4: StackMap locals:
StackMap stack:
iinc 2 1
StackMap locals:
StackMap stack:
5: iload 2
iload 3
if_icmplt 1
6: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 index I
2 4 1 curveId I
MethodParameters:
Name Flags
index
static int getCurveIndex(java.security.spec.ECParameterSpec);
descriptor: (Ljava/security/spec/ECParameterSpec;)I
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=3, args_size=1
start local 0 0: aload 0
invokestatic sun.security.ssl.JsseJce.getNamedCurveOid:(Ljava/security/spec/ECParameterSpec;)Ljava/lang/String;
astore 1
start local 1 1: aload 1
ifnonnull 3
2: iconst_m1
ireturn
3: StackMap locals: java.lang.String
StackMap stack:
getstatic sun.security.ssl.SupportedEllipticCurvesExtension.oidToIdMap:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.Integer
astore 2
start local 2 4: aload 2
ifnonnull 5
iconst_m1
goto 6
StackMap locals: java.lang.Integer
StackMap stack:
5: aload 2
invokevirtual java.lang.Integer.intValue:()I
StackMap locals:
StackMap stack: int
6: ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 params Ljava/security/spec/ECParameterSpec;
1 7 1 oid Ljava/lang/String;
4 7 2 n Ljava/lang/Integer;
MethodParameters:
Name Flags
params
static java.lang.String getCurveOid(int);
descriptor: (I)Ljava/lang/String;
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: getstatic sun.security.ssl.SupportedEllipticCurvesExtension.idToOidMap:Ljava/util/Map;
iload 0
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.String
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 index I
MethodParameters:
Name Flags
index
static java.security.spec.ECGenParameterSpec getECGenParamSpec(int);
descriptor: (I)Ljava/security/spec/ECGenParameterSpec;
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=3, args_size=1
start local 0 0: getstatic sun.security.ssl.SupportedEllipticCurvesExtension.idToParams:Ljava/util/Map;
iload 0
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.security.AlgorithmParameters
astore 1
start local 1 1: aload 1
ldc Ljava/security/spec/ECGenParameterSpec;
invokevirtual java.security.AlgorithmParameters.getParameterSpec:(Ljava/lang/Class;)Ljava/security/spec/AlgorithmParameterSpec;
checkcast java.security.spec.ECGenParameterSpec
2: areturn
3: StackMap locals: int java.security.AlgorithmParameters
StackMap stack: java.security.spec.InvalidParameterSpecException
pop
4: iload 0
invokestatic sun.security.ssl.SupportedEllipticCurvesExtension.getCurveOid:(I)Ljava/lang/String;
astore 2
start local 2 5: new java.security.spec.ECGenParameterSpec
dup
aload 2
invokespecial java.security.spec.ECGenParameterSpec.<init>:(Ljava/lang/String;)V
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 index I
1 6 1 params Ljava/security/AlgorithmParameters;
5 6 2 curveOid Ljava/lang/String;
Exception table:
from to target type
1 2 3 Class java.security.spec.InvalidParameterSpecException
MethodParameters:
Name Flags
index
private static java.lang.String getCurveName(int);
descriptor: (I)Ljava/lang/String;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=5, args_size=1
start local 0 0: invokestatic sun.security.ssl.SupportedEllipticCurvesExtension$NamedEllipticCurve.values:()[Lsun/security/ssl/SupportedEllipticCurvesExtension$NamedEllipticCurve;
dup
astore 4
arraylength
istore 3
iconst_0
istore 2
goto 5
StackMap locals: int top int int sun.security.ssl.SupportedEllipticCurvesExtension$NamedEllipticCurve[]
StackMap stack:
1: aload 4
iload 2
aaload
astore 1
start local 1 2: aload 1
getfield sun.security.ssl.SupportedEllipticCurvesExtension$NamedEllipticCurve.id:I
iload 0
if_icmpne 4
3: aload 1
getfield sun.security.ssl.SupportedEllipticCurvesExtension$NamedEllipticCurve.name:Ljava/lang/String;
areturn
end local 1 4: StackMap locals:
StackMap stack:
iinc 2 1
StackMap locals:
StackMap stack:
5: iload 2
iload 3
if_icmplt 1
6: aconst_null
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 index I
2 4 1 namedCurve Lsun/security/ssl/SupportedEllipticCurvesExtension$NamedEllipticCurve;
MethodParameters:
Name Flags
index
}
SourceFile: "HelloExtensions.java"
NestMembers:
sun.security.ssl.SupportedEllipticCurvesExtension$NamedEllipticCurve
InnerClasses:
private final NamedEllipticCurve = sun.security.ssl.SupportedEllipticCurvesExtension$NamedEllipticCurve of sun.security.ssl.SupportedEllipticCurvesExtension