final class com.sun.crypto.provider.ISO10126Padding 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.ISO10126Padding
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.ISO10126Padding this
start local 1 // int blockSize
0: .line 42
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
1: .line 43
aload 0 /* this */
iload 1 /* blockSize */
putfield com.sun.crypto.provider.ISO10126Padding.blockSize:I
2: .line 44
return
end local 1 // int blockSize
end local 0 // com.sun.crypto.provider.ISO10126Padding this
LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/sun/crypto/provider/ISO10126Padding;
0 3 1 blockSize I
MethodParameters:
Name Flags
blockSize
public void padWithLen(byte[], int, int);
descriptor: ([BII)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=7, args_size=4
start local 0 // com.sun.crypto.provider.ISO10126Padding this
start local 1 // byte[] in
start local 2 // int off
start local 3 // int len
0: .line 63
aload 1 /* in */
ifnonnull 2
1: .line 64
return
2: .line 66
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 67
iload 4 /* idx */
aload 1 /* in */
arraylength
if_icmple 5
4: .line 68
new javax.crypto.ShortBufferException
dup
ldc "Buffer too small to hold padding"
invokespecial javax.crypto.ShortBufferException.<init>:(Ljava/lang/String;)V
athrow
5: .line 71
StackMap locals: int
StackMap stack:
iload 3 /* len */
sipush 255
iand
i2b
istore 5 /* paddingOctet */
start local 5 // byte paddingOctet
6: .line 72
iload 3 /* len */
iconst_1
isub
newarray 8
astore 6 /* padding */
start local 6 // byte[] padding
7: .line 73
getstatic com.sun.crypto.provider.SunJCE.RANDOM:Ljava/security/SecureRandom;
aload 6 /* padding */
invokevirtual java.security.SecureRandom.nextBytes:([B)V
8: .line 74
aload 6 /* padding */
iconst_0
aload 1 /* in */
iload 2 /* off */
iload 3 /* len */
iconst_1
isub
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
9: .line 75
aload 1 /* in */
iload 4 /* idx */
iconst_1
isub
iload 5 /* paddingOctet */
bastore
10: .line 76
return
end local 6 // byte[] padding
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.ISO10126Padding this
LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lcom/sun/crypto/provider/ISO10126Padding;
0 11 1 in [B
0 11 2 off I
0 11 3 len I
3 11 4 idx I
6 11 5 paddingOctet B
7 11 6 padding [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=8, args_size=4
start local 0 // com.sun.crypto.provider.ISO10126Padding this
start local 1 // byte[] in
start local 2 // int off
start local 3 // int len
0: .line 93
aload 1 /* in */
ifnull 2
1: .line 94
iload 3 /* len */
ifne 3
2: .line 95
StackMap locals:
StackMap stack:
iconst_0
ireturn
3: .line 98
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 99
aload 1 /* in */
iload 4 /* idx */
iconst_1
isub
baload
istore 5 /* lastByte */
start local 5 // byte lastByte
5: .line 100
iload 5 /* lastByte */
sipush 255
iand
istore 6 /* padValue */
start local 6 // int padValue
6: .line 101
iload 6 /* padValue */
iconst_1
if_icmplt 8
7: .line 102
iload 6 /* padValue */
aload 0 /* this */
getfield com.sun.crypto.provider.ISO10126Padding.blockSize:I
if_icmple 9
8: .line 103
StackMap locals: int int int
StackMap stack:
iconst_m1
ireturn
9: .line 106
StackMap locals:
StackMap stack:
iload 4 /* idx */
iload 6 /* padValue */
isub
istore 7 /* start */
start local 7 // int start
10: .line 107
iload 7 /* start */
iload 2 /* off */
if_icmpge 12
11: .line 108
iconst_m1
ireturn
12: .line 111
StackMap locals: int
StackMap stack:
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.ISO10126Padding this
LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lcom/sun/crypto/provider/ISO10126Padding;
0 13 1 in [B
0 13 2 off I
0 13 3 len I
4 13 4 idx I
5 13 5 lastByte B
6 13 6 padValue I
10 13 7 start 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.ISO10126Padding this
start local 1 // int len
0: .line 122
aload 0 /* this */
getfield com.sun.crypto.provider.ISO10126Padding.blockSize:I
iload 1 /* len */
aload 0 /* this */
getfield com.sun.crypto.provider.ISO10126Padding.blockSize:I
irem
isub
istore 2 /* paddingOctet */
start local 2 // int paddingOctet
1: .line 123
iload 2 /* paddingOctet */
ireturn
end local 2 // int paddingOctet
end local 1 // int len
end local 0 // com.sun.crypto.provider.ISO10126Padding this
LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/sun/crypto/provider/ISO10126Padding;
0 2 1 len I
1 2 2 paddingOctet I
MethodParameters:
Name Flags
len
}
SourceFile: "ISO10126Padding.java"