class com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding implements com.oracle.security.ucrypto.NativeCipherWithJavaPadding$Padding
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding
super_class: java.lang.Object
{
private final int blockSize;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private java.nio.ByteBuffer trailingBytes;
descriptor: Ljava/nio/ByteBuffer;
flags: (0x0002) ACC_PRIVATE
void <init>(int);
descriptor: (I)V
flags: (0x0000)
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aconst_null
putfield com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.trailingBytes:Ljava/nio/ByteBuffer;
2: iload 1
ifne 6
3: new javax.crypto.NoSuchPaddingException
dup
4: ldc "PKCS#5 padding not supported with stream ciphers"
5: invokespecial javax.crypto.NoSuchPaddingException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals: com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding int
StackMap stack:
aload 0
iload 1
putfield com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.blockSize:I
7: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lcom/oracle/security/ucrypto/NativeCipherWithJavaPadding$PKCS5Padding;
0 8 1 blockSize I
Exceptions:
throws javax.crypto.NoSuchPaddingException
MethodParameters:
Name Flags
blockSize
public int getPadLen(int);
descriptor: (I)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.blockSize:I
iload 1
aload 0
getfield com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.blockSize:I
iconst_1
isub
iand
isub
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/security/ucrypto/NativeCipherWithJavaPadding$PKCS5Padding;
0 1 1 dataLen I
MethodParameters:
Name Flags
dataLen
public byte[] getPaddingBytes(int);
descriptor: (I)[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=4, args_size=2
start local 0 start local 1 0: aload 0
iload 1
invokevirtual com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.getPadLen:(I)I
i2b
istore 2
start local 2 1: iload 2
newarray 8
astore 3
start local 3 2: aload 3
iload 2
invokestatic java.util.Arrays.fill:([BB)V
3: aload 3
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/oracle/security/ucrypto/NativeCipherWithJavaPadding$PKCS5Padding;
0 4 1 dataLen I
1 4 2 padValue B
2 4 3 paddingBytes [B
MethodParameters:
Name Flags
dataLen
public byte[] bufferBytes(byte[]);
descriptor: ([B)[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=6, args_size=2
start local 0 start local 1 0: aload 1
ifnull 1
aload 1
arraylength
ifne 2
1: StackMap locals:
StackMap stack:
aconst_null
areturn
2: StackMap locals:
StackMap stack:
aconst_null
astore 2
start local 2 3: aload 0
getfield com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.trailingBytes:Ljava/nio/ByteBuffer;
ifnonnull 5
4: aload 0
aload 0
getfield com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.blockSize:I
newarray 8
invokestatic java.nio.ByteBuffer.wrap:([B)Ljava/nio/ByteBuffer;
putfield com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.trailingBytes:Ljava/nio/ByteBuffer;
5: StackMap locals: byte[]
StackMap stack:
aload 0
getfield com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.trailingBytes:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.position:()I
istore 3
start local 3 6: aload 1
arraylength
aload 0
getfield com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.trailingBytes:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.remaining:()I
if_icmple 26
7: aload 1
arraylength
iload 3
iadd
istore 4
start local 4 8: iload 4
aload 0
getfield com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.blockSize:I
irem
istore 5
start local 5 9: iload 5
ifne 11
10: aload 0
getfield com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.blockSize:I
istore 5
11: StackMap locals: int int int
StackMap stack:
iload 3
ifne 14
12: aload 1
iload 4
iload 5
isub
invokestatic java.util.Arrays.copyOf:([BI)[B
astore 2
13: goto 21
14: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.trailingBytes:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.array:()[B
15: iload 4
iload 5
isub
16: invokestatic java.util.Arrays.copyOf:([BI)[B
astore 2
17: aload 2
arraylength
iload 3
if_icmpeq 21
18: aload 1
iconst_0
aload 2
iload 3
19: aload 2
arraylength
iload 3
isub
20: invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
21: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.trailingBytes:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.clear:()Ljava/nio/ByteBuffer;
pop
22: aload 0
getfield com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.trailingBytes:Ljava/nio/ByteBuffer;
aload 1
23: aload 1
arraylength
iload 5
isub
iload 5
24: invokevirtual java.nio.ByteBuffer.put:([BII)Ljava/nio/ByteBuffer;
pop
end local 5 end local 4 25: goto 27
26: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.trailingBytes:Ljava/nio/ByteBuffer;
aload 1
invokevirtual java.nio.ByteBuffer.put:([B)Ljava/nio/ByteBuffer;
pop
27: StackMap locals:
StackMap stack:
aload 2
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 28 0 this Lcom/oracle/security/ucrypto/NativeCipherWithJavaPadding$PKCS5Padding;
0 28 1 dataFromUpdate [B
3 28 2 result [B
6 28 3 tbSize I
8 25 4 totalLen I
9 25 5 newTBSize I
MethodParameters:
Name Flags
dataFromUpdate
public int getBufferedLength();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.trailingBytes:Ljava/nio/ByteBuffer;
ifnull 2
1: aload 0
getfield com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.trailingBytes:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.position:()I
ireturn
2: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/oracle/security/ucrypto/NativeCipherWithJavaPadding$PKCS5Padding;
public int unpad(byte[], byte[], int);
descriptor: ([B[BI)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=11, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.trailingBytes:Ljava/nio/ByteBuffer;
ifnonnull 1
iconst_0
goto 2
StackMap locals:
StackMap stack:
1: aload 0
getfield com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.trailingBytes:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.position:()I
StackMap locals:
StackMap stack: int
2: istore 4
start local 4 3: iload 4
aload 1
arraylength
iadd
istore 5
start local 5 4: iload 5
ifgt 6
5: iconst_0
ireturn
6: StackMap locals: int int
StackMap stack:
iload 5
aload 0
getfield com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.blockSize:I
irem
ifeq 13
7: new java.lang.StringBuilder
dup
ldc "PKCS5Padding: unpad, buffered "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 4
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
8: ldc " bytes, last block "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 1
arraylength
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " bytes"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
9: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic com.oracle.security.ucrypto.UcryptoProvider.debug:(Ljava/lang/String;)V
10: new javax.crypto.IllegalBlockSizeException
dup
11: new java.lang.StringBuilder
dup
ldc "Input length must be multiples of "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.blockSize:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
12: invokespecial javax.crypto.IllegalBlockSizeException.<init>:(Ljava/lang/String;)V
athrow
13: StackMap locals:
StackMap stack:
aload 1
arraylength
ifne 20
14: iload 4
ifeq 19
15: aload 0
getfield com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.trailingBytes:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.array:()[B
iload 4
invokestatic java.util.Arrays.copyOf:([BI)[B
astore 1
16: aload 0
getfield com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.trailingBytes:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.clear:()Ljava/nio/ByteBuffer;
pop
17: iconst_0
istore 4
18: goto 20
19: StackMap locals:
StackMap stack:
new javax.crypto.BadPaddingException
dup
ldc "No pad bytes found!"
invokespecial javax.crypto.BadPaddingException.<init>:(Ljava/lang/String;)V
athrow
20: StackMap locals:
StackMap stack:
aload 1
aload 1
arraylength
iconst_1
isub
baload
istore 6
start local 6 21: iload 6
iconst_1
if_icmplt 22
iload 6
aload 0
getfield com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.blockSize:I
if_icmple 25
22: StackMap locals: int
StackMap stack:
new java.lang.StringBuilder
dup
ldc "PKCS5Padding: unpad, lastData: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokestatic java.util.Arrays.toString:([B)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic com.oracle.security.ucrypto.UcryptoProvider.debug:(Ljava/lang/String;)V
23: new java.lang.StringBuilder
dup
ldc "PKCS5Padding: unpad, padValue="
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 6
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic com.oracle.security.ucrypto.UcryptoProvider.debug:(Ljava/lang/String;)V
24: new javax.crypto.BadPaddingException
dup
new java.lang.StringBuilder
dup
ldc "Invalid pad value: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 6
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial javax.crypto.BadPaddingException.<init>:(Ljava/lang/String;)V
athrow
25: StackMap locals:
StackMap stack:
aload 1
arraylength
iload 6
isub
istore 7
start local 7 26: iload 7
istore 8
start local 8 27: goto 33
28: StackMap locals: int int
StackMap stack:
aload 1
iload 8
baload
iload 6
if_icmpeq 32
29: new java.lang.StringBuilder
dup
ldc "PKCS5Padding: unpad, lastData: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokestatic java.util.Arrays.toString:([B)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic com.oracle.security.ucrypto.UcryptoProvider.debug:(Ljava/lang/String;)V
30: new java.lang.StringBuilder
dup
ldc "PKCS5Padding: unpad, padValue="
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 6
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic com.oracle.security.ucrypto.UcryptoProvider.debug:(Ljava/lang/String;)V
31: new javax.crypto.BadPaddingException
dup
ldc "Invalid padding bytes!"
invokespecial javax.crypto.BadPaddingException.<init>:(Ljava/lang/String;)V
athrow
32: StackMap locals:
StackMap stack:
iinc 8 1
StackMap locals:
StackMap stack:
33: iload 8
aload 1
arraylength
if_icmplt 28
end local 8 34: iload 5
iload 6
isub
istore 8
start local 8 35: aload 2
arraylength
iload 3
isub
iload 8
if_icmpge 39
36: new javax.crypto.ShortBufferException
dup
new java.lang.StringBuilder
dup
ldc "Output buffer too small, need "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 8
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
37: ldc ", got "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 2
arraylength
iload 3
isub
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
38: invokespecial javax.crypto.ShortBufferException.<init>:(Ljava/lang/String;)V
athrow
39: StackMap locals:
StackMap stack:
iload 4
ifeq 49
40: aload 0
getfield com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.trailingBytes:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.rewind:()Ljava/nio/ByteBuffer;
pop
41: iload 4
iload 8
if_icmpge 45
42: aload 0
getfield com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.trailingBytes:Ljava/nio/ByteBuffer;
aload 2
iload 3
iload 4
invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
pop
43: iload 3
iload 4
iadd
istore 3
44: goto 49
45: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.trailingBytes:Ljava/nio/ByteBuffer;
aload 2
iload 3
iload 8
invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
pop
46: iload 8
istore 10
47: aload 0
invokevirtual com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.clear:()V
48: iload 10
ireturn
49: StackMap locals:
StackMap stack:
aload 1
arraylength
iload 6
if_icmple 53
50: aload 1
iconst_0
aload 2
iload 3
51: aload 1
arraylength
iload 6
isub
52: invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
53: StackMap locals:
StackMap stack:
iload 8
istore 10
54: aload 0
invokevirtual com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.clear:()V
55: iload 10
ireturn
56: StackMap locals:
StackMap stack: java.lang.Throwable
astore 9
57: aload 0
invokevirtual com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.clear:()V
58: aload 9
athrow
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 59 0 this Lcom/oracle/security/ucrypto/NativeCipherWithJavaPadding$PKCS5Padding;
0 59 1 lastData [B
0 59 2 out [B
0 59 3 outOfs I
3 59 4 tbSize I
4 59 5 dataLen I
21 59 6 padValue B
26 59 7 padStartIndex I
27 34 8 i I
35 59 8 actualOutLen I
Exception table:
from to target type
39 47 56 any
49 54 56 any
Exceptions:
throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException, javax.crypto.ShortBufferException
MethodParameters:
Name Flags
lastData
out
outOfs
public void clear();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.trailingBytes:Ljava/nio/ByteBuffer;
ifnull 1
aload 0
getfield com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding.trailingBytes:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.clear:()Ljava/nio/ByteBuffer;
pop
1: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/security/ucrypto/NativeCipherWithJavaPadding$PKCS5Padding;
}
SourceFile: "NativeCipherWithJavaPadding.java"
NestHost: com.oracle.security.ucrypto.NativeCipherWithJavaPadding
InnerClasses:
private PKCS5Padding = com.oracle.security.ucrypto.NativeCipherWithJavaPadding$PKCS5Padding of com.oracle.security.ucrypto.NativeCipherWithJavaPadding
private abstract Padding = com.oracle.security.ucrypto.NativeCipherWithJavaPadding$Padding of com.oracle.security.ucrypto.NativeCipherWithJavaPadding