public abstract class sun.security.krb5.internal.crypto.dk.DkCrypto
minor version: 0
major version: 59
flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
this_class: sun.security.krb5.internal.crypto.dk.DkCrypto
super_class: java.lang.Object
{
protected static final boolean debug;
descriptor: Z
flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
ConstantValue: 0
static final byte[] KERBEROS_CONSTANT;
descriptor: [B
flags: (0x0018) ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=0, args_size=0
0: .line 62
bipush 8
newarray 8
dup
iconst_0
bipush 107
bastore
dup
iconst_1
bipush 101
bastore
dup
iconst_2
bipush 114
bastore
dup
iconst_3
bipush 98
bastore
dup
iconst_4
bipush 101
bastore
dup
iconst_5
bipush 114
bastore
dup
bipush 6
bipush 111
bastore
dup
bipush 7
bipush 115
bastore
1: .line 61
putstatic sun.security.krb5.internal.crypto.dk.DkCrypto.KERBEROS_CONSTANT:[B
2: .line 62
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 // sun.security.krb5.internal.crypto.dk.DkCrypto this
0: .line 56
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
return
end local 0 // sun.security.krb5.internal.crypto.dk.DkCrypto this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/krb5/internal/crypto/dk/DkCrypto;
protected abstract int getKeySeedLength();
descriptor: ()I
flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
protected abstract byte[] randomToKey(byte[]);
descriptor: ([B)[B
flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
MethodParameters:
Name Flags
in
protected abstract javax.crypto.Cipher getCipher(byte[], byte[], int);
descriptor: ([B[BI)Ljavax/crypto/Cipher;
flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
Exceptions:
throws java.security.GeneralSecurityException
MethodParameters:
Name Flags
key
ivec
mode
public abstract int getChecksumLength();
descriptor: ()I
flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
protected abstract byte[] getHmac(byte[], byte[]);
descriptor: ([B[B)[B
flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
Exceptions:
throws java.security.GeneralSecurityException
MethodParameters:
Name Flags
key
plaintext
public byte[] encrypt(byte[], int, byte[], byte[], byte[], int, int);
descriptor: ([BI[B[B[BII)[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=22, args_size=8
start local 0 // sun.security.krb5.internal.crypto.dk.DkCrypto this
start local 1 // byte[] baseKey
start local 2 // int usage
start local 3 // byte[] ivec
start local 4 // byte[] new_ivec
start local 5 // byte[] plaintext
start local 6 // int start
start local 7 // int len
0: .line 98
iload 2 /* usage */
invokestatic sun.security.krb5.internal.crypto.KeyUsage.isValid:(I)Z
ifne 4
1: .line 99
new java.security.GeneralSecurityException
dup
new java.lang.StringBuilder
dup
ldc "Invalid key usage number: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
2: .line 100
iload 2 /* usage */
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
3: .line 99
invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
athrow
4: .line 103
StackMap locals:
StackMap stack:
aconst_null
astore 8 /* Ke */
start local 8 // byte[] Ke
5: .line 104
aconst_null
astore 9 /* Ki */
start local 9 // byte[] Ki
6: .line 109
iconst_5
newarray 8
astore 10 /* constant */
start local 10 // byte[] constant
7: .line 110
aload 10 /* constant */
iconst_0
iload 2 /* usage */
bipush 24
ishr
sipush 255
iand
i2b
bastore
8: .line 111
aload 10 /* constant */
iconst_1
iload 2 /* usage */
bipush 16
ishr
sipush 255
iand
i2b
bastore
9: .line 112
aload 10 /* constant */
iconst_2
iload 2 /* usage */
bipush 8
ishr
sipush 255
iand
i2b
bastore
10: .line 113
aload 10 /* constant */
iconst_3
iload 2 /* usage */
sipush 255
iand
i2b
bastore
11: .line 115
aload 10 /* constant */
iconst_4
bipush -86
bastore
12: .line 117
aload 0 /* this */
aload 1 /* baseKey */
aload 10 /* constant */
invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.dk:([B[B)[B
astore 8 /* Ke */
13: .line 131
aload 0 /* this */
aload 8 /* Ke */
aload 3 /* ivec */
iconst_1
invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.getCipher:([B[BI)Ljavax/crypto/Cipher;
astore 11 /* encCipher */
start local 11 // javax.crypto.Cipher encCipher
14: .line 132
aload 11 /* encCipher */
invokevirtual javax.crypto.Cipher.getBlockSize:()I
istore 12 /* blockSize */
start local 12 // int blockSize
15: .line 133
iload 12 /* blockSize */
invokestatic sun.security.krb5.Confounder.bytes:(I)[B
astore 13 /* confounder */
start local 13 // byte[] confounder
16: .line 135
aload 0 /* this */
aload 13 /* confounder */
arraylength
iload 7 /* len */
iadd
iload 12 /* blockSize */
invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.roundup:(II)I
istore 14 /* plainSize */
start local 14 // int plainSize
17: .line 144
iload 14 /* plainSize */
newarray 8
astore 15 /* toBeEncrypted */
start local 15 // byte[] toBeEncrypted
18: .line 145
aload 13 /* confounder */
iconst_0
aload 15 /* toBeEncrypted */
19: .line 146
iconst_0
aload 13 /* confounder */
arraylength
20: .line 145
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
21: .line 147
aload 5 /* plaintext */
iload 6 /* start */
aload 15 /* toBeEncrypted */
22: .line 148
aload 13 /* confounder */
arraylength
iload 7 /* len */
23: .line 147
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
24: .line 151
aload 15 /* toBeEncrypted */
aload 13 /* confounder */
arraylength
iload 7 /* len */
iadd
iload 14 /* plainSize */
25: .line 152
iconst_0
26: .line 151
invokestatic java.util.Arrays.fill:([BIIB)V
27: .line 154
aload 11 /* encCipher */
iload 14 /* plainSize */
invokevirtual javax.crypto.Cipher.getOutputSize:(I)I
istore 16 /* cipherSize */
start local 16 // int cipherSize
28: .line 155
iload 16 /* cipherSize */
aload 0 /* this */
invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.getChecksumLength:()I
iadd
istore 17 /* ccSize */
start local 17 // int ccSize
29: .line 157
iload 17 /* ccSize */
newarray 8
astore 18 /* ciphertext */
start local 18 // byte[] ciphertext
30: .line 159
aload 11 /* encCipher */
aload 15 /* toBeEncrypted */
iconst_0
iload 14 /* plainSize */
aload 18 /* ciphertext */
iconst_0
invokevirtual javax.crypto.Cipher.doFinal:([BII[BI)I
pop
31: .line 164
aload 4 /* new_ivec */
ifnull 35
aload 4 /* new_ivec */
arraylength
iload 12 /* blockSize */
if_icmpne 35
32: .line 165
aload 18 /* ciphertext */
iload 16 /* cipherSize */
iload 12 /* blockSize */
isub
33: .line 166
aload 4 /* new_ivec */
iconst_0
iload 12 /* blockSize */
34: .line 165
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
35: .line 173
StackMap locals: sun.security.krb5.internal.crypto.dk.DkCrypto byte[] int byte[] byte[] byte[] int int byte[] byte[] byte[] javax.crypto.Cipher int byte[] int byte[] int int byte[]
StackMap stack:
aload 10 /* constant */
iconst_4
bipush 85
bastore
36: .line 174
aload 0 /* this */
aload 1 /* baseKey */
aload 10 /* constant */
invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.dk:([B[B)[B
astore 9 /* Ki */
37: .line 182
aload 0 /* this */
aload 9 /* Ki */
aload 15 /* toBeEncrypted */
invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.getHmac:([B[B)[B
astore 19 /* hmac */
start local 19 // byte[] hmac
38: .line 191
aload 19 /* hmac */
iconst_0
aload 18 /* ciphertext */
iload 16 /* cipherSize */
39: .line 192
aload 0 /* this */
invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.getChecksumLength:()I
40: .line 191
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
41: .line 193
aload 18 /* ciphertext */
astore 21
42: .line 195
aload 8 /* Ke */
ifnull 44
43: .line 196
aload 8 /* Ke */
iconst_0
aload 8 /* Ke */
arraylength
iconst_0
invokestatic java.util.Arrays.fill:([BIIB)V
44: .line 198
StackMap locals: sun.security.krb5.internal.crypto.dk.DkCrypto byte[] int byte[] byte[] byte[] int int byte[] byte[] byte[] javax.crypto.Cipher int byte[] int byte[] int int byte[] byte[] top byte[]
StackMap stack:
aload 9 /* Ki */
ifnull 46
45: .line 199
aload 9 /* Ki */
iconst_0
aload 9 /* Ki */
arraylength
iconst_0
invokestatic java.util.Arrays.fill:([BIIB)V
46: .line 193
StackMap locals:
StackMap stack:
aload 21
areturn
end local 19 // byte[] hmac
end local 18 // byte[] ciphertext
end local 17 // int ccSize
end local 16 // int cipherSize
end local 15 // byte[] toBeEncrypted
end local 14 // int plainSize
end local 13 // byte[] confounder
end local 12 // int blockSize
end local 11 // javax.crypto.Cipher encCipher
end local 10 // byte[] constant
47: .line 194
StackMap locals: sun.security.krb5.internal.crypto.dk.DkCrypto byte[] int byte[] byte[] byte[] int int byte[] byte[]
StackMap stack: java.lang.Throwable
astore 20
48: .line 195
aload 8 /* Ke */
ifnull 50
49: .line 196
aload 8 /* Ke */
iconst_0
aload 8 /* Ke */
arraylength
iconst_0
invokestatic java.util.Arrays.fill:([BIIB)V
50: .line 198
StackMap locals: sun.security.krb5.internal.crypto.dk.DkCrypto byte[] int byte[] byte[] byte[] int int byte[] byte[] top top top top top top top top top top java.lang.Throwable
StackMap stack:
aload 9 /* Ki */
ifnull 52
51: .line 199
aload 9 /* Ki */
iconst_0
aload 9 /* Ki */
arraylength
iconst_0
invokestatic java.util.Arrays.fill:([BIIB)V
52: .line 201
StackMap locals:
StackMap stack:
aload 20
athrow
end local 9 // byte[] Ki
end local 8 // byte[] Ke
end local 7 // int len
end local 6 // int start
end local 5 // byte[] plaintext
end local 4 // byte[] new_ivec
end local 3 // byte[] ivec
end local 2 // int usage
end local 1 // byte[] baseKey
end local 0 // sun.security.krb5.internal.crypto.dk.DkCrypto this
LocalVariableTable:
Start End Slot Name Signature
0 53 0 this Lsun/security/krb5/internal/crypto/dk/DkCrypto;
0 53 1 baseKey [B
0 53 2 usage I
0 53 3 ivec [B
0 53 4 new_ivec [B
0 53 5 plaintext [B
0 53 6 start I
0 53 7 len I
5 53 8 Ke [B
6 53 9 Ki [B
7 47 10 constant [B
14 47 11 encCipher Ljavax/crypto/Cipher;
15 47 12 blockSize I
16 47 13 confounder [B
17 47 14 plainSize I
18 47 15 toBeEncrypted [B
28 47 16 cipherSize I
29 47 17 ccSize I
30 47 18 ciphertext [B
38 47 19 hmac [B
Exception table:
from to target type
6 42 47 any
Exceptions:
throws java.security.GeneralSecurityException, sun.security.krb5.KrbCryptoException
MethodParameters:
Name Flags
baseKey
usage
ivec
new_ivec
plaintext
start
len
public byte[] encryptRaw(byte[], int, byte[], byte[], int, int);
descriptor: ([BI[B[BII)[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=11, args_size=7
start local 0 // sun.security.krb5.internal.crypto.dk.DkCrypto this
start local 1 // byte[] baseKey
start local 2 // int usage
start local 3 // byte[] ivec
start local 4 // byte[] plaintext
start local 5 // int start
start local 6 // int len
0: .line 224
aload 0 /* this */
aload 1 /* baseKey */
aload 3 /* ivec */
iconst_1
invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.getCipher:([B[BI)Ljavax/crypto/Cipher;
astore 7 /* encCipher */
start local 7 // javax.crypto.Cipher encCipher
1: .line 225
aload 7 /* encCipher */
invokevirtual javax.crypto.Cipher.getBlockSize:()I
istore 8 /* blockSize */
start local 8 // int blockSize
2: .line 227
iload 6 /* len */
iload 8 /* blockSize */
irem
ifeq 8
3: .line 228
new java.security.GeneralSecurityException
dup
4: .line 229
new java.lang.StringBuilder
dup
ldc "length of data to be encrypted ("
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 6 /* len */
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
5: .line 230
ldc ") is not a multiple of the blocksize ("
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 8 /* blockSize */
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ")"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
6: .line 229
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
7: .line 228
invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
athrow
8: .line 233
StackMap locals: javax.crypto.Cipher int
StackMap stack:
aload 7 /* encCipher */
iload 6 /* len */
invokevirtual javax.crypto.Cipher.getOutputSize:(I)I
istore 9 /* cipherSize */
start local 9 // int cipherSize
9: .line 234
iload 9 /* cipherSize */
newarray 8
astore 10 /* ciphertext */
start local 10 // byte[] ciphertext
10: .line 236
aload 7 /* encCipher */
aload 4 /* plaintext */
iconst_0
iload 6 /* len */
aload 10 /* ciphertext */
iconst_0
invokevirtual javax.crypto.Cipher.doFinal:([BII[BI)I
pop
11: .line 237
aload 10 /* ciphertext */
areturn
end local 10 // byte[] ciphertext
end local 9 // int cipherSize
end local 8 // int blockSize
end local 7 // javax.crypto.Cipher encCipher
end local 6 // int len
end local 5 // int start
end local 4 // byte[] plaintext
end local 3 // byte[] ivec
end local 2 // int usage
end local 1 // byte[] baseKey
end local 0 // sun.security.krb5.internal.crypto.dk.DkCrypto this
LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lsun/security/krb5/internal/crypto/dk/DkCrypto;
0 12 1 baseKey [B
0 12 2 usage I
0 12 3 ivec [B
0 12 4 plaintext [B
0 12 5 start I
0 12 6 len I
1 12 7 encCipher Ljavax/crypto/Cipher;
2 12 8 blockSize I
9 12 9 cipherSize I
10 12 10 ciphertext [B
Exceptions:
throws java.security.GeneralSecurityException, sun.security.krb5.KrbCryptoException
MethodParameters:
Name Flags
baseKey
usage
ivec
plaintext
start
len
public byte[] decryptRaw(byte[], int, byte[], byte[], int, int);
descriptor: ([BI[B[BII)[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=10, args_size=7
start local 0 // sun.security.krb5.internal.crypto.dk.DkCrypto this
start local 1 // byte[] baseKey
start local 2 // int usage
start local 3 // byte[] ivec
start local 4 // byte[] ciphertext
start local 5 // int start
start local 6 // int len
0: .line 259
aload 0 /* this */
aload 1 /* baseKey */
aload 3 /* ivec */
iconst_2
invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.getCipher:([B[BI)Ljavax/crypto/Cipher;
astore 7 /* decCipher */
start local 7 // javax.crypto.Cipher decCipher
1: .line 261
aload 7 /* decCipher */
invokevirtual javax.crypto.Cipher.getBlockSize:()I
istore 8 /* blockSize */
start local 8 // int blockSize
2: .line 263
iload 6 /* len */
iload 8 /* blockSize */
irem
ifeq 8
3: .line 264
new java.security.GeneralSecurityException
dup
4: .line 265
new java.lang.StringBuilder
dup
ldc "length of data to be decrypted ("
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 6 /* len */
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
5: .line 266
ldc ") is not a multiple of the blocksize ("
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 8 /* blockSize */
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ")"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
6: .line 265
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
7: .line 264
invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
athrow
8: .line 269
StackMap locals: javax.crypto.Cipher int
StackMap stack:
aload 7 /* decCipher */
aload 4 /* ciphertext */
iload 5 /* start */
iload 6 /* len */
invokevirtual javax.crypto.Cipher.doFinal:([BII)[B
astore 9 /* decrypted */
start local 9 // byte[] decrypted
9: .line 276
aload 9 /* decrypted */
areturn
end local 9 // byte[] decrypted
end local 8 // int blockSize
end local 7 // javax.crypto.Cipher decCipher
end local 6 // int len
end local 5 // int start
end local 4 // byte[] ciphertext
end local 3 // byte[] ivec
end local 2 // int usage
end local 1 // byte[] baseKey
end local 0 // sun.security.krb5.internal.crypto.dk.DkCrypto this
LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lsun/security/krb5/internal/crypto/dk/DkCrypto;
0 10 1 baseKey [B
0 10 2 usage I
0 10 3 ivec [B
0 10 4 ciphertext [B
0 10 5 start I
0 10 6 len I
1 10 7 decCipher Ljavax/crypto/Cipher;
2 10 8 blockSize I
9 10 9 decrypted [B
Exceptions:
throws java.security.GeneralSecurityException
MethodParameters:
Name Flags
baseKey
usage
ivec
ciphertext
start
len
public byte[] decrypt(byte[], int, byte[], byte[], int, int);
descriptor: ([BI[B[BII)[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=20, args_size=7
start local 0 // sun.security.krb5.internal.crypto.dk.DkCrypto this
start local 1 // byte[] baseKey
start local 2 // int usage
start local 3 // byte[] ivec
start local 4 // byte[] ciphertext
start local 5 // int start
start local 6 // int len
0: .line 286
iload 2 /* usage */
invokestatic sun.security.krb5.internal.crypto.KeyUsage.isValid:(I)Z
ifne 4
1: .line 287
new java.security.GeneralSecurityException
dup
new java.lang.StringBuilder
dup
ldc "Invalid key usage number: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
2: .line 288
iload 2 /* usage */
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
3: .line 287
invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
athrow
4: .line 291
StackMap locals:
StackMap stack:
aconst_null
astore 7 /* Ke */
start local 7 // byte[] Ke
5: .line 292
aconst_null
astore 8 /* Ki */
start local 8 // byte[] Ki
6: .line 296
iconst_5
newarray 8
astore 9 /* constant */
start local 9 // byte[] constant
7: .line 297
aload 9 /* constant */
iconst_0
iload 2 /* usage */
bipush 24
ishr
sipush 255
iand
i2b
bastore
8: .line 298
aload 9 /* constant */
iconst_1
iload 2 /* usage */
bipush 16
ishr
sipush 255
iand
i2b
bastore
9: .line 299
aload 9 /* constant */
iconst_2
iload 2 /* usage */
bipush 8
ishr
sipush 255
iand
i2b
bastore
10: .line 300
aload 9 /* constant */
iconst_3
iload 2 /* usage */
sipush 255
iand
i2b
bastore
11: .line 302
aload 9 /* constant */
iconst_4
bipush -86
bastore
12: .line 304
aload 0 /* this */
aload 1 /* baseKey */
aload 9 /* constant */
invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.dk:([B[B)[B
astore 7 /* Ke */
13: .line 317
aload 0 /* this */
aload 7 /* Ke */
aload 3 /* ivec */
iconst_2
invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.getCipher:([B[BI)Ljavax/crypto/Cipher;
astore 10 /* decCipher */
start local 10 // javax.crypto.Cipher decCipher
14: .line 318
aload 10 /* decCipher */
invokevirtual javax.crypto.Cipher.getBlockSize:()I
istore 11 /* blockSize */
start local 11 // int blockSize
15: .line 321
aload 0 /* this */
invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.getChecksumLength:()I
istore 12 /* cksumSize */
start local 12 // int cksumSize
16: .line 322
iload 6 /* len */
iload 12 /* cksumSize */
isub
istore 13 /* cipherSize */
start local 13 // int cipherSize
17: .line 323
aload 10 /* decCipher */
aload 4 /* ciphertext */
iload 5 /* start */
iload 13 /* cipherSize */
invokevirtual javax.crypto.Cipher.doFinal:([BII)[B
astore 14 /* decrypted */
start local 14 // byte[] decrypted
18: .line 333
aload 9 /* constant */
iconst_4
bipush 85
bastore
19: .line 334
aload 0 /* this */
aload 1 /* baseKey */
aload 9 /* constant */
invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.dk:([B[B)[B
astore 8 /* Ki */
20: .line 342
aload 0 /* this */
aload 8 /* Ki */
aload 14 /* decrypted */
invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.getHmac:([B[B)[B
astore 15 /* calculatedHmac */
start local 15 // byte[] calculatedHmac
21: .line 351
iconst_0
istore 16 /* cksumFailed */
start local 16 // boolean cksumFailed
22: .line 352
aload 15 /* calculatedHmac */
arraylength
iload 12 /* cksumSize */
if_icmplt 30
23: .line 353
iconst_0
istore 17 /* i */
start local 17 // int i
24: goto 29
25: .line 354
StackMap locals: sun.security.krb5.internal.crypto.dk.DkCrypto byte[] int byte[] byte[] int int byte[] byte[] byte[] javax.crypto.Cipher int int int byte[] byte[] int int
StackMap stack:
aload 15 /* calculatedHmac */
iload 17 /* i */
baload
aload 4 /* ciphertext */
iload 13 /* cipherSize */
iload 17 /* i */
iadd
baload
if_icmpeq 28
26: .line 355
iconst_1
istore 16 /* cksumFailed */
27: .line 356
goto 30
28: .line 353
StackMap locals:
StackMap stack:
iinc 17 /* i */ 1
StackMap locals:
StackMap stack:
29: iload 17 /* i */
iload 12 /* cksumSize */
if_icmplt 25
end local 17 // int i
30: .line 361
StackMap locals:
StackMap stack:
iload 16 /* cksumFailed */
ifeq 32
31: .line 362
new java.security.GeneralSecurityException
dup
ldc "Checksum failed"
invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
athrow
32: .line 367
StackMap locals:
StackMap stack:
aload 3 /* ivec */
ifnull 36
aload 3 /* ivec */
arraylength
iload 11 /* blockSize */
if_icmpne 36
33: .line 368
aload 4 /* ciphertext */
iload 5 /* start */
iload 13 /* cipherSize */
iadd
iload 11 /* blockSize */
isub
34: .line 369
aload 3 /* ivec */
iconst_0
iload 11 /* blockSize */
35: .line 368
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
36: .line 377
StackMap locals:
StackMap stack:
aload 14 /* decrypted */
arraylength
iload 11 /* blockSize */
isub
newarray 8
astore 17 /* plaintext */
start local 17 // byte[] plaintext
37: .line 378
aload 14 /* decrypted */
iload 11 /* blockSize */
aload 17 /* plaintext */
38: .line 379
iconst_0
aload 17 /* plaintext */
arraylength
39: .line 378
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
40: .line 380
aload 17 /* plaintext */
astore 19
41: .line 382
aload 7 /* Ke */
ifnull 43
42: .line 383
aload 7 /* Ke */
iconst_0
aload 7 /* Ke */
arraylength
iconst_0
invokestatic java.util.Arrays.fill:([BIIB)V
43: .line 385
StackMap locals: sun.security.krb5.internal.crypto.dk.DkCrypto byte[] int byte[] byte[] int int byte[] byte[] byte[] javax.crypto.Cipher int int int byte[] byte[] int byte[] top byte[]
StackMap stack:
aload 8 /* Ki */
ifnull 45
44: .line 386
aload 8 /* Ki */
iconst_0
aload 8 /* Ki */
arraylength
iconst_0
invokestatic java.util.Arrays.fill:([BIIB)V
45: .line 380
StackMap locals:
StackMap stack:
aload 19
areturn
end local 17 // byte[] plaintext
end local 16 // boolean cksumFailed
end local 15 // byte[] calculatedHmac
end local 14 // byte[] decrypted
end local 13 // int cipherSize
end local 12 // int cksumSize
end local 11 // int blockSize
end local 10 // javax.crypto.Cipher decCipher
end local 9 // byte[] constant
46: .line 381
StackMap locals: sun.security.krb5.internal.crypto.dk.DkCrypto byte[] int byte[] byte[] int int byte[] byte[]
StackMap stack: java.lang.Throwable
astore 18
47: .line 382
aload 7 /* Ke */
ifnull 49
48: .line 383
aload 7 /* Ke */
iconst_0
aload 7 /* Ke */
arraylength
iconst_0
invokestatic java.util.Arrays.fill:([BIIB)V
49: .line 385
StackMap locals: sun.security.krb5.internal.crypto.dk.DkCrypto byte[] int byte[] byte[] int int byte[] byte[] top top top top top top top top top java.lang.Throwable
StackMap stack:
aload 8 /* Ki */
ifnull 51
50: .line 386
aload 8 /* Ki */
iconst_0
aload 8 /* Ki */
arraylength
iconst_0
invokestatic java.util.Arrays.fill:([BIIB)V
51: .line 388
StackMap locals:
StackMap stack:
aload 18
athrow
end local 8 // byte[] Ki
end local 7 // byte[] Ke
end local 6 // int len
end local 5 // int start
end local 4 // byte[] ciphertext
end local 3 // byte[] ivec
end local 2 // int usage
end local 1 // byte[] baseKey
end local 0 // sun.security.krb5.internal.crypto.dk.DkCrypto this
LocalVariableTable:
Start End Slot Name Signature
0 52 0 this Lsun/security/krb5/internal/crypto/dk/DkCrypto;
0 52 1 baseKey [B
0 52 2 usage I
0 52 3 ivec [B
0 52 4 ciphertext [B
0 52 5 start I
0 52 6 len I
5 52 7 Ke [B
6 52 8 Ki [B
7 46 9 constant [B
14 46 10 decCipher Ljavax/crypto/Cipher;
15 46 11 blockSize I
16 46 12 cksumSize I
17 46 13 cipherSize I
18 46 14 decrypted [B
21 46 15 calculatedHmac [B
22 46 16 cksumFailed Z
24 30 17 i I
37 46 17 plaintext [B
Exception table:
from to target type
6 41 46 any
Exceptions:
throws java.security.GeneralSecurityException
MethodParameters:
Name Flags
baseKey
usage
ivec
ciphertext
start
len
int roundup(int, int);
descriptor: (II)I
flags: (0x0000)
Code:
stack=2, locals=3, args_size=3
start local 0 // sun.security.krb5.internal.crypto.dk.DkCrypto this
start local 1 // int n
start local 2 // int blocksize
0: .line 393
iload 1 /* n */
iload 2 /* blocksize */
iadd
iconst_1
isub
iload 2 /* blocksize */
idiv
iload 2 /* blocksize */
imul
ireturn
end local 2 // int blocksize
end local 1 // int n
end local 0 // sun.security.krb5.internal.crypto.dk.DkCrypto this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/krb5/internal/crypto/dk/DkCrypto;
0 1 1 n I
0 1 2 blocksize I
MethodParameters:
Name Flags
n
blocksize
public byte[] calculateChecksum(byte[], int, byte[], int, int);
descriptor: ([BI[BII)[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=12, args_size=6
start local 0 // sun.security.krb5.internal.crypto.dk.DkCrypto this
start local 1 // byte[] baseKey
start local 2 // int usage
start local 3 // byte[] input
start local 4 // int start
start local 5 // int len
0: .line 399
iload 2 /* usage */
invokestatic sun.security.krb5.internal.crypto.KeyUsage.isValid:(I)Z
ifne 4
1: .line 400
new java.security.GeneralSecurityException
dup
new java.lang.StringBuilder
dup
ldc "Invalid key usage number: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
2: .line 401
iload 2 /* usage */
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
3: .line 400
invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
athrow
4: .line 405
StackMap locals:
StackMap stack:
iconst_5
newarray 8
astore 6 /* constant */
start local 6 // byte[] constant
5: .line 406
aload 6 /* constant */
iconst_0
iload 2 /* usage */
bipush 24
ishr
sipush 255
iand
i2b
bastore
6: .line 407
aload 6 /* constant */
iconst_1
iload 2 /* usage */
bipush 16
ishr
sipush 255
iand
i2b
bastore
7: .line 408
aload 6 /* constant */
iconst_2
iload 2 /* usage */
bipush 8
ishr
sipush 255
iand
i2b
bastore
8: .line 409
aload 6 /* constant */
iconst_3
iload 2 /* usage */
sipush 255
iand
i2b
bastore
9: .line 411
aload 6 /* constant */
iconst_4
bipush -103
bastore
10: .line 413
aload 0 /* this */
aload 1 /* baseKey */
aload 6 /* constant */
invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.dk:([B[B)[B
astore 7 /* Kc */
start local 7 // byte[] Kc
11: .line 425
aload 0 /* this */
aload 7 /* Kc */
aload 3 /* input */
invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.getHmac:([B[B)[B
astore 8 /* hmac */
start local 8 // byte[] hmac
12: .line 429
aload 8 /* hmac */
arraylength
aload 0 /* this */
invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.getChecksumLength:()I
if_icmpne 16
13: .line 430
aload 8 /* hmac */
astore 11
14: .line 440
aload 7 /* Kc */
iconst_0
aload 7 /* Kc */
arraylength
iconst_0
invokestatic java.util.Arrays.fill:([BIIB)V
15: .line 430
aload 11
areturn
16: .line 431
StackMap locals: byte[] byte[] byte[]
StackMap stack:
aload 8 /* hmac */
arraylength
aload 0 /* this */
invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.getChecksumLength:()I
if_icmple 22
17: .line 432
aload 0 /* this */
invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.getChecksumLength:()I
newarray 8
astore 9 /* buf */
start local 9 // byte[] buf
18: .line 433
aload 8 /* hmac */
iconst_0
aload 9 /* buf */
iconst_0
aload 9 /* buf */
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
19: .line 434
aload 9 /* buf */
astore 11
20: .line 440
aload 7 /* Kc */
iconst_0
aload 7 /* Kc */
arraylength
iconst_0
invokestatic java.util.Arrays.fill:([BIIB)V
21: .line 434
aload 11
areturn
end local 9 // byte[] buf
22: .line 436
StackMap locals:
StackMap stack:
new java.security.GeneralSecurityException
dup
new java.lang.StringBuilder
dup
ldc "checksum size too short: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
23: .line 437
aload 8 /* hmac */
arraylength
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc "; expecting : "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0 /* this */
invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.getChecksumLength:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
24: .line 436
invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
athrow
end local 8 // byte[] hmac
25: .line 439
StackMap locals: sun.security.krb5.internal.crypto.dk.DkCrypto byte[] int byte[] int int byte[] byte[]
StackMap stack: java.lang.Throwable
astore 10
26: .line 440
aload 7 /* Kc */
iconst_0
aload 7 /* Kc */
arraylength
iconst_0
invokestatic java.util.Arrays.fill:([BIIB)V
27: .line 441
aload 10
athrow
end local 7 // byte[] Kc
end local 6 // byte[] constant
end local 5 // int len
end local 4 // int start
end local 3 // byte[] input
end local 2 // int usage
end local 1 // byte[] baseKey
end local 0 // sun.security.krb5.internal.crypto.dk.DkCrypto this
LocalVariableTable:
Start End Slot Name Signature
0 28 0 this Lsun/security/krb5/internal/crypto/dk/DkCrypto;
0 28 1 baseKey [B
0 28 2 usage I
0 28 3 input [B
0 28 4 start I
0 28 5 len I
5 28 6 constant [B
11 28 7 Kc [B
12 25 8 hmac [B
18 22 9 buf [B
Exception table:
from to target type
11 14 25 any
16 20 25 any
22 25 25 any
Exceptions:
throws java.security.GeneralSecurityException
MethodParameters:
Name Flags
baseKey
usage
input
start
len
byte[] dk(byte[], byte[]);
descriptor: ([B[B)[B
flags: (0x0000)
Code:
stack=4, locals=3, args_size=3
start local 0 // sun.security.krb5.internal.crypto.dk.DkCrypto this
start local 1 // byte[] key
start local 2 // byte[] constant
0: .line 447
aload 0 /* this */
aload 0 /* this */
aload 1 /* key */
aload 2 /* constant */
invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.dr:([B[B)[B
invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.randomToKey:([B)[B
areturn
end local 2 // byte[] constant
end local 1 // byte[] key
end local 0 // sun.security.krb5.internal.crypto.dk.DkCrypto this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/krb5/internal/crypto/dk/DkCrypto;
0 1 1 key [B
0 1 2 constant [B
Exceptions:
throws java.security.GeneralSecurityException
MethodParameters:
Name Flags
key
constant
private byte[] dr(byte[], byte[]);
descriptor: ([B[B)[B
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=11, args_size=3
start local 0 // sun.security.krb5.internal.crypto.dk.DkCrypto this
start local 1 // byte[] key
start local 2 // byte[] constant
0: .line 484
aload 0 /* this */
aload 1 /* key */
aconst_null
iconst_1
invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.getCipher:([B[BI)Ljavax/crypto/Cipher;
astore 3 /* encCipher */
start local 3 // javax.crypto.Cipher encCipher
1: .line 485
aload 3 /* encCipher */
invokevirtual javax.crypto.Cipher.getBlockSize:()I
istore 4 /* blocksize */
start local 4 // int blocksize
2: .line 487
aload 2 /* constant */
arraylength
iload 4 /* blocksize */
if_icmpeq 4
3: .line 488
aload 2 /* constant */
iload 4 /* blocksize */
bipush 8
imul
invokestatic sun.security.krb5.internal.crypto.dk.DkCrypto.nfold:([BI)[B
astore 2 /* constant */
4: .line 490
StackMap locals: javax.crypto.Cipher int
StackMap stack:
aload 2 /* constant */
astore 5 /* toBeEncrypted */
start local 5 // byte[] toBeEncrypted
5: .line 492
aload 0 /* this */
invokevirtual sun.security.krb5.internal.crypto.dk.DkCrypto.getKeySeedLength:()I
iconst_3
ishr
istore 6 /* keybytes */
start local 6 // int keybytes
6: .line 493
iload 6 /* keybytes */
newarray 8
astore 7 /* rawkey */
start local 7 // byte[] rawkey
7: .line 497
iconst_0
istore 8 /* n */
start local 8 // int n
8: .line 498
goto 16
9: .line 504
StackMap locals: sun.security.krb5.internal.crypto.dk.DkCrypto byte[] byte[] javax.crypto.Cipher int byte[] int byte[] int
StackMap stack:
aload 3 /* encCipher */
aload 5 /* toBeEncrypted */
invokevirtual javax.crypto.Cipher.doFinal:([B)[B
astore 10 /* cipherBlock */
start local 10 // byte[] cipherBlock
10: .line 510
iload 6 /* keybytes */
iload 8 /* n */
isub
aload 10 /* cipherBlock */
arraylength
if_icmpgt 11
iload 6 /* keybytes */
iload 8 /* n */
isub
goto 12
11: .line 511
StackMap locals: sun.security.krb5.internal.crypto.dk.DkCrypto byte[] byte[] javax.crypto.Cipher int byte[] int byte[] int top byte[]
StackMap stack:
aload 10 /* cipherBlock */
arraylength
12: .line 510
StackMap locals:
StackMap stack: int
istore 9 /* len */
start local 9 // int len
13: .line 515
aload 10 /* cipherBlock */
iconst_0
aload 7 /* rawkey */
iload 8 /* n */
iload 9 /* len */
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
14: .line 516
iload 8 /* n */
iload 9 /* len */
iadd
istore 8 /* n */
15: .line 517
aload 10 /* cipherBlock */
astore 5 /* toBeEncrypted */
end local 10 // byte[] cipherBlock
end local 9 // int len
16: .line 498
StackMap locals: sun.security.krb5.internal.crypto.dk.DkCrypto byte[] byte[] javax.crypto.Cipher int byte[] int byte[] int
StackMap stack:
iload 8 /* n */
iload 6 /* keybytes */
if_icmplt 9
17: .line 519
aload 7 /* rawkey */
areturn
end local 8 // int n
end local 7 // byte[] rawkey
end local 6 // int keybytes
end local 5 // byte[] toBeEncrypted
end local 4 // int blocksize
end local 3 // javax.crypto.Cipher encCipher
end local 2 // byte[] constant
end local 1 // byte[] key
end local 0 // sun.security.krb5.internal.crypto.dk.DkCrypto this
LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lsun/security/krb5/internal/crypto/dk/DkCrypto;
0 18 1 key [B
0 18 2 constant [B
1 18 3 encCipher Ljavax/crypto/Cipher;
2 18 4 blocksize I
5 18 5 toBeEncrypted [B
6 18 6 keybytes I
7 18 7 rawkey [B
8 18 8 n I
13 16 9 len I
10 16 10 cipherBlock [B
Exceptions:
throws java.security.GeneralSecurityException
MethodParameters:
Name Flags
key
constant
static byte[] nfold(byte[], int);
descriptor: ([BI)[B
flags: (0x0008) ACC_STATIC
Code:
stack=5, locals=13, args_size=2
start local 0 // byte[] in
start local 1 // int outbits
0: .line 544
aload 0 /* in */
arraylength
istore 2 /* inbits */
start local 2 // int inbits
1: .line 545
iload 1 /* outbits */
iconst_3
ishr
istore 1 /* outbits */
2: .line 549
iload 1 /* outbits */
istore 3 /* a */
start local 3 // int a
3: .line 550
iload 2 /* inbits */
istore 4 /* b */
start local 4 // int b
4: .line 552
goto 8
5: .line 553
StackMap locals: int int int
StackMap stack:
iload 4 /* b */
istore 5 /* c */
start local 5 // int c
6: .line 554
iload 3 /* a */
iload 4 /* b */
irem
istore 4 /* b */
7: .line 555
iload 5 /* c */
istore 3 /* a */
end local 5 // int c
8: .line 552
StackMap locals:
StackMap stack:
iload 4 /* b */
ifne 5
9: .line 557
iload 1 /* outbits */
iload 2 /* inbits */
imul
iload 3 /* a */
idiv
istore 6 /* lcm */
start local 6 // int lcm
10: .line 566
iload 1 /* outbits */
newarray 8
astore 7 /* out */
start local 7 // byte[] out
11: .line 567
aload 7 /* out */
iconst_0
invokestatic java.util.Arrays.fill:([BB)V
12: .line 569
iconst_0
istore 8 /* thisbyte */
start local 8 // int thisbyte
13: .line 574
iload 6 /* lcm */
iconst_1
isub
istore 10 /* i */
start local 10 // int i
14: goto 35
15: .line 577
StackMap locals: byte[] int int int int top int byte[] int top int
StackMap stack:
iload 2 /* inbits */
iconst_3
ishl
iconst_1
isub
16: .line 579
iload 2 /* inbits */
iconst_3
ishl
bipush 13
iadd
iload 10 /* i */
iload 2 /* inbits */
idiv
imul
17: .line 577
iadd
18: .line 581
iload 2 /* inbits */
iload 10 /* i */
iload 2 /* inbits */
irem
isub
iconst_3
ishl
19: .line 576
iadd
20: .line 581
iload 2 /* inbits */
iconst_3
ishl
21: .line 576
irem
istore 9 /* msbit */
start local 9 // int msbit
22: .line 586
aload 0 /* in */
iload 2 /* inbits */
iconst_1
isub
iload 9 /* msbit */
iconst_3
iushr
isub
iload 2 /* inbits */
irem
baload
sipush 255
iand
bipush 8
ishl
23: .line 587
aload 0 /* in */
iload 2 /* inbits */
iload 9 /* msbit */
iconst_3
iushr
isub
iload 2 /* inbits */
irem
baload
sipush 255
iand
24: .line 586
ior
25: .line 588
iload 9 /* msbit */
bipush 7
iand
iconst_1
iadd
26: .line 586
iushr
27: .line 588
sipush 255
28: .line 586
iand
istore 11 /* bval */
start local 11 // int bval
29: .line 597
iload 8 /* thisbyte */
iload 11 /* bval */
iadd
istore 8 /* thisbyte */
30: .line 601
aload 7 /* out */
iload 10 /* i */
iload 1 /* outbits */
irem
baload
sipush 255
iand
istore 12 /* oval */
start local 12 // int oval
31: .line 602
iload 8 /* thisbyte */
iload 12 /* oval */
iadd
istore 8 /* thisbyte */
32: .line 603
aload 7 /* out */
iload 10 /* i */
iload 1 /* outbits */
irem
iload 8 /* thisbyte */
sipush 255
iand
i2b
bastore
33: .line 614
iload 8 /* thisbyte */
bipush 8
iushr
istore 8 /* thisbyte */
34: .line 574
iinc 10 /* i */ -1
end local 12 // int oval
end local 11 // int bval
end local 9 // int msbit
StackMap locals:
StackMap stack:
35: iload 10 /* i */
ifge 15
36: .line 622
iload 8 /* thisbyte */
ifeq 43
37: .line 623
iload 1 /* outbits */
iconst_1
isub
istore 10 /* i */
goto 42
38: .line 625
StackMap locals:
StackMap stack:
iload 8 /* thisbyte */
aload 7 /* out */
iload 10 /* i */
baload
sipush 255
iand
iadd
istore 8 /* thisbyte */
39: .line 626
aload 7 /* out */
iload 10 /* i */
iload 8 /* thisbyte */
sipush 255
iand
i2b
bastore
40: .line 629
iload 8 /* thisbyte */
bipush 8
iushr
istore 8 /* thisbyte */
41: .line 623
iinc 10 /* i */ -1
StackMap locals:
StackMap stack:
42: iload 10 /* i */
ifge 38
43: .line 633
StackMap locals:
StackMap stack:
aload 7 /* out */
areturn
end local 10 // int i
end local 8 // int thisbyte
end local 7 // byte[] out
end local 6 // int lcm
end local 4 // int b
end local 3 // int a
end local 2 // int inbits
end local 1 // int outbits
end local 0 // byte[] in
LocalVariableTable:
Start End Slot Name Signature
0 44 0 in [B
0 44 1 outbits I
1 44 2 inbits I
3 44 3 a I
4 44 4 b I
6 8 5 c I
10 44 6 lcm I
11 44 7 out [B
13 44 8 thisbyte I
22 35 9 msbit I
14 44 10 i I
29 35 11 bval I
31 35 12 oval I
MethodParameters:
Name Flags
in
outbits
static java.lang.String bytesToString(byte[]);
descriptor: ([B)Ljava/lang/String;
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=3, args_size=1
start local 0 // byte[] digest
0: .line 639
new java.lang.StringBuffer
dup
invokespecial java.lang.StringBuffer.<init>:()V
astore 1 /* digestString */
start local 1 // java.lang.StringBuffer digestString
1: .line 641
iconst_0
istore 2 /* i */
start local 2 // int i
2: goto 12
3: .line 642
StackMap locals: java.lang.StringBuffer int
StackMap stack:
aload 0 /* digest */
iload 2 /* i */
baload
sipush 255
iand
bipush 16
if_icmpge 8
4: .line 643
aload 1 /* digestString */
new java.lang.StringBuilder
dup
ldc "0"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
5: .line 644
aload 0 /* digest */
iload 2 /* i */
baload
sipush 255
iand
invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
6: .line 643
invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
pop
7: .line 645
goto 11
8: .line 646
StackMap locals:
StackMap stack:
aload 1 /* digestString */
9: .line 647
aload 0 /* digest */
iload 2 /* i */
baload
sipush 255
iand
invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
10: .line 646
invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
pop
11: .line 641
StackMap locals:
StackMap stack:
iinc 2 /* i */ 1
StackMap locals:
StackMap stack:
12: iload 2 /* i */
aload 0 /* digest */
arraylength
if_icmplt 3
end local 2 // int i
13: .line 650
aload 1 /* digestString */
invokevirtual java.lang.StringBuffer.toString:()Ljava/lang/String;
areturn
end local 1 // java.lang.StringBuffer digestString
end local 0 // byte[] digest
LocalVariableTable:
Start End Slot Name Signature
0 14 0 digest [B
1 14 1 digestString Ljava/lang/StringBuffer;
2 13 2 i I
MethodParameters:
Name Flags
digest
private static byte[] binaryStringToBytes(java.lang.String);
descriptor: (Ljava/lang/String;)[B
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=6, args_size=1
start local 0 // java.lang.String str
0: .line 654
aload 0 /* str */
invokevirtual java.lang.String.toCharArray:()[C
astore 1 /* usageStr */
start local 1 // char[] usageStr
1: .line 655
aload 1 /* usageStr */
arraylength
iconst_2
idiv
newarray 8
astore 2 /* usage */
start local 2 // byte[] usage
2: .line 656
iconst_0
istore 3 /* i */
start local 3 // int i
3: goto 8
4: .line 657
StackMap locals: char[] byte[] int
StackMap stack:
new java.lang.String
dup
aload 1 /* usageStr */
iload 3 /* i */
iconst_2
imul
iconst_1
invokespecial java.lang.String.<init>:([CII)V
bipush 16
invokestatic java.lang.Byte.parseByte:(Ljava/lang/String;I)B
istore 4 /* a */
start local 4 // byte a
5: .line 658
new java.lang.String
dup
aload 1 /* usageStr */
iload 3 /* i */
iconst_2
imul
iconst_1
iadd
iconst_1
invokespecial java.lang.String.<init>:([CII)V
bipush 16
invokestatic java.lang.Byte.parseByte:(Ljava/lang/String;I)B
istore 5 /* b */
start local 5 // byte b
6: .line 659
aload 2 /* usage */
iload 3 /* i */
iload 4 /* a */
iconst_4
ishl
iload 5 /* b */
ior
i2b
bastore
end local 5 // byte b
end local 4 // byte a
7: .line 656
iinc 3 /* i */ 1
StackMap locals:
StackMap stack:
8: iload 3 /* i */
aload 2 /* usage */
arraylength
if_icmplt 4
end local 3 // int i
9: .line 661
aload 2 /* usage */
areturn
end local 2 // byte[] usage
end local 1 // char[] usageStr
end local 0 // java.lang.String str
LocalVariableTable:
Start End Slot Name Signature
0 10 0 str Ljava/lang/String;
1 10 1 usageStr [C
2 10 2 usage [B
3 9 3 i I
5 7 4 a B
6 7 5 b B
MethodParameters:
Name Flags
str
static void traceOutput(java.lang.String, byte[], int, int);
descriptor: (Ljava/lang/String;[BII)V
flags: (0x0008) ACC_STATIC
Code:
stack=6, locals=5, args_size=4
start local 0 // java.lang.String traceTag
start local 1 // byte[] output
start local 2 // int offset
start local 3 // int len
0: .line 667
new java.io.ByteArrayOutputStream
dup
iload 3 /* len */
invokespecial java.io.ByteArrayOutputStream.<init>:(I)V
astore 4 /* out */
start local 4 // java.io.ByteArrayOutputStream out
1: .line 668
new sun.misc.HexDumpEncoder
dup
invokespecial sun.misc.HexDumpEncoder.<init>:()V
2: .line 669
new java.io.ByteArrayInputStream
dup
aload 1 /* output */
iload 2 /* offset */
iload 3 /* len */
invokespecial java.io.ByteArrayInputStream.<init>:([BII)V
aload 4 /* out */
3: .line 668
invokevirtual sun.misc.HexDumpEncoder.encodeBuffer:(Ljava/io/InputStream;Ljava/io/OutputStream;)V
4: .line 671
getstatic java.lang.System.err:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
aload 0 /* traceTag */
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 4 /* out */
invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
end local 4 // java.io.ByteArrayOutputStream out
5: .line 672
goto 7
StackMap locals:
StackMap stack: java.lang.Exception
6: pop
7: .line 674
StackMap locals:
StackMap stack:
return
end local 3 // int len
end local 2 // int offset
end local 1 // byte[] output
end local 0 // java.lang.String traceTag
LocalVariableTable:
Start End Slot Name Signature
0 8 0 traceTag Ljava/lang/String;
0 8 1 output [B
0 8 2 offset I
0 8 3 len I
1 5 4 out Ljava/io/ByteArrayOutputStream;
Exception table:
from to target type
0 5 6 Class java.lang.Exception
MethodParameters:
Name Flags
traceTag
output
offset
len
static byte[] charToUtf8(char[]);
descriptor: ([C)[B
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=6, args_size=1
start local 0 // char[] chars
0: .line 679
ldc "UTF-8"
invokestatic java.nio.charset.Charset.forName:(Ljava/lang/String;)Ljava/nio/charset/Charset;
astore 1 /* utf8 */
start local 1 // java.nio.charset.Charset utf8
1: .line 681
aload 0 /* chars */
invokestatic java.nio.CharBuffer.wrap:([C)Ljava/nio/CharBuffer;
astore 2 /* cb */
start local 2 // java.nio.CharBuffer cb
2: .line 682
aload 1 /* utf8 */
aload 2 /* cb */
invokevirtual java.nio.charset.Charset.encode:(Ljava/nio/CharBuffer;)Ljava/nio/ByteBuffer;
astore 3 /* bb */
start local 3 // java.nio.ByteBuffer bb
3: .line 683
aload 3 /* bb */
invokevirtual java.nio.ByteBuffer.limit:()I
istore 4 /* len */
start local 4 // int len
4: .line 684
iload 4 /* len */
newarray 8
astore 5 /* answer */
start local 5 // byte[] answer
5: .line 685
aload 3 /* bb */
aload 5 /* answer */
iconst_0
iload 4 /* len */
invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
pop
6: .line 686
aload 5 /* answer */
areturn
end local 5 // byte[] answer
end local 4 // int len
end local 3 // java.nio.ByteBuffer bb
end local 2 // java.nio.CharBuffer cb
end local 1 // java.nio.charset.Charset utf8
end local 0 // char[] chars
LocalVariableTable:
Start End Slot Name Signature
0 7 0 chars [C
1 7 1 utf8 Ljava/nio/charset/Charset;
2 7 2 cb Ljava/nio/CharBuffer;
3 7 3 bb Ljava/nio/ByteBuffer;
4 7 4 len I
5 7 5 answer [B
MethodParameters:
Name Flags
chars
static byte[] charToUtf16(char[]);
descriptor: ([C)[B
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=6, args_size=1
start local 0 // char[] chars
0: .line 690
ldc "UTF-16LE"
invokestatic java.nio.charset.Charset.forName:(Ljava/lang/String;)Ljava/nio/charset/Charset;
astore 1 /* utf8 */
start local 1 // java.nio.charset.Charset utf8
1: .line 692
aload 0 /* chars */
invokestatic java.nio.CharBuffer.wrap:([C)Ljava/nio/CharBuffer;
astore 2 /* cb */
start local 2 // java.nio.CharBuffer cb
2: .line 693
aload 1 /* utf8 */
aload 2 /* cb */
invokevirtual java.nio.charset.Charset.encode:(Ljava/nio/CharBuffer;)Ljava/nio/ByteBuffer;
astore 3 /* bb */
start local 3 // java.nio.ByteBuffer bb
3: .line 694
aload 3 /* bb */
invokevirtual java.nio.ByteBuffer.limit:()I
istore 4 /* len */
start local 4 // int len
4: .line 695
iload 4 /* len */
newarray 8
astore 5 /* answer */
start local 5 // byte[] answer
5: .line 696
aload 3 /* bb */
aload 5 /* answer */
iconst_0
iload 4 /* len */
invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
pop
6: .line 697
aload 5 /* answer */
areturn
end local 5 // byte[] answer
end local 4 // int len
end local 3 // java.nio.ByteBuffer bb
end local 2 // java.nio.CharBuffer cb
end local 1 // java.nio.charset.Charset utf8
end local 0 // char[] chars
LocalVariableTable:
Start End Slot Name Signature
0 7 0 chars [C
1 7 1 utf8 Ljava/nio/charset/Charset;
2 7 2 cb Ljava/nio/CharBuffer;
3 7 3 bb Ljava/nio/ByteBuffer;
4 7 4 len I
5 7 5 answer [B
MethodParameters:
Name Flags
chars
}
SourceFile: "DkCrypto.java"