final class com.sun.crypto.provider.PKCS5Padding implements com.sun.crypto.provider.Padding
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: com.sun.crypto.provider.PKCS5Padding
super_class: java.lang.Object
{
private int blockSize;
descriptor: I
flags: (0x0002) ACC_PRIVATE
void <init>(int);
descriptor: (I)V
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 // com.sun.crypto.provider.PKCS5Padding this
start local 1 // int blockSize
0: .line 43
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
1: .line 44
aload 0 /* this */
iload 1 /* blockSize */
putfield com.sun.crypto.provider.PKCS5Padding.blockSize:I
2: .line 45
return
end local 1 // int blockSize
end local 0 // com.sun.crypto.provider.PKCS5Padding this
LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/sun/crypto/provider/PKCS5Padding;
0 3 1 blockSize I
MethodParameters:
Name Flags
blockSize
public void padWithLen(byte[], int, int);
descriptor: ([BII)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=6, args_size=4
start local 0 // com.sun.crypto.provider.PKCS5Padding this
start local 1 // byte[] in
start local 2 // int off
start local 3 // int len
0: .line 64
aload 1 /* in */
ifnonnull 2
1: .line 65
return
2: .line 67
StackMap locals:
StackMap stack:
iload 2 /* off */
iload 3 /* len */
invokestatic com.sun.crypto.provider.CipherCore.addExact:(II)I
istore 4 /* idx */
start local 4 // int idx
3: .line 68
iload 4 /* idx */
aload 1 /* in */
arraylength
if_icmple 5
4: .line 69
new javax.crypto.ShortBufferException
dup
ldc "Buffer too small to hold padding"
invokespecial javax.crypto.ShortBufferException.<init>:(Ljava/lang/String;)V
athrow
5: .line 72
StackMap locals: int
StackMap stack:
iload 3 /* len */
sipush 255
iand
i2b
istore 5 /* paddingOctet */
start local 5 // byte paddingOctet
6: .line 73
aload 1 /* in */
iload 2 /* off */
iload 4 /* idx */
iload 5 /* paddingOctet */
invokestatic java.util.Arrays.fill:([BIIB)V
7: .line 74
return
end local 5 // byte paddingOctet
end local 4 // int idx
end local 3 // int len
end local 2 // int off
end local 1 // byte[] in
end local 0 // com.sun.crypto.provider.PKCS5Padding this
LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lcom/sun/crypto/provider/PKCS5Padding;
0 8 1 in [B
0 8 2 off I
0 8 3 len I
3 8 4 idx I
6 8 5 paddingOctet B
Exceptions:
throws javax.crypto.ShortBufferException
MethodParameters:
Name Flags
in
off
len
public int unpad(byte[], int, int);
descriptor: ([BII)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=9, args_size=4
start local 0 // com.sun.crypto.provider.PKCS5Padding this
start local 1 // byte[] in
start local 2 // int off
start local 3 // int len
0: .line 91
aload 1 /* in */
ifnull 2
1: .line 92
iload 3 /* len */
ifne 3
2: .line 93
StackMap locals:
StackMap stack:
iconst_0
ireturn
3: .line 95
StackMap locals:
StackMap stack:
iload 2 /* off */
iload 3 /* len */
invokestatic com.sun.crypto.provider.CipherCore.addExact:(II)I
istore 4 /* idx */
start local 4 // int idx
4: .line 96
aload 1 /* in */
iload 4 /* idx */
iconst_1
isub
baload
istore 5 /* lastByte */
start local 5 // byte lastByte
5: .line 97
iload 5 /* lastByte */
sipush 255
iand
istore 6 /* padValue */
start local 6 // int padValue
6: .line 98
iload 6 /* padValue */
iconst_1
if_icmplt 8
7: .line 99
iload 6 /* padValue */
aload 0 /* this */
getfield com.sun.crypto.provider.PKCS5Padding.blockSize:I
if_icmple 9
8: .line 100
StackMap locals: int int int
StackMap stack:
iconst_m1
ireturn
9: .line 103
StackMap locals:
StackMap stack:
iload 4 /* idx */
iload 6 /* padValue */
isub
istore 7 /* start */
start local 7 // int start
10: .line 104
iload 7 /* start */
iload 2 /* off */
if_icmpge 12
11: .line 105
iconst_m1
ireturn
12: .line 108
StackMap locals: int
StackMap stack:
iload 7 /* start */
istore 8 /* i */
start local 8 // int i
13: goto 17
14: .line 109
StackMap locals: int
StackMap stack:
aload 1 /* in */
iload 8 /* i */
baload
iload 5 /* lastByte */
if_icmpeq 16
15: .line 110
iconst_m1
ireturn
16: .line 108
StackMap locals:
StackMap stack:
iinc 8 /* i */ 1
StackMap locals:
StackMap stack:
17: iload 8 /* i */
iload 4 /* idx */
if_icmplt 14
end local 8 // int i
18: .line 113
iload 7 /* start */
ireturn
end local 7 // int start
end local 6 // int padValue
end local 5 // byte lastByte
end local 4 // int idx
end local 3 // int len
end local 2 // int off
end local 1 // byte[] in
end local 0 // com.sun.crypto.provider.PKCS5Padding this
LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Lcom/sun/crypto/provider/PKCS5Padding;
0 19 1 in [B
0 19 2 off I
0 19 3 len I
4 19 4 idx I
5 19 5 lastByte B
6 19 6 padValue I
10 19 7 start I
13 18 8 i I
MethodParameters:
Name Flags
in
off
len
public int padLength(int);
descriptor: (I)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=2
start local 0 // com.sun.crypto.provider.PKCS5Padding this
start local 1 // int len
0: .line 124
aload 0 /* this */
getfield com.sun.crypto.provider.PKCS5Padding.blockSize:I
iload 1 /* len */
aload 0 /* this */
getfield com.sun.crypto.provider.PKCS5Padding.blockSize:I
irem
isub
istore 2 /* paddingOctet */
start local 2 // int paddingOctet
1: .line 125
iload 2 /* paddingOctet */
ireturn
end local 2 // int paddingOctet
end local 1 // int len
end local 0 // com.sun.crypto.provider.PKCS5Padding this
LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/sun/crypto/provider/PKCS5Padding;
0 2 1 len I
1 2 2 paddingOctet I
MethodParameters:
Name Flags
len
}
SourceFile: "PKCS5Padding.java"