public final class io.vertx.ext.auth.impl.jose.JWT
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: io.vertx.ext.auth.impl.jose.JWT
super_class: java.lang.Object
{
private final io.vertx.core.impl.logging.Logger logger;
descriptor: Lio/vertx/core/impl/logging/Logger;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private static final java.util.Random RND;
descriptor: Ljava/util/Random;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.nio.charset.Charset UTF8;
descriptor: Ljava/nio/charset/Charset;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.util.Base64$Encoder urlEncoder;
descriptor: Ljava/util/Base64$Encoder;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.util.Base64$Decoder urlDecoder;
descriptor: Ljava/util/Base64$Decoder;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.util.Base64$Decoder decoder;
descriptor: Ljava/util/Base64$Decoder;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private boolean allowEmbeddedKey;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private final java.util.Map<java.lang.String, java.util.List<io.vertx.ext.auth.impl.jose.Crypto>> SIGN;
descriptor: Ljava/util/Map;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Lio/vertx/ext/auth/impl/jose/Crypto;>;>;
private final java.util.Map<java.lang.String, java.util.List<io.vertx.ext.auth.impl.jose.Crypto>> VERIFY;
descriptor: Ljava/util/Map;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Lio/vertx/ext/auth/impl/jose/Crypto;>;>;
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: new java.util.Random
dup
invokespecial java.util.Random.<init>:()V
putstatic io.vertx.ext.auth.impl.jose.JWT.RND:Ljava/util/Random;
1: getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
putstatic io.vertx.ext.auth.impl.jose.JWT.UTF8:Ljava/nio/charset/Charset;
2: invokestatic java.util.Base64.getUrlEncoder:()Ljava/util/Base64$Encoder;
invokevirtual java.util.Base64$Encoder.withoutPadding:()Ljava/util/Base64$Encoder;
putstatic io.vertx.ext.auth.impl.jose.JWT.urlEncoder:Ljava/util/Base64$Encoder;
3: invokestatic java.util.Base64.getUrlDecoder:()Ljava/util/Base64$Decoder;
putstatic io.vertx.ext.auth.impl.jose.JWT.urlDecoder:Ljava/util/Base64$Decoder;
4: invokestatic java.util.Base64.getDecoder:()Ljava/util/Base64$Decoder;
putstatic io.vertx.ext.auth.impl.jose.JWT.decoder:Ljava/util/Base64$Decoder;
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
ldc Lio/vertx/ext/auth/impl/jose/JWT;
invokestatic io.vertx.core.impl.logging.LoggerFactory.getLogger:(Ljava/lang/Class;)Lio/vertx/core/impl/logging/Logger;
putfield io.vertx.ext.auth.impl.jose.JWT.logger:Lio/vertx/core/impl/logging/Logger;
2: aload 0
iconst_0
putfield io.vertx.ext.auth.impl.jose.JWT.allowEmbeddedKey:Z
3: aload 0
new java.util.concurrent.ConcurrentHashMap
dup
invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
putfield io.vertx.ext.auth.impl.jose.JWT.SIGN:Ljava/util/Map;
4: aload 0
new java.util.concurrent.ConcurrentHashMap
dup
invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
putfield io.vertx.ext.auth.impl.jose.JWT.VERIFY:Ljava/util/Map;
5: aload 0
getfield io.vertx.ext.auth.impl.jose.JWT.SIGN:Ljava/util/Map;
ldc "none"
new io.vertx.ext.auth.impl.jose.CryptoNone
dup
invokespecial io.vertx.ext.auth.impl.jose.CryptoNone.<init>:()V
invokestatic java.util.Collections.singletonList:(Ljava/lang/Object;)Ljava/util/List;
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
6: aload 0
getfield io.vertx.ext.auth.impl.jose.JWT.VERIFY:Ljava/util/Map;
ldc "none"
new io.vertx.ext.auth.impl.jose.CryptoNone
dup
invokespecial io.vertx.ext.auth.impl.jose.CryptoNone.<init>:()V
invokestatic java.util.Collections.singletonList:(Ljava/lang/Object;)Ljava/util/List;
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
7: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lio/vertx/ext/auth/impl/jose/JWT;
public io.vertx.ext.auth.impl.jose.JWT addJWK(io.vertx.ext.auth.impl.jose.JWK);
descriptor: (Lio/vertx/ext/auth/impl/jose/JWK;)Lio/vertx/ext/auth/impl/jose/JWT;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=3, args_size=2
start local 0 start local 1 0: aconst_null
astore 2
start local 2 1: aload 1
iconst_2
invokevirtual io.vertx.ext.auth.impl.jose.JWK.isFor:(I)Z
ifeq 4
2: aload 0
getfield io.vertx.ext.auth.impl.jose.JWT.VERIFY:Ljava/util/Map;
aload 1
invokevirtual io.vertx.ext.auth.impl.jose.JWK.getAlgorithm:()Ljava/lang/String;
invokedynamic apply()Ljava/util/function/Function;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Object;)Ljava/lang/Object;
io/vertx/ext/auth/impl/jose/JWT.lambda$0(Ljava/lang/String;)Ljava/util/List; (6)
(Ljava/lang/String;)Ljava/util/List;
invokeinterface java.util.Map.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
checkcast java.util.List
astore 2
3: aload 0
aload 2
aload 1
invokevirtual io.vertx.ext.auth.impl.jose.JWT.addJWK:(Ljava/util/List;Lio/vertx/ext/auth/impl/jose/JWK;)V
4: StackMap locals: java.util.List
StackMap stack:
aload 1
iconst_1
invokevirtual io.vertx.ext.auth.impl.jose.JWK.isFor:(I)Z
ifeq 7
5: aload 0
getfield io.vertx.ext.auth.impl.jose.JWT.SIGN:Ljava/util/Map;
aload 1
invokevirtual io.vertx.ext.auth.impl.jose.JWK.getAlgorithm:()Ljava/lang/String;
invokedynamic apply()Ljava/util/function/Function;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Object;)Ljava/lang/Object;
io/vertx/ext/auth/impl/jose/JWT.lambda$1(Ljava/lang/String;)Ljava/util/List; (6)
(Ljava/lang/String;)Ljava/util/List;
invokeinterface java.util.Map.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
checkcast java.util.List
astore 2
6: aload 0
aload 2
aload 1
invokevirtual io.vertx.ext.auth.impl.jose.JWT.addJWK:(Ljava/util/List;Lio/vertx/ext/auth/impl/jose/JWK;)V
7: StackMap locals:
StackMap stack:
aload 2
ifnonnull 9
8: new java.lang.IllegalStateException
dup
new java.lang.StringBuilder
dup
ldc "unknown JWK use: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual io.vertx.ext.auth.impl.jose.JWK.getUse:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
9: StackMap locals:
StackMap stack:
aload 0
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lio/vertx/ext/auth/impl/jose/JWT;
0 10 1 jwk Lio/vertx/ext/auth/impl/jose/JWK;
1 10 2 current Ljava/util/List<Lio/vertx/ext/auth/impl/jose/Crypto;>;
MethodParameters:
Name Flags
jwk
public io.vertx.ext.auth.impl.jose.JWT allowEmbeddedKey(boolean);
descriptor: (Z)Lio/vertx/ext/auth/impl/jose/JWT;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
iload 1
putfield io.vertx.ext.auth.impl.jose.JWT.allowEmbeddedKey:Z
1: aload 0
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/vertx/ext/auth/impl/jose/JWT;
0 2 1 allowEmbeddedKey Z
MethodParameters:
Name Flags
allowEmbeddedKey
private void addJWK(java.util.List<io.vertx.ext.auth.impl.jose.Crypto>, io.vertx.ext.auth.impl.jose.JWK);
descriptor: (Ljava/util/List;Lio/vertx/ext/auth/impl/jose/JWK;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=5, args_size=3
start local 0 start local 1 start local 2 0: iconst_0
istore 3
start local 3 1: iconst_0
istore 4
start local 4 2: goto 8
3: StackMap locals: int int
StackMap stack:
aload 1
iload 4
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast io.vertx.ext.auth.impl.jose.Crypto
invokeinterface io.vertx.ext.auth.impl.jose.Crypto.getLabel:()Ljava/lang/String;
aload 2
invokevirtual io.vertx.ext.auth.impl.jose.JWK.getLabel:()Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 7
4: aload 1
iload 4
aload 2
invokeinterface java.util.List.set:(ILjava/lang/Object;)Ljava/lang/Object;
pop
5: iconst_1
istore 3
6: goto 9
7: StackMap locals:
StackMap stack:
iinc 4 1
StackMap locals:
StackMap stack:
8: iload 4
aload 1
invokeinterface java.util.List.size:()I
if_icmplt 3
end local 4 9: StackMap locals:
StackMap stack:
iload 3
ifne 11
10: aload 1
aload 2
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
11: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lio/vertx/ext/auth/impl/jose/JWT;
0 12 1 current Ljava/util/List<Lio/vertx/ext/auth/impl/jose/Crypto;>;
0 12 2 jwk Lio/vertx/ext/auth/impl/jose/JWK;
1 12 3 replaced Z
2 9 4 i I
Signature: (Ljava/util/List<Lio/vertx/ext/auth/impl/jose/Crypto;>;Lio/vertx/ext/auth/impl/jose/JWK;)V
MethodParameters:
Name Flags
current
jwk
public static io.vertx.core.json.JsonObject parse(byte[]);
descriptor: ([B)Lio/vertx/core/json/JsonObject;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: new java.lang.String
dup
aload 0
getstatic io.vertx.ext.auth.impl.jose.JWT.UTF8:Ljava/nio/charset/Charset;
invokespecial java.lang.String.<init>:([BLjava/nio/charset/Charset;)V
invokestatic io.vertx.ext.auth.impl.jose.JWT.parse:(Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 token [B
MethodParameters:
Name Flags
token final
public static io.vertx.core.json.JsonObject parse(java.lang.String);
descriptor: (Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=7, args_size=1
start local 0 0: aload 0
ldc "\\."
invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
astore 1
start local 1 1: aload 1
arraylength
iconst_2
if_icmplt 2
aload 1
arraylength
iconst_3
if_icmple 3
2: StackMap locals: java.lang.String[]
StackMap stack:
new java.lang.RuntimeException
dup
new java.lang.StringBuilder
dup
ldc "Not enough or too many segments ["
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
arraylength
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc "]"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals:
StackMap stack:
aload 1
iconst_0
aaload
astore 2
start local 2 4: aload 1
iconst_1
aaload
astore 3
start local 3 5: aload 1
arraylength
iconst_2
if_icmpne 6
aconst_null
goto 7
StackMap locals: java.lang.String java.lang.String
StackMap stack:
6: aload 1
iconst_2
aaload
StackMap locals:
StackMap stack: java.lang.String
7: astore 4
start local 4 8: new io.vertx.core.json.JsonObject
dup
new java.lang.String
dup
aload 2
invokestatic io.vertx.ext.auth.impl.jose.JWT.base64urlDecode:(Ljava/lang/String;)[B
getstatic io.vertx.ext.auth.impl.jose.JWT.UTF8:Ljava/nio/charset/Charset;
invokespecial java.lang.String.<init>:([BLjava/nio/charset/Charset;)V
invokespecial io.vertx.core.json.JsonObject.<init>:(Ljava/lang/String;)V
astore 5
start local 5 9: new io.vertx.core.json.JsonObject
dup
new java.lang.String
dup
aload 3
invokestatic io.vertx.ext.auth.impl.jose.JWT.base64urlDecode:(Ljava/lang/String;)[B
getstatic io.vertx.ext.auth.impl.jose.JWT.UTF8:Ljava/nio/charset/Charset;
invokespecial java.lang.String.<init>:([BLjava/nio/charset/Charset;)V
invokespecial io.vertx.core.json.JsonObject.<init>:(Ljava/lang/String;)V
astore 6
start local 6 10: new io.vertx.core.json.JsonObject
dup
invokespecial io.vertx.core.json.JsonObject.<init>:()V
11: ldc "header"
aload 5
invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
12: ldc "payload"
aload 6
invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
13: ldc "signatureBase"
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
ldc "."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
14: ldc "signature"
aload 4
invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
15: areturn
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 16 0 token Ljava/lang/String;
1 16 1 segments [Ljava/lang/String;
4 16 2 headerSeg Ljava/lang/String;
5 16 3 payloadSeg Ljava/lang/String;
8 16 4 signatureSeg Ljava/lang/String;
9 16 5 header Lio/vertx/core/json/JsonObject;
10 16 6 payload Lio/vertx/core/json/JsonObject;
MethodParameters:
Name Flags
token final
public io.vertx.core.json.JsonObject decode(java.lang.String);
descriptor: (Ljava/lang/String;)Lio/vertx/core/json/JsonObject;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
iconst_0
invokevirtual io.vertx.ext.auth.impl.jose.JWT.decode:(Ljava/lang/String;Z)Lio/vertx/core/json/JsonObject;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/vertx/ext/auth/impl/jose/JWT;
0 1 1 token Ljava/lang/String;
MethodParameters:
Name Flags
token final
public io.vertx.core.json.JsonObject decode(java.lang.String, boolean);
descriptor: (Ljava/lang/String;Z)Lio/vertx/core/json/JsonObject;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=18, args_size=3
start local 0 start local 1 start local 2 0: aload 1
ldc "\\."
invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
astore 3
start local 3 1: aload 3
arraylength
iconst_2
if_icmpge 3
2: new java.lang.IllegalStateException
dup
ldc "Invalid format for JWT"
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals: java.lang.String[]
StackMap stack:
aload 3
iconst_0
aaload
astore 4
start local 4 4: aload 3
iconst_1
aaload
astore 5
start local 5 5: aload 3
arraylength
iconst_3
if_icmpne 6
aload 3
iconst_2
aaload
goto 7
StackMap locals: java.lang.String java.lang.String
StackMap stack:
6: aconst_null
StackMap locals:
StackMap stack: java.lang.String
7: astore 6
start local 6 8: ldc ""
aload 6
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 10
9: new java.lang.IllegalStateException
dup
ldc "Signature is required"
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
10: StackMap locals: java.lang.String
StackMap stack:
new io.vertx.core.json.JsonObject
dup
aload 4
invokestatic io.vertx.ext.auth.impl.jose.JWT.base64urlDecode:(Ljava/lang/String;)[B
invokestatic io.vertx.core.buffer.Buffer.buffer:([B)Lio/vertx/core/buffer/Buffer;
invokespecial io.vertx.core.json.JsonObject.<init>:(Lio/vertx/core/buffer/Buffer;)V
astore 7
start local 7 11: aload 0
invokevirtual io.vertx.ext.auth.impl.jose.JWT.isUnsecure:()Z
istore 8
start local 8 12: iload 8
ifeq 15
13: aload 0
getfield io.vertx.ext.auth.impl.jose.JWT.allowEmbeddedKey:Z
ifne 17
aload 3
arraylength
iconst_2
if_icmpeq 17
14: new java.lang.IllegalStateException
dup
ldc "JWT is in unsecured mode but token is signed."
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
15: StackMap locals: io.vertx.core.json.JsonObject int
StackMap stack:
aload 0
getfield io.vertx.ext.auth.impl.jose.JWT.allowEmbeddedKey:Z
ifne 17
aload 3
arraylength
iconst_3
if_icmpeq 17
16: new java.lang.IllegalStateException
dup
ldc "JWT is in secure mode but token is not signed."
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
17: StackMap locals:
StackMap stack:
new io.vertx.core.json.JsonObject
dup
aload 5
invokestatic io.vertx.ext.auth.impl.jose.JWT.base64urlDecode:(Ljava/lang/String;)[B
invokestatic io.vertx.core.buffer.Buffer.buffer:([B)Lio/vertx/core/buffer/Buffer;
invokespecial io.vertx.core.json.JsonObject.<init>:(Lio/vertx/core/buffer/Buffer;)V
astore 9
start local 9 18: aload 7
ldc "alg"
invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
astore 10
start local 10 19: iload 8
ifne 21
ldc "none"
aload 10
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 21
20: new java.lang.IllegalStateException
dup
ldc "Algorithm \"none\" not allowed"
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
21: StackMap locals: io.vertx.core.json.JsonObject java.lang.String
StackMap stack:
aload 0
getfield io.vertx.ext.auth.impl.jose.JWT.allowEmbeddedKey:Z
ifeq 41
aload 7
ldc "x5c"
invokevirtual io.vertx.core.json.JsonObject.containsKey:(Ljava/lang/String;)Z
ifeq 41
22: aload 6
ifnonnull 24
23: new java.lang.IllegalStateException
dup
ldc "missing signature segment"
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
24: StackMap locals:
StackMap stack:
aload 7
ldc "x5c"
invokevirtual io.vertx.core.json.JsonObject.getJsonArray:(Ljava/lang/String;)Lio/vertx/core/json/JsonArray;
astore 11
start local 11 25: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 12
start local 12 26: aload 11
ifnull 27
aload 11
invokevirtual io.vertx.core.json.JsonArray.size:()I
ifne 28
27: StackMap locals: io.vertx.core.json.JsonArray java.util.List
StackMap stack:
new java.lang.IllegalStateException
dup
ldc "x5c chain is null or empty"
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
28: StackMap locals:
StackMap stack:
iconst_0
istore 13
start local 13 29: goto 32
30: StackMap locals: int
StackMap stack:
aload 12
getstatic io.vertx.ext.auth.impl.jose.JWT.decoder:Ljava/util/Base64$Decoder;
aload 11
iload 13
invokevirtual io.vertx.core.json.JsonArray.getString:(I)Ljava/lang/String;
getstatic io.vertx.ext.auth.impl.jose.JWT.UTF8:Ljava/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
invokevirtual java.util.Base64$Decoder.decode:([B)[B
invokestatic io.vertx.ext.auth.impl.jose.JWS.parseX5c:([B)Ljava/security/cert/X509Certificate;
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
31: iinc 13 1
StackMap locals:
StackMap stack:
32: iload 13
aload 11
invokevirtual io.vertx.core.json.JsonArray.size:()I
if_icmplt 30
end local 13 33: aload 12
iconst_0
aconst_null
invokestatic io.vertx.ext.auth.impl.CertificateHelper.checkValidity:(Ljava/util/List;ZLjava/util/List;)V
34: aload 10
aload 12
iconst_0
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast java.security.cert.X509Certificate
aload 6
invokestatic io.vertx.ext.auth.impl.jose.JWT.base64urlDecode:(Ljava/lang/String;)[B
new java.lang.StringBuilder
dup
aload 4
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 5
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
getstatic io.vertx.ext.auth.impl.jose.JWT.UTF8:Ljava/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
invokestatic io.vertx.ext.auth.impl.jose.JWS.verifySignature:(Ljava/lang/String;Ljava/security/cert/X509Certificate;[B[B)Z
ifeq 38
35: iload 2
ifeq 36
new io.vertx.core.json.JsonObject
dup
invokespecial io.vertx.core.json.JsonObject.<init>:()V
ldc "header"
aload 7
invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
ldc "payload"
aload 9
invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
goto 37
StackMap locals:
StackMap stack:
36: aload 9
StackMap locals:
StackMap stack: io.vertx.core.json.JsonObject
37: areturn
38: StackMap locals:
StackMap stack:
new java.lang.RuntimeException
dup
ldc "Signature verification failed"
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
end local 12 end local 11 39: StackMap locals: io.vertx.ext.auth.impl.jose.JWT java.lang.String int java.lang.String[] java.lang.String java.lang.String java.lang.String io.vertx.core.json.JsonObject int io.vertx.core.json.JsonObject java.lang.String
StackMap stack: java.security.GeneralSecurityException
astore 11
start local 11 40: new java.lang.RuntimeException
dup
ldc "Signature verification failed"
aload 11
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 11 41: StackMap locals:
StackMap stack:
aload 0
getfield io.vertx.ext.auth.impl.jose.JWT.VERIFY:Ljava/util/Map;
aload 10
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.List
astore 11
start local 11 42: aload 11
ifnull 43
aload 11
invokeinterface java.util.List.size:()I
ifne 44
43: StackMap locals: java.util.List
StackMap stack:
new io.vertx.ext.auth.NoSuchKeyIdException
dup
aload 10
invokespecial io.vertx.ext.auth.NoSuchKeyIdException.<init>:(Ljava/lang/String;)V
athrow
44: StackMap locals:
StackMap stack:
iload 8
ifne 64
45: aload 6
ifnonnull 47
46: new java.lang.IllegalStateException
dup
ldc "missing signature segment"
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
47: StackMap locals:
StackMap stack:
aload 6
invokestatic io.vertx.ext.auth.impl.jose.JWT.base64urlDecode:(Ljava/lang/String;)[B
astore 12
start local 12 48: new java.lang.StringBuilder
dup
aload 4
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 5
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
getstatic io.vertx.ext.auth.impl.jose.JWT.UTF8:Ljava/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
astore 13
start local 13 49: aload 7
ldc "kid"
invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
astore 14
start local 14 50: iconst_0
istore 15
start local 15 51: aload 11
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 17
goto 60
StackMap locals: io.vertx.ext.auth.impl.jose.JWT java.lang.String int java.lang.String[] java.lang.String java.lang.String java.lang.String io.vertx.core.json.JsonObject int io.vertx.core.json.JsonObject java.lang.String java.util.List byte[] byte[] java.lang.String int top java.util.Iterator
StackMap stack:
52: aload 17
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast io.vertx.ext.auth.impl.jose.Crypto
astore 16
start local 16 53: aload 14
ifnull 55
aload 16
invokeinterface io.vertx.ext.auth.impl.jose.Crypto.getId:()Ljava/lang/String;
ifnull 55
aload 14
aload 16
invokeinterface io.vertx.ext.auth.impl.jose.Crypto.getId:()Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 55
54: goto 60
55: StackMap locals: io.vertx.ext.auth.impl.jose.JWT java.lang.String int java.lang.String[] java.lang.String java.lang.String java.lang.String io.vertx.core.json.JsonObject int io.vertx.core.json.JsonObject java.lang.String java.util.List byte[] byte[] java.lang.String int io.vertx.ext.auth.impl.jose.Crypto java.util.Iterator
StackMap stack:
iconst_1
istore 15
56: aload 16
aload 12
aload 13
invokeinterface io.vertx.ext.auth.impl.jose.Crypto.verify:([B[B)Z
ifeq 60
57: iload 2
ifeq 58
new io.vertx.core.json.JsonObject
dup
invokespecial io.vertx.core.json.JsonObject.<init>:()V
ldc "header"
aload 7
invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
ldc "payload"
aload 9
invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
goto 59
StackMap locals:
StackMap stack:
58: aload 9
StackMap locals:
StackMap stack: io.vertx.core.json.JsonObject
59: areturn
end local 16 60: StackMap locals: io.vertx.ext.auth.impl.jose.JWT java.lang.String int java.lang.String[] java.lang.String java.lang.String java.lang.String io.vertx.core.json.JsonObject int io.vertx.core.json.JsonObject java.lang.String java.util.List byte[] byte[] java.lang.String int top java.util.Iterator
StackMap stack:
aload 17
invokeinterface java.util.Iterator.hasNext:()Z
ifne 52
61: iload 15
ifeq 63
62: new java.lang.RuntimeException
dup
ldc "Signature verification failed"
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
63: StackMap locals: io.vertx.ext.auth.impl.jose.JWT java.lang.String int java.lang.String[] java.lang.String java.lang.String java.lang.String io.vertx.core.json.JsonObject int io.vertx.core.json.JsonObject java.lang.String java.util.List byte[] byte[] java.lang.String int
StackMap stack:
new io.vertx.ext.auth.NoSuchKeyIdException
dup
aload 10
aload 14
invokespecial io.vertx.ext.auth.NoSuchKeyIdException.<init>:(Ljava/lang/String;Ljava/lang/String;)V
athrow
end local 15 end local 14 end local 13 end local 12 64: StackMap locals: io.vertx.ext.auth.impl.jose.JWT java.lang.String int java.lang.String[] java.lang.String java.lang.String java.lang.String io.vertx.core.json.JsonObject int io.vertx.core.json.JsonObject java.lang.String java.util.List
StackMap stack:
iload 2
ifeq 65
new io.vertx.core.json.JsonObject
dup
invokespecial io.vertx.core.json.JsonObject.<init>:()V
ldc "header"
aload 7
invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
ldc "payload"
aload 9
invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
goto 66
StackMap locals:
StackMap stack:
65: aload 9
StackMap locals:
StackMap stack: io.vertx.core.json.JsonObject
66: areturn
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 67 0 this Lio/vertx/ext/auth/impl/jose/JWT;
0 67 1 token Ljava/lang/String;
0 67 2 full Z
1 67 3 segments [Ljava/lang/String;
4 67 4 headerSeg Ljava/lang/String;
5 67 5 payloadSeg Ljava/lang/String;
8 67 6 signatureSeg Ljava/lang/String;
11 67 7 header Lio/vertx/core/json/JsonObject;
12 67 8 unsecure Z
18 67 9 payload Lio/vertx/core/json/JsonObject;
19 67 10 alg Ljava/lang/String;
25 39 11 chain Lio/vertx/core/json/JsonArray;
26 39 12 certChain Ljava/util/List<Ljava/security/cert/X509Certificate;>;
29 33 13 i I
40 41 11 e Ljava/security/GeneralSecurityException;
42 67 11 cryptos Ljava/util/List<Lio/vertx/ext/auth/impl/jose/Crypto;>;
48 64 12 payloadInput [B
49 64 13 signingInput [B
50 64 14 kid Ljava/lang/String;
51 64 15 hasKey Z
53 60 16 c Lio/vertx/ext/auth/impl/jose/Crypto;
Exception table:
from to target type
24 37 39 Class java.security.cert.CertificateException
38 39 39 Class java.security.cert.CertificateException
24 37 39 Class java.security.NoSuchAlgorithmException
38 39 39 Class java.security.NoSuchAlgorithmException
24 37 39 Class java.security.InvalidKeyException
38 39 39 Class java.security.InvalidKeyException
24 37 39 Class java.security.SignatureException
38 39 39 Class java.security.SignatureException
24 37 39 Class java.security.InvalidAlgorithmParameterException
38 39 39 Class java.security.InvalidAlgorithmParameterException
24 37 39 Class java.security.NoSuchProviderException
38 39 39 Class java.security.NoSuchProviderException
MethodParameters:
Name Flags
token final
full
public boolean isScopeGranted(io.vertx.core.json.JsonObject, io.vertx.ext.auth.JWTOptions);
descriptor: (Lio/vertx/core/json/JsonObject;Lio/vertx/ext/auth/JWTOptions;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 1
ifnonnull 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 2
invokevirtual io.vertx.ext.auth.JWTOptions.getScopes:()Ljava/util/List;
ifnull 3
aload 2
invokevirtual io.vertx.ext.auth.JWTOptions.getScopes:()Ljava/util/List;
invokeinterface java.util.List.isEmpty:()Z
ifeq 4
3: StackMap locals:
StackMap stack:
iconst_1
ireturn
4: StackMap locals:
StackMap stack:
aload 1
ldc "scope"
invokevirtual io.vertx.core.json.JsonObject.getValue:(Ljava/lang/String;)Ljava/lang/Object;
ifnonnull 8
5: aload 0
getfield io.vertx.ext.auth.impl.jose.JWT.logger:Lio/vertx/core/impl/logging/Logger;
invokeinterface io.vertx.core.impl.logging.Logger.isDebugEnabled:()Z
ifeq 7
6: aload 0
getfield io.vertx.ext.auth.impl.jose.JWT.logger:Lio/vertx/core/impl/logging/Logger;
ldc "Invalid JWT: scope claim is required"
invokeinterface io.vertx.core.impl.logging.Logger.debug:(Ljava/lang/Object;)V
7: StackMap locals:
StackMap stack:
iconst_0
ireturn
8: StackMap locals:
StackMap stack:
aload 1
ldc "scope"
invokevirtual io.vertx.core.json.JsonObject.getValue:(Ljava/lang/String;)Ljava/lang/Object;
instanceof java.lang.String
ifeq 16
9: new io.vertx.core.json.JsonArray
dup
10: aload 1
ldc "scope"
invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
11: aload 2
invokevirtual io.vertx.ext.auth.JWTOptions.getScopeDelimiter:()Ljava/lang/String;
invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
12: invokestatic java.util.stream.Stream.of:([Ljava/lang/Object;)Ljava/util/stream/Stream;
13: invokestatic java.util.stream.Collectors.toList:()Ljava/util/stream/Collector;
invokeinterface java.util.stream.Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
checkcast java.util.List
14: invokespecial io.vertx.core.json.JsonArray.<init>:(Ljava/util/List;)V
astore 3
start local 3 15: goto 17
end local 3 16: StackMap locals:
StackMap stack:
aload 1
ldc "scope"
invokevirtual io.vertx.core.json.JsonObject.getJsonArray:(Ljava/lang/String;)Lio/vertx/core/json/JsonArray;
astore 3
start local 3 17: StackMap locals: io.vertx.core.json.JsonArray
StackMap stack:
aload 3
invokevirtual io.vertx.core.json.JsonArray.getList:()Ljava/util/List;
aload 2
invokevirtual io.vertx.ext.auth.JWTOptions.getScopes:()Ljava/util/List;
invokeinterface java.util.List.containsAll:(Ljava/util/Collection;)Z
ifne 21
18: aload 0
getfield io.vertx.ext.auth.impl.jose.JWT.logger:Lio/vertx/core/impl/logging/Logger;
invokeinterface io.vertx.core.impl.logging.Logger.isDebugEnabled:()Z
ifeq 20
19: aload 0
getfield io.vertx.ext.auth.impl.jose.JWT.logger:Lio/vertx/core/impl/logging/Logger;
ldc "Invalid JWT scopes expected[%s] actual[%s]"
iconst_2
anewarray java.lang.Object
dup
iconst_0
aload 2
invokevirtual io.vertx.ext.auth.JWTOptions.getScopes:()Ljava/util/List;
aastore
dup
iconst_1
aload 3
invokevirtual io.vertx.core.json.JsonArray.getList:()Ljava/util/List;
aastore
invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokeinterface io.vertx.core.impl.logging.Logger.debug:(Ljava/lang/Object;)V
20: StackMap locals:
StackMap stack:
iconst_0
ireturn
21: StackMap locals:
StackMap stack:
iconst_1
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 this Lio/vertx/ext/auth/impl/jose/JWT;
0 22 1 jwt Lio/vertx/core/json/JsonObject;
0 22 2 options Lio/vertx/ext/auth/JWTOptions;
15 16 3 target Lio/vertx/core/json/JsonArray;
17 22 3 target Lio/vertx/core/json/JsonArray;
MethodParameters:
Name Flags
jwt
options
public java.lang.String sign(io.vertx.core.json.JsonObject, io.vertx.ext.auth.JWTOptions);
descriptor: (Lio/vertx/core/json/JsonObject;Lio/vertx/ext/auth/JWTOptions;)Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=13, args_size=3
start local 0 start local 1 start local 2 0: aload 2
invokevirtual io.vertx.ext.auth.JWTOptions.getAlgorithm:()Ljava/lang/String;
astore 3
start local 3 1: aload 0
getfield io.vertx.ext.auth.impl.jose.JWT.SIGN:Ljava/util/Map;
aload 3
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.List
astore 4
start local 4 2: aload 4
ifnull 3
aload 4
invokeinterface java.util.List.size:()I
ifne 4
3: StackMap locals: java.lang.String java.util.List
StackMap stack:
new java.lang.RuntimeException
dup
new java.lang.StringBuilder
dup
ldc "Algorithm not supported: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
aload 4
getstatic io.vertx.ext.auth.impl.jose.JWT.RND:Ljava/util/Random;
aload 4
invokeinterface java.util.List.size:()I
invokevirtual java.util.Random.nextInt:(I)I
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast io.vertx.ext.auth.impl.jose.Crypto
astore 5
start local 5 5: new io.vertx.core.json.JsonObject
dup
invokespecial io.vertx.core.json.JsonObject.<init>:()V
6: aload 2
invokevirtual io.vertx.ext.auth.JWTOptions.getHeader:()Lio/vertx/core/json/JsonObject;
invokevirtual io.vertx.core.json.JsonObject.mergeIn:(Lio/vertx/core/json/JsonObject;)Lio/vertx/core/json/JsonObject;
7: ldc "typ"
ldc "JWT"
invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
8: ldc "alg"
aload 3
invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
9: astore 6
start local 6 10: aload 5
invokeinterface io.vertx.ext.auth.impl.jose.Crypto.getId:()Ljava/lang/String;
ifnull 12
11: aload 6
ldc "kid"
aload 5
invokeinterface io.vertx.ext.auth.impl.jose.Crypto.getId:()Ljava/lang/String;
invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
pop
12: StackMap locals: io.vertx.ext.auth.impl.jose.Crypto io.vertx.core.json.JsonObject
StackMap stack:
invokestatic java.lang.System.currentTimeMillis:()J
ldc 1000
ldiv
lstore 7
start local 7 13: aload 2
invokevirtual io.vertx.ext.auth.JWTOptions.isNoTimestamp:()Z
ifne 15
14: aload 1
ldc "iat"
aload 1
ldc "iat"
lload 7
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
invokevirtual io.vertx.core.json.JsonObject.getValue:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
pop
15: StackMap locals: long
StackMap stack:
aload 2
invokevirtual io.vertx.ext.auth.JWTOptions.getExpiresInSeconds:()I
ifle 17
16: aload 1
ldc "exp"
lload 7
aload 2
invokevirtual io.vertx.ext.auth.JWTOptions.getExpiresInSeconds:()I
i2l
ladd
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
pop
17: StackMap locals:
StackMap stack:
aload 2
invokevirtual io.vertx.ext.auth.JWTOptions.getAudience:()Ljava/util/List;
ifnull 22
aload 2
invokevirtual io.vertx.ext.auth.JWTOptions.getAudience:()Ljava/util/List;
invokeinterface java.util.List.size:()I
iconst_1
if_icmplt 22
18: aload 2
invokevirtual io.vertx.ext.auth.JWTOptions.getAudience:()Ljava/util/List;
invokeinterface java.util.List.size:()I
iconst_1
if_icmple 21
19: aload 1
ldc "aud"
new io.vertx.core.json.JsonArray
dup
aload 2
invokevirtual io.vertx.ext.auth.JWTOptions.getAudience:()Ljava/util/List;
invokespecial io.vertx.core.json.JsonArray.<init>:(Ljava/util/List;)V
invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
pop
20: goto 22
21: StackMap locals:
StackMap stack:
aload 1
ldc "aud"
aload 2
invokevirtual io.vertx.ext.auth.JWTOptions.getAudience:()Ljava/util/List;
iconst_0
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
pop
22: StackMap locals:
StackMap stack:
aload 2
invokevirtual io.vertx.ext.auth.JWTOptions.getScopes:()Ljava/util/List;
ifnull 27
aload 2
invokevirtual io.vertx.ext.auth.JWTOptions.getScopes:()Ljava/util/List;
invokeinterface java.util.List.size:()I
iconst_1
if_icmplt 27
23: aload 2
invokevirtual io.vertx.ext.auth.JWTOptions.hasScopeDelimiter:()Z
ifeq 26
24: aload 1
ldc "scope"
aload 2
invokevirtual io.vertx.ext.auth.JWTOptions.getScopeDelimiter:()Ljava/lang/String;
aload 2
invokevirtual io.vertx.ext.auth.JWTOptions.getScopes:()Ljava/util/List;
invokestatic java.lang.String.join:(Ljava/lang/CharSequence;Ljava/lang/Iterable;)Ljava/lang/String;
invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
pop
25: goto 27
26: StackMap locals:
StackMap stack:
aload 1
ldc "scope"
new io.vertx.core.json.JsonArray
dup
aload 2
invokevirtual io.vertx.ext.auth.JWTOptions.getScopes:()Ljava/util/List;
invokespecial io.vertx.core.json.JsonArray.<init>:(Ljava/util/List;)V
invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
pop
27: StackMap locals:
StackMap stack:
aload 2
invokevirtual io.vertx.ext.auth.JWTOptions.getIssuer:()Ljava/lang/String;
ifnull 29
28: aload 1
ldc "iss"
aload 2
invokevirtual io.vertx.ext.auth.JWTOptions.getIssuer:()Ljava/lang/String;
invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
pop
29: StackMap locals:
StackMap stack:
aload 2
invokevirtual io.vertx.ext.auth.JWTOptions.getSubject:()Ljava/lang/String;
ifnull 31
30: aload 1
ldc "sub"
aload 2
invokevirtual io.vertx.ext.auth.JWTOptions.getSubject:()Ljava/lang/String;
invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
pop
31: StackMap locals:
StackMap stack:
aload 6
invokevirtual io.vertx.core.json.JsonObject.encode:()Ljava/lang/String;
invokestatic io.vertx.ext.auth.impl.jose.JWT.base64urlEncode:(Ljava/lang/String;)Ljava/lang/String;
astore 9
start local 9 32: aload 1
invokevirtual io.vertx.core.json.JsonObject.encode:()Ljava/lang/String;
invokestatic io.vertx.ext.auth.impl.jose.JWT.base64urlEncode:(Ljava/lang/String;)Ljava/lang/String;
astore 10
start local 10 33: new java.lang.StringBuilder
dup
aload 9
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 10
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 11
start local 11 34: aload 5
aload 11
getstatic io.vertx.ext.auth.impl.jose.JWT.UTF8:Ljava/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
invokeinterface io.vertx.ext.auth.impl.jose.Crypto.sign:([B)[B
invokestatic io.vertx.ext.auth.impl.jose.JWT.base64urlEncode:([B)Ljava/lang/String;
astore 12
start local 12 35: new java.lang.StringBuilder
dup
aload 9
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 10
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 12
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 12 end local 11 end local 10 end local 9 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 36 0 this Lio/vertx/ext/auth/impl/jose/JWT;
0 36 1 payload Lio/vertx/core/json/JsonObject;
0 36 2 options Lio/vertx/ext/auth/JWTOptions;
1 36 3 algorithm Ljava/lang/String;
2 36 4 cryptos Ljava/util/List<Lio/vertx/ext/auth/impl/jose/Crypto;>;
5 36 5 crypto Lio/vertx/ext/auth/impl/jose/Crypto;
10 36 6 header Lio/vertx/core/json/JsonObject;
13 36 7 timestamp J
32 36 9 headerSegment Ljava/lang/String;
33 36 10 payloadSegment Ljava/lang/String;
34 36 11 signingInput Ljava/lang/String;
35 36 12 signSegment Ljava/lang/String;
MethodParameters:
Name Flags
payload
options
private static byte[] base64urlDecode(java.lang.String);
descriptor: (Ljava/lang/String;)[B
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: getstatic io.vertx.ext.auth.impl.jose.JWT.urlDecoder:Ljava/util/Base64$Decoder;
aload 0
getstatic io.vertx.ext.auth.impl.jose.JWT.UTF8:Ljava/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
invokevirtual java.util.Base64$Decoder.decode:([B)[B
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 str Ljava/lang/String;
MethodParameters:
Name Flags
str
private static java.lang.String base64urlEncode(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/lang/String;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getstatic io.vertx.ext.auth.impl.jose.JWT.UTF8:Ljava/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
invokestatic io.vertx.ext.auth.impl.jose.JWT.base64urlEncode:([B)Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 str Ljava/lang/String;
MethodParameters:
Name Flags
str
private static java.lang.String base64urlEncode(byte[]);
descriptor: ([B)Ljava/lang/String;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: getstatic io.vertx.ext.auth.impl.jose.JWT.urlEncoder:Ljava/util/Base64$Encoder;
aload 0
invokevirtual java.util.Base64$Encoder.encodeToString:([B)Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 bytes [B
MethodParameters:
Name Flags
bytes
public boolean isUnsecure();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield io.vertx.ext.auth.impl.jose.JWT.VERIFY:Ljava/util/Map;
invokeinterface java.util.Map.size:()I
iconst_1
if_icmpne 1
aload 0
getfield io.vertx.ext.auth.impl.jose.JWT.SIGN:Ljava/util/Map;
invokeinterface java.util.Map.size:()I
iconst_1
if_icmpne 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 Lio/vertx/ext/auth/impl/jose/JWT;
public java.util.Collection<java.lang.String> availableAlgorithms();
descriptor: ()Ljava/util/Collection;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: new java.util.HashSet
dup
invokespecial java.util.HashSet.<init>:()V
astore 1
start local 1 1: aload 1
aload 0
getfield io.vertx.ext.auth.impl.jose.JWT.VERIFY:Ljava/util/Map;
invokeinterface java.util.Map.keySet:()Ljava/util/Set;
invokeinterface java.util.Set.addAll:(Ljava/util/Collection;)Z
pop
2: aload 1
aload 0
getfield io.vertx.ext.auth.impl.jose.JWT.SIGN:Ljava/util/Map;
invokeinterface java.util.Map.keySet:()Ljava/util/Set;
invokeinterface java.util.Set.addAll:(Ljava/util/Collection;)Z
pop
3: aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lio/vertx/ext/auth/impl/jose/JWT;
1 4 1 algorithms Ljava/util/Set<Ljava/lang/String;>;
Signature: ()Ljava/util/Collection<Ljava/lang/String;>;
private static java.util.List lambda$0(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/util/List;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 k Ljava/lang/String;
private static java.util.List lambda$1(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/util/List;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 k Ljava/lang/String;
}
SourceFile: "JWT.java"
InnerClasses:
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
public Decoder = java.util.Base64$Decoder of java.util.Base64
public Encoder = java.util.Base64$Encoder of java.util.Base64