final class sun.security.ssl.SSLBasicKeyDerivation implements sun.security.ssl.SSLKeyDerivation
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.SSLBasicKeyDerivation
super_class: java.lang.Object
{
private final java.lang.String hashAlg;
descriptor: Ljava/lang/String;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final javax.crypto.SecretKey secret;
descriptor: Ljavax/crypto/SecretKey;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final byte[] hkdfInfo;
descriptor: [B
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
void <init>(javax.crypto.SecretKey, java.lang.String, byte[], byte[], int);
descriptor: (Ljavax/crypto/SecretKey;Ljava/lang/String;[B[BI)V
flags: (0x0000)
Code:
stack=4, locals=6, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 2
ldc "-"
ldc ""
invokevirtual java.lang.String.replace:(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
putfield sun.security.ssl.SSLBasicKeyDerivation.hashAlg:Ljava/lang/String;
2: aload 0
aload 1
putfield sun.security.ssl.SSLBasicKeyDerivation.secret:Ljavax/crypto/SecretKey;
3: aload 0
aload 3
aload 4
iload 5
invokestatic sun.security.ssl.SSLBasicKeyDerivation.createHkdfInfo:([B[BI)[B
putfield sun.security.ssl.SSLBasicKeyDerivation.hkdfInfo:[B
4: return
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lsun/security/ssl/SSLBasicKeyDerivation;
0 5 1 secret Ljavax/crypto/SecretKey;
0 5 2 hashAlg Ljava/lang/String;
0 5 3 label [B
0 5 4 context [B
0 5 5 length I
MethodParameters:
Name Flags
secret
hashAlg
label
context
length
public javax.crypto.SecretKey deriveKey(java.lang.String, java.security.spec.AlgorithmParameterSpec);
descriptor: (Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;)Ljavax/crypto/SecretKey;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=4, args_size=3
start local 0 start local 1 start local 2 0: new sun.security.ssl.HKDF
dup
aload 0
getfield sun.security.ssl.SSLBasicKeyDerivation.hashAlg:Ljava/lang/String;
invokespecial sun.security.ssl.HKDF.<init>:(Ljava/lang/String;)V
astore 3
start local 3 1: aload 3
aload 0
getfield sun.security.ssl.SSLBasicKeyDerivation.secret:Ljavax/crypto/SecretKey;
aload 0
getfield sun.security.ssl.SSLBasicKeyDerivation.hkdfInfo:[B
2: aload 2
checkcast sun.security.ssl.SSLBasicKeyDerivation$SecretSizeSpec
getfield sun.security.ssl.SSLBasicKeyDerivation$SecretSizeSpec.length:I
aload 1
3: invokevirtual sun.security.ssl.HKDF.expand:(Ljavax/crypto/SecretKey;[BILjava/lang/String;)Ljavax/crypto/SecretKey;
4: areturn
end local 3 5: StackMap locals:
StackMap stack: java.security.GeneralSecurityException
astore 3
start local 3 6: new javax.net.ssl.SSLHandshakeException
dup
7: ldc "Could not generate secret"
8: invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
9: aload 3
invokevirtual javax.net.ssl.SSLHandshakeException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
10: checkcast javax.net.ssl.SSLHandshakeException
athrow
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/SSLBasicKeyDerivation;
0 11 1 algorithm Ljava/lang/String;
0 11 2 keySpec Ljava/security/spec/AlgorithmParameterSpec;
1 5 3 hkdf Lsun/security/ssl/HKDF;
6 11 3 gse Ljava/security/GeneralSecurityException;
Exception table:
from to target type
0 4 5 Class java.security.GeneralSecurityException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
algorithm
keySpec
private static byte[] createHkdfInfo(byte[], byte[], int);
descriptor: ([B[BI)[B
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=5, args_size=3
start local 0 start local 1 start local 2 0: iconst_4
aload 0
arraylength
iadd
aload 1
arraylength
iadd
newarray 8
astore 3
start local 3 1: aload 3
invokestatic java.nio.ByteBuffer.wrap:([B)Ljava/nio/ByteBuffer;
astore 4
start local 4 2: aload 4
iload 2
invokestatic sun.security.ssl.Record.putInt16:(Ljava/nio/ByteBuffer;I)V
3: aload 4
aload 0
invokestatic sun.security.ssl.Record.putBytes8:(Ljava/nio/ByteBuffer;[B)V
4: aload 4
aload 1
invokestatic sun.security.ssl.Record.putBytes8:(Ljava/nio/ByteBuffer;[B)V
5: goto 7
StackMap locals: byte[] byte[] int byte[] java.nio.ByteBuffer
StackMap stack: java.io.IOException
6: pop
7: StackMap locals:
StackMap stack:
aload 3
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 label [B
0 8 1 context [B
0 8 2 length I
1 8 3 info [B
2 8 4 m Ljava/nio/ByteBuffer;
Exception table:
from to target type
2 5 6 Class java.io.IOException
MethodParameters:
Name Flags
label
context
length
}
SourceFile: "SSLBasicKeyDerivation.java"
NestMembers:
sun.security.ssl.SSLBasicKeyDerivation$SecretSizeSpec
InnerClasses:
SecretSizeSpec = sun.security.ssl.SSLBasicKeyDerivation$SecretSizeSpec of sun.security.ssl.SSLBasicKeyDerivation