public class io.vertx.ext.auth.impl.hash.PBKDF2 implements io.vertx.ext.auth.HashingAlgorithm
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: io.vertx.ext.auth.impl.hash.PBKDF2
super_class: java.lang.Object
{
private static final int DEFAULT_ITERATIONS;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 10000
private static final java.util.Base64$Decoder B64DEC;
descriptor: Ljava/util/Base64$Decoder;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.util.Base64$Encoder B64ENC;
descriptor: Ljava/util/Base64$Encoder;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.util.Set<java.lang.String> DEFAULT_CONFIG;
descriptor: Ljava/util/Set;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/Set<Ljava/lang/String;>;
private final javax.crypto.SecretKeyFactory skf;
descriptor: Ljavax/crypto/SecretKeyFactory;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: invokestatic java.util.Base64.getDecoder:()Ljava/util/Base64$Decoder;
putstatic io.vertx.ext.auth.impl.hash.PBKDF2.B64DEC:Ljava/util/Base64$Decoder;
1: invokestatic java.util.Base64.getEncoder:()Ljava/util/Base64$Encoder;
invokevirtual java.util.Base64$Encoder.withoutPadding:()Ljava/util/Base64$Encoder;
putstatic io.vertx.ext.auth.impl.hash.PBKDF2.B64ENC:Ljava/util/Base64$Encoder;
2: ldc "it"
invokestatic java.util.Collections.singleton:(Ljava/lang/Object;)Ljava/util/Set;
putstatic io.vertx.ext.auth.impl.hash.PBKDF2.DEFAULT_CONFIG:Ljava/util/Set;
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
ldc "PBKDF2WithHmacSHA512"
invokestatic javax.crypto.SecretKeyFactory.getInstance:(Ljava/lang/String;)Ljavax/crypto/SecretKeyFactory;
putfield io.vertx.ext.auth.impl.hash.PBKDF2.skf:Ljavax/crypto/SecretKeyFactory;
2: goto 5
StackMap locals: io.vertx.ext.auth.impl.hash.PBKDF2
StackMap stack: java.security.NoSuchAlgorithmException
3: astore 1
start local 1 4: new java.lang.RuntimeException
dup
ldc "PBKDF2 is not available"
aload 1
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 1 5: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lio/vertx/ext/auth/impl/hash/PBKDF2;
4 5 1 nsae Ljava/security/NoSuchAlgorithmException;
Exception table:
from to target type
1 2 3 Class java.security.NoSuchAlgorithmException
public java.lang.String id();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: ldc "pbkdf2"
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/vertx/ext/auth/impl/hash/PBKDF2;
public java.util.Set<java.lang.String> params();
descriptor: ()Ljava/util/Set;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: getstatic io.vertx.ext.auth.impl.hash.PBKDF2.DEFAULT_CONFIG:Ljava/util/Set;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/vertx/ext/auth/impl/hash/PBKDF2;
Signature: ()Ljava/util/Set<Ljava/lang/String;>;
public java.lang.String hash(io.vertx.ext.auth.HashString, java.lang.String);
descriptor: (Lio/vertx/ext/auth/HashString;Ljava/lang/String;)Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokevirtual io.vertx.ext.auth.HashString.params:()Ljava/util/Map;
ifnull 3
1: aload 1
invokevirtual io.vertx.ext.auth.HashString.params:()Ljava/util/Map;
ldc "it"
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.String
invokestatic java.lang.Integer.getInteger:(Ljava/lang/String;)Ljava/lang/Integer;
invokevirtual java.lang.Integer.intValue:()I
istore 3
start local 3 2: goto 7
end local 3 3: StackMap locals:
StackMap stack:
sipush 10000
istore 3
start local 3 4: goto 7
end local 3 StackMap locals:
StackMap stack: java.lang.RuntimeException
5: pop
6: sipush 10000
istore 3
start local 3 7: StackMap locals: int
StackMap stack:
aload 1
invokevirtual io.vertx.ext.auth.HashString.salt:()Ljava/lang/String;
ifnonnull 9
8: new java.lang.RuntimeException
dup
ldc "hashString salt is null"
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
9: StackMap locals:
StackMap stack:
getstatic io.vertx.ext.auth.impl.hash.PBKDF2.B64DEC:Ljava/util/Base64$Decoder;
aload 1
invokevirtual io.vertx.ext.auth.HashString.salt:()Ljava/lang/String;
invokevirtual java.util.Base64$Decoder.decode:(Ljava/lang/String;)[B
astore 4
start local 4 10: new javax.crypto.spec.PBEKeySpec
dup
11: aload 2
invokevirtual java.lang.String.toCharArray:()[C
12: aload 4
13: iload 3
14: sipush 512
15: invokespecial javax.crypto.spec.PBEKeySpec.<init>:([C[BII)V
astore 5
start local 5 16: getstatic io.vertx.ext.auth.impl.hash.PBKDF2.B64ENC:Ljava/util/Base64$Encoder;
aload 0
getfield io.vertx.ext.auth.impl.hash.PBKDF2.skf:Ljavax/crypto/SecretKeyFactory;
aload 5
invokevirtual javax.crypto.SecretKeyFactory.generateSecret:(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;
invokeinterface javax.crypto.SecretKey.getEncoded:()[B
invokevirtual java.util.Base64$Encoder.encodeToString:([B)Ljava/lang/String;
17: areturn
18: StackMap locals: io.vertx.ext.auth.impl.hash.PBKDF2 io.vertx.ext.auth.HashString java.lang.String int byte[] javax.crypto.spec.PBEKeySpec
StackMap stack: java.security.spec.InvalidKeySpecException
astore 6
start local 6 19: new java.lang.RuntimeException
dup
aload 6
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
athrow
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 20 0 this Lio/vertx/ext/auth/impl/hash/PBKDF2;
0 20 1 hashString Lio/vertx/ext/auth/HashString;
0 20 2 password Ljava/lang/String;
2 3 3 iterations I
4 5 3 iterations I
7 20 3 iterations I
10 20 4 salt [B
16 20 5 spec Ljavax/crypto/spec/PBEKeySpec;
19 20 6 ikse Ljava/security/spec/InvalidKeySpecException;
Exception table:
from to target type
0 4 5 Class java.lang.RuntimeException
16 17 18 Class java.security.spec.InvalidKeySpecException
MethodParameters:
Name Flags
hashString
password
}
SourceFile: "PBKDF2.java"
InnerClasses:
public Decoder = java.util.Base64$Decoder of java.util.Base64
public Encoder = java.util.Base64$Encoder of java.util.Base64