public class org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor extends org.apache.poi.poifs.crypt.Decryptor implements java.lang.Cloneable
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor
super_class: org.apache.poi.poifs.crypt.Decryptor
{
private long length;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private int chunkSize;
descriptor: I
flags: (0x0002) ACC_PRIVATE
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lorg/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDecryptor;
invokevirtual java.lang.Class.desiredAssertionStatus:()Z
ifne 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: putstatic org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor.$assertionsDisabled:Z
return
LocalVariableTable:
Start End Slot Name Signature
protected void <init>();
descriptor: ()V
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
invokespecial org.apache.poi.poifs.crypt.Decryptor.<init>:()V
1: aload 0
ldc -1
putfield org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor.length:J
2: aload 0
iconst_m1
putfield org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor.chunkSize:I
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDecryptor;
public boolean verifyPassword(java.lang.String);
descriptor: (Ljava/lang/String;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=12, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor.getEncryptionInfo:()Lorg/apache/poi/poifs/crypt/EncryptionInfo;
invokevirtual org.apache.poi.poifs.crypt.EncryptionInfo.getVerifier:()Lorg/apache/poi/poifs/crypt/EncryptionVerifier;
astore 2
start local 2 1: aload 1
aload 2
invokestatic org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor.generateSecretKey:(Ljava/lang/String;Lorg/apache/poi/poifs/crypt/EncryptionVerifier;)Ljavax/crypto/SecretKey;
astore 3
start local 3 2: aconst_null
iconst_0
aload 0
invokevirtual org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor.getEncryptionInfo:()Lorg/apache/poi/poifs/crypt/EncryptionInfo;
aload 3
iconst_2
invokestatic org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor.initCipherForBlock:(Ljavax/crypto/Cipher;ILorg/apache/poi/poifs/crypt/EncryptionInfo;Ljavax/crypto/SecretKey;I)Ljavax/crypto/Cipher;
astore 4
start local 4 3: aload 2
invokevirtual org.apache.poi.poifs.crypt.EncryptionVerifier.getEncryptedVerifier:()[B
astore 5
start local 5 4: aload 5
arraylength
newarray 8
astore 6
start local 6 5: aload 4
aload 5
iconst_0
aload 5
arraylength
aload 6
invokevirtual javax.crypto.Cipher.update:([BII[B)I
pop
6: aload 0
aload 6
invokevirtual org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor.setVerifier:([B)V
7: aload 2
invokevirtual org.apache.poi.poifs.crypt.EncryptionVerifier.getEncryptedVerifierHash:()[B
astore 7
start local 7 8: aload 4
aload 7
invokevirtual javax.crypto.Cipher.doFinal:([B)[B
astore 8
start local 8 9: aload 2
invokevirtual org.apache.poi.poifs.crypt.EncryptionVerifier.getHashAlgorithm:()Lorg/apache/poi/poifs/crypt/HashAlgorithm;
astore 9
start local 9 10: aload 9
invokestatic org.apache.poi.poifs.crypt.CryptoFunctions.getMessageDigest:(Lorg/apache/poi/poifs/crypt/HashAlgorithm;)Ljava/security/MessageDigest;
astore 10
start local 10 11: aload 10
aload 6
invokevirtual java.security.MessageDigest.digest:([B)[B
astore 11
start local 11 12: aload 11
aload 8
invokestatic java.util.Arrays.equals:([B[B)Z
ifeq 17
13: aload 0
aload 3
invokevirtual org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor.setSecretKey:(Ljavax/crypto/SecretKey;)V
14: iconst_1
ireturn
end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 15: StackMap locals: org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor java.lang.String org.apache.poi.poifs.crypt.EncryptionVerifier javax.crypto.SecretKey
StackMap stack: java.security.GeneralSecurityException
astore 4
start local 4 16: new org.apache.poi.EncryptedDocumentException
dup
aload 4
invokespecial org.apache.poi.EncryptedDocumentException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 4 17: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lorg/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDecryptor;
0 18 1 password Ljava/lang/String;
1 18 2 ver Lorg/apache/poi/poifs/crypt/EncryptionVerifier;
2 18 3 skey Ljavax/crypto/SecretKey;
3 15 4 cipher Ljavax/crypto/Cipher;
4 15 5 encryptedVerifier [B
5 15 6 verifier [B
8 15 7 encryptedVerifierHash [B
9 15 8 verifierHash [B
10 15 9 hashAlgo Lorg/apache/poi/poifs/crypt/HashAlgorithm;
11 15 10 hashAlg Ljava/security/MessageDigest;
12 15 11 calcVerifierHash [B
16 17 4 e Ljava/security/GeneralSecurityException;
Exception table:
from to target type
2 14 15 Class java.security.GeneralSecurityException
MethodParameters:
Name Flags
password
public javax.crypto.Cipher initCipherForBlock(javax.crypto.Cipher, int);
descriptor: (Ljavax/crypto/Cipher;I)Ljavax/crypto/Cipher;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor.getEncryptionInfo:()Lorg/apache/poi/poifs/crypt/EncryptionInfo;
astore 3
start local 3 1: aload 0
invokevirtual org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor.getSecretKey:()Ljavax/crypto/SecretKey;
astore 4
start local 4 2: aload 1
iload 2
aload 3
aload 4
iconst_2
invokestatic org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor.initCipherForBlock:(Ljavax/crypto/Cipher;ILorg/apache/poi/poifs/crypt/EncryptionInfo;Ljavax/crypto/SecretKey;I)Ljavax/crypto/Cipher;
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDecryptor;
0 3 1 cipher Ljavax/crypto/Cipher;
0 3 2 block I
1 3 3 ei Lorg/apache/poi/poifs/crypt/EncryptionInfo;
2 3 4 sk Ljavax/crypto/SecretKey;
Exceptions:
throws java.security.GeneralSecurityException
MethodParameters:
Name Flags
cipher
block
protected static javax.crypto.Cipher initCipherForBlock(javax.crypto.Cipher, int, org.apache.poi.poifs.crypt.EncryptionInfo, javax.crypto.SecretKey, int);
descriptor: (Ljavax/crypto/Cipher;ILorg/apache/poi/poifs/crypt/EncryptionInfo;Ljavax/crypto/SecretKey;I)Ljavax/crypto/Cipher;
flags: (0x000c) ACC_PROTECTED, ACC_STATIC
Code:
stack=5, locals=13, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 2
invokevirtual org.apache.poi.poifs.crypt.EncryptionInfo.getVerifier:()Lorg/apache/poi/poifs/crypt/EncryptionVerifier;
astore 5
start local 5 1: aload 5
invokevirtual org.apache.poi.poifs.crypt.EncryptionVerifier.getHashAlgorithm:()Lorg/apache/poi/poifs/crypt/HashAlgorithm;
astore 6
start local 6 2: iconst_4
newarray 8
astore 7
start local 7 3: aload 7
iconst_0
iload 1
i2l
invokestatic org.apache.poi.util.LittleEndian.putUInt:([BIJ)V
4: aload 6
invokestatic org.apache.poi.poifs.crypt.CryptoFunctions.getMessageDigest:(Lorg/apache/poi/poifs/crypt/HashAlgorithm;)Ljava/security/MessageDigest;
astore 8
start local 8 5: aload 8
aload 3
invokeinterface javax.crypto.SecretKey.getEncoded:()[B
invokevirtual java.security.MessageDigest.update:([B)V
6: aload 8
aload 7
invokevirtual java.security.MessageDigest.digest:([B)[B
astore 9
start local 9 7: aload 2
invokevirtual org.apache.poi.poifs.crypt.EncryptionInfo.getHeader:()Lorg/apache/poi/poifs/crypt/EncryptionHeader;
astore 10
start local 10 8: aload 10
invokevirtual org.apache.poi.poifs.crypt.EncryptionHeader.getKeySize:()I
istore 11
start local 11 9: aload 9
iload 11
bipush 8
idiv
invokestatic org.apache.poi.poifs.crypt.CryptoFunctions.getBlock0:([BI)[B
astore 9
10: iload 11
bipush 40
if_icmpne 12
11: aload 9
bipush 16
invokestatic org.apache.poi.poifs.crypt.CryptoFunctions.getBlock0:([BI)[B
astore 9
12: StackMap locals: javax.crypto.Cipher int org.apache.poi.poifs.crypt.EncryptionInfo javax.crypto.SecretKey int org.apache.poi.poifs.crypt.EncryptionVerifier org.apache.poi.poifs.crypt.HashAlgorithm byte[] java.security.MessageDigest byte[] org.apache.poi.poifs.crypt.EncryptionHeader int
StackMap stack:
new javax.crypto.spec.SecretKeySpec
dup
aload 9
aload 3
invokeinterface javax.crypto.SecretKey.getAlgorithm:()Ljava/lang/String;
invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
astore 12
start local 12 13: aload 0
ifnonnull 16
14: aload 12
aload 10
invokevirtual org.apache.poi.poifs.crypt.EncryptionHeader.getCipherAlgorithm:()Lorg/apache/poi/poifs/crypt/CipherAlgorithm;
aconst_null
aconst_null
iload 4
invokestatic org.apache.poi.poifs.crypt.CryptoFunctions.getCipher:(Ljavax/crypto/SecretKey;Lorg/apache/poi/poifs/crypt/CipherAlgorithm;Lorg/apache/poi/poifs/crypt/ChainingMode;[BI)Ljavax/crypto/Cipher;
astore 0
15: goto 17
16: StackMap locals: javax.crypto.SecretKey
StackMap stack:
aload 0
iload 4
aload 12
invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;)V
17: StackMap locals:
StackMap stack:
aload 0
areturn
end local 12 end local 11 end local 10 end local 9 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 18 0 cipher Ljavax/crypto/Cipher;
0 18 1 block I
0 18 2 encryptionInfo Lorg/apache/poi/poifs/crypt/EncryptionInfo;
0 18 3 skey Ljavax/crypto/SecretKey;
0 18 4 encryptMode I
1 18 5 ver Lorg/apache/poi/poifs/crypt/EncryptionVerifier;
2 18 6 hashAlgo Lorg/apache/poi/poifs/crypt/HashAlgorithm;
3 18 7 blockKey [B
5 18 8 hashAlg Ljava/security/MessageDigest;
7 18 9 encKey [B
8 18 10 header Lorg/apache/poi/poifs/crypt/EncryptionHeader;
9 18 11 keyBits I
13 18 12 key Ljavax/crypto/SecretKey;
Exceptions:
throws java.security.GeneralSecurityException
MethodParameters:
Name Flags
cipher
block
encryptionInfo
skey
encryptMode
protected static javax.crypto.SecretKey generateSecretKey(java.lang.String, org.apache.poi.poifs.crypt.EncryptionVerifier);
descriptor: (Ljava/lang/String;Lorg/apache/poi/poifs/crypt/EncryptionVerifier;)Ljavax/crypto/SecretKey;
flags: (0x000c) ACC_PROTECTED, ACC_STATIC
Code:
stack=4, locals=5, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual java.lang.String.length:()I
sipush 255
if_icmple 2
1: aload 0
iconst_0
sipush 255
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
astore 0
2: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.apache.poi.poifs.crypt.EncryptionVerifier.getHashAlgorithm:()Lorg/apache/poi/poifs/crypt/HashAlgorithm;
astore 2
start local 2 3: aload 2
invokestatic org.apache.poi.poifs.crypt.CryptoFunctions.getMessageDigest:(Lorg/apache/poi/poifs/crypt/HashAlgorithm;)Ljava/security/MessageDigest;
astore 3
start local 3 4: aload 3
aload 1
invokevirtual org.apache.poi.poifs.crypt.EncryptionVerifier.getSalt:()[B
invokevirtual java.security.MessageDigest.update:([B)V
5: aload 3
aload 0
invokestatic org.apache.poi.util.StringUtil.getToUnicodeLE:(Ljava/lang/String;)[B
invokevirtual java.security.MessageDigest.digest:([B)[B
astore 4
start local 4 6: new javax.crypto.spec.SecretKeySpec
dup
aload 4
aload 1
invokevirtual org.apache.poi.poifs.crypt.EncryptionVerifier.getCipherAlgorithm:()Lorg/apache/poi/poifs/crypt/CipherAlgorithm;
getfield org.apache.poi.poifs.crypt.CipherAlgorithm.jceId:Ljava/lang/String;
invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 password Ljava/lang/String;
0 7 1 ver Lorg/apache/poi/poifs/crypt/EncryptionVerifier;
3 7 2 hashAlgo Lorg/apache/poi/poifs/crypt/HashAlgorithm;
4 7 3 hashAlg Ljava/security/MessageDigest;
6 7 4 hash [B
MethodParameters:
Name Flags
password
ver
public org.apache.poi.poifs.crypt.ChunkedCipherInputStream getDataStream(org.apache.poi.poifs.filesystem.DirectoryNode);
descriptor: (Lorg/apache/poi/poifs/filesystem/DirectoryNode;)Lorg/apache/poi/poifs/crypt/ChunkedCipherInputStream;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: new java.io.IOException
dup
ldc "not supported"
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDecryptor;
0 1 1 dir Lorg/apache/poi/poifs/filesystem/DirectoryNode;
Exceptions:
throws java.io.IOException, java.security.GeneralSecurityException
MethodParameters:
Name Flags
dir
public org.apache.poi.poifs.crypt.ChunkedCipherInputStream getDataStream(java.io.InputStream, int, int);
descriptor: (Ljava/io/InputStream;II)Lorg/apache/poi/poifs/crypt/ChunkedCipherInputStream;
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: new org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor$CryptoAPICipherInputStream
dup
aload 0
aload 1
iload 2
i2l
iload 3
invokespecial org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor$CryptoAPICipherInputStream.<init>:(Lorg/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDecryptor;Ljava/io/InputStream;JI)V
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDecryptor;
0 1 1 stream Ljava/io/InputStream;
0 1 2 size I
0 1 3 initialPos I
Exceptions:
throws java.io.IOException, java.security.GeneralSecurityException
MethodParameters:
Name Flags
stream
size
initialPos
public org.apache.poi.poifs.filesystem.POIFSFileSystem getSummaryEntries(org.apache.poi.poifs.filesystem.DirectoryNode, java.lang.String);
descriptor: (Lorg/apache/poi/poifs/filesystem/DirectoryNode;Ljava/lang/String;)Lorg/apache/poi/poifs/filesystem/POIFSFileSystem;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=20, args_size=3
start local 0 start local 1 start local 2 0: aload 1
aload 2
invokevirtual org.apache.poi.poifs.filesystem.DirectoryNode.getEntry:(Ljava/lang/String;)Lorg/apache/poi/poifs/filesystem/Entry;
checkcast org.apache.poi.poifs.filesystem.DocumentNode
astore 3
start local 3 1: aload 1
aload 3
invokevirtual org.apache.poi.poifs.filesystem.DirectoryNode.createDocumentInputStream:(Lorg/apache/poi/poifs/filesystem/Entry;)Lorg/apache/poi/poifs/filesystem/DocumentInputStream;
astore 4
start local 4 2: new java.io.ByteArrayOutputStream
dup
invokespecial java.io.ByteArrayOutputStream.<init>:()V
astore 5
start local 5 3: aload 4
aload 5
invokestatic org.apache.poi.util.IOUtils.copy:(Ljava/io/InputStream;Ljava/io/OutputStream;)J
pop2
4: aload 4
invokevirtual org.apache.poi.poifs.filesystem.DocumentInputStream.close:()V
5: new org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDocumentInputStream
dup
aload 0
aload 5
invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
invokespecial org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDocumentInputStream.<init>:(Lorg/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDecryptor;[B)V
astore 6
start local 6 6: new org.apache.poi.util.LittleEndianInputStream
dup
aload 6
invokespecial org.apache.poi.util.LittleEndianInputStream.<init>:(Ljava/io/InputStream;)V
astore 7
start local 7 7: aconst_null
astore 8
start local 8 8: aload 7
invokevirtual org.apache.poi.util.LittleEndianInputStream.readUInt:()J
l2i
istore 9
start local 9 9: aload 7
invokevirtual org.apache.poi.util.LittleEndianInputStream.readUInt:()J
pop2
10: iload 9
i2l
ldc 8
lsub
lstore 10
start local 10 11: aload 6
lload 10
invokevirtual org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDocumentInputStream.skip:(J)J
lload 10
lcmp
ifge 13
12: new java.io.EOFException
dup
ldc "buffer underrun"
invokespecial java.io.EOFException.<init>:(Ljava/lang/String;)V
athrow
13: StackMap locals: org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor org.apache.poi.poifs.filesystem.DirectoryNode java.lang.String org.apache.poi.poifs.filesystem.DocumentNode org.apache.poi.poifs.filesystem.DocumentInputStream java.io.ByteArrayOutputStream org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDocumentInputStream org.apache.poi.util.LittleEndianInputStream org.apache.poi.poifs.filesystem.POIFSFileSystem int long
StackMap stack:
aload 6
iconst_0
invokevirtual org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDocumentInputStream.setBlock:(I)V
14: aload 7
invokevirtual org.apache.poi.util.LittleEndianInputStream.readUInt:()J
l2i
istore 12
start local 12 15: iload 12
anewarray org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor$StreamDescriptorEntry
astore 13
start local 13 16: iconst_0
istore 14
start local 14 17: goto 30
18: StackMap locals: int org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor$StreamDescriptorEntry[] int
StackMap stack:
new org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor$StreamDescriptorEntry
dup
invokespecial org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor$StreamDescriptorEntry.<init>:()V
astore 15
start local 15 19: aload 13
iload 14
aload 15
aastore
20: aload 15
aload 7
invokevirtual org.apache.poi.util.LittleEndianInputStream.readUInt:()J
l2i
putfield org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor$StreamDescriptorEntry.streamOffset:I
21: aload 15
aload 7
invokevirtual org.apache.poi.util.LittleEndianInputStream.readUInt:()J
l2i
putfield org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor$StreamDescriptorEntry.streamSize:I
22: aload 15
aload 7
invokevirtual org.apache.poi.util.LittleEndianInputStream.readUShort:()I
putfield org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor$StreamDescriptorEntry.block:I
23: aload 7
invokevirtual org.apache.poi.util.LittleEndianInputStream.readUByte:()I
istore 16
start local 16 24: aload 15
aload 7
invokevirtual org.apache.poi.util.LittleEndianInputStream.readUByte:()I
putfield org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor$StreamDescriptorEntry.flags:I
25: aload 15
aload 7
invokevirtual org.apache.poi.util.LittleEndianInputStream.readInt:()I
putfield org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor$StreamDescriptorEntry.reserved2:I
26: aload 15
aload 7
iload 16
invokestatic org.apache.poi.util.StringUtil.readUnicodeLE:(Lorg/apache/poi/util/LittleEndianInput;I)Ljava/lang/String;
putfield org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor$StreamDescriptorEntry.streamName:Ljava/lang/String;
27: aload 7
invokevirtual org.apache.poi.util.LittleEndianInputStream.readShort:()S
pop
28: getstatic org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor.$assertionsDisabled:Z
ifne 29
aload 15
getfield org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor$StreamDescriptorEntry.streamName:Ljava/lang/String;
invokevirtual java.lang.String.length:()I
iload 16
if_icmpeq 29
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
end local 16 end local 15 29: StackMap locals:
StackMap stack:
iinc 14 1
StackMap locals:
StackMap stack:
30: iload 14
iload 12
if_icmplt 18
end local 14 31: new org.apache.poi.poifs.filesystem.POIFSFileSystem
dup
invokespecial org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>:()V
astore 8
32: aload 13
dup
astore 17
arraylength
istore 16
iconst_0
istore 15
goto 40
StackMap locals: org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor org.apache.poi.poifs.filesystem.DirectoryNode java.lang.String org.apache.poi.poifs.filesystem.DocumentNode org.apache.poi.poifs.filesystem.DocumentInputStream java.io.ByteArrayOutputStream org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDocumentInputStream org.apache.poi.util.LittleEndianInputStream org.apache.poi.poifs.filesystem.POIFSFileSystem int long int org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor$StreamDescriptorEntry[] top int int org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor$StreamDescriptorEntry[]
StackMap stack:
33: aload 17
iload 15
aaload
astore 14
start local 14 34: aload 6
aload 14
getfield org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor$StreamDescriptorEntry.streamOffset:I
invokevirtual org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDocumentInputStream.seek:(I)V
35: aload 6
aload 14
getfield org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor$StreamDescriptorEntry.block:I
invokevirtual org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDocumentInputStream.setBlock:(I)V
36: new org.apache.poi.util.BoundedInputStream
dup
aload 6
aload 14
getfield org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor$StreamDescriptorEntry.streamSize:I
i2l
invokespecial org.apache.poi.util.BoundedInputStream.<init>:(Ljava/io/InputStream;J)V
astore 18
start local 18 37: aload 8
aload 18
aload 14
getfield org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor$StreamDescriptorEntry.streamName:Ljava/lang/String;
invokevirtual org.apache.poi.poifs.filesystem.POIFSFileSystem.createDocument:(Ljava/io/InputStream;Ljava/lang/String;)Lorg/apache/poi/poifs/filesystem/DocumentEntry;
pop
38: aload 18
invokevirtual java.io.InputStream.close:()V
end local 18 end local 14 39: iinc 15 1
StackMap locals:
StackMap stack:
40: iload 15
iload 16
if_icmplt 33
end local 13 end local 12 end local 10 end local 9 41: goto 53
StackMap locals: org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor org.apache.poi.poifs.filesystem.DirectoryNode java.lang.String org.apache.poi.poifs.filesystem.DocumentNode org.apache.poi.poifs.filesystem.DocumentInputStream java.io.ByteArrayOutputStream org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDocumentInputStream org.apache.poi.util.LittleEndianInputStream org.apache.poi.poifs.filesystem.POIFSFileSystem
StackMap stack: java.lang.Exception
42: astore 9
start local 9 43: aload 8
invokestatic org.apache.poi.util.IOUtils.closeQuietly:(Ljava/io/Closeable;)V
44: aload 9
instanceof java.security.GeneralSecurityException
ifeq 46
45: aload 9
checkcast java.security.GeneralSecurityException
athrow
46: StackMap locals: java.lang.Exception
StackMap stack:
aload 9
instanceof java.io.IOException
ifeq 48
47: aload 9
checkcast java.io.IOException
athrow
48: StackMap locals:
StackMap stack:
new java.io.IOException
dup
ldc "summary entries can't be read"
aload 9
invokespecial java.io.IOException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 9 49: StackMap locals: org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor org.apache.poi.poifs.filesystem.DirectoryNode java.lang.String org.apache.poi.poifs.filesystem.DocumentNode org.apache.poi.poifs.filesystem.DocumentInputStream java.io.ByteArrayOutputStream org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDocumentInputStream org.apache.poi.util.LittleEndianInputStream org.apache.poi.poifs.filesystem.POIFSFileSystem
StackMap stack: java.lang.Throwable
astore 19
50: aload 7
invokestatic org.apache.poi.util.IOUtils.closeQuietly:(Ljava/io/Closeable;)V
51: aload 6
invokestatic org.apache.poi.util.IOUtils.closeQuietly:(Ljava/io/Closeable;)V
52: aload 19
athrow
53: StackMap locals:
StackMap stack:
aload 7
invokestatic org.apache.poi.util.IOUtils.closeQuietly:(Ljava/io/Closeable;)V
54: aload 6
invokestatic org.apache.poi.util.IOUtils.closeQuietly:(Ljava/io/Closeable;)V
55: aload 8
areturn
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 56 0 this Lorg/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDecryptor;
0 56 1 root Lorg/apache/poi/poifs/filesystem/DirectoryNode;
0 56 2 encryptedStream Ljava/lang/String;
1 56 3 es Lorg/apache/poi/poifs/filesystem/DocumentNode;
2 56 4 dis Lorg/apache/poi/poifs/filesystem/DocumentInputStream;
3 56 5 bos Ljava/io/ByteArrayOutputStream;
6 56 6 sbis Lorg/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDocumentInputStream;
7 56 7 leis Lorg/apache/poi/util/LittleEndianInputStream;
8 56 8 fsOut Lorg/apache/poi/poifs/filesystem/POIFSFileSystem;
9 41 9 streamDescriptorArrayOffset I
11 41 10 skipN J
15 41 12 encryptedStreamDescriptorCount I
16 41 13 entries [Lorg/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDecryptor$StreamDescriptorEntry;
17 31 14 i I
19 29 15 entry Lorg/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDecryptor$StreamDescriptorEntry;
24 29 16 nameSize I
34 39 14 entry Lorg/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDecryptor$StreamDescriptorEntry;
37 39 18 is Ljava/io/InputStream;
43 49 9 e Ljava/lang/Exception;
Exception table:
from to target type
8 41 42 Class java.lang.Exception
8 49 49 any
Exceptions:
throws java.io.IOException, java.security.GeneralSecurityException
MethodParameters:
Name Flags
root
encryptedStream
public long getLength();
descriptor: ()J
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor.length:J
ldc -1
lcmp
ifne 2
1: new java.lang.IllegalStateException
dup
ldc "Decryptor.getDataStream() was not called"
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor.length:J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDecryptor;
public void setChunkSize(int);
descriptor: (I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
iload 1
putfield org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor.chunkSize:I
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDecryptor;
0 2 1 chunkSize I
MethodParameters:
Name Flags
chunkSize
public org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor clone();
descriptor: ()Lorg/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDecryptor;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial org.apache.poi.poifs.crypt.Decryptor.clone:()Lorg/apache/poi/poifs/crypt/Decryptor;
checkcast org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDecryptor;
Exceptions:
throws java.lang.CloneNotSupportedException
public java.io.InputStream getDataStream(java.io.InputStream, int, int);
descriptor: (Ljava/io/InputStream;II)Ljava/io/InputStream;
flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=4, locals=4, args_size=4
0: aload 0
aload 1
iload 2
iload 3
invokevirtual org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor.getDataStream:(Ljava/io/InputStream;II)Lorg/apache/poi/poifs/crypt/ChunkedCipherInputStream;
areturn
LocalVariableTable:
Start End Slot Name Signature
Exceptions:
throws java.io.IOException, java.security.GeneralSecurityException
public java.io.InputStream getDataStream(org.apache.poi.poifs.filesystem.DirectoryNode);
descriptor: (Lorg/apache/poi/poifs/filesystem/DirectoryNode;)Ljava/io/InputStream;
flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=2, locals=2, args_size=2
0: aload 0
aload 1
invokevirtual org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor.getDataStream:(Lorg/apache/poi/poifs/filesystem/DirectoryNode;)Lorg/apache/poi/poifs/crypt/ChunkedCipherInputStream;
areturn
LocalVariableTable:
Start End Slot Name Signature
Exceptions:
throws java.io.IOException, java.security.GeneralSecurityException
public org.apache.poi.poifs.crypt.Decryptor clone();
descriptor: ()Lorg/apache/poi/poifs/crypt/Decryptor;
flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=1, locals=1, args_size=1
0: aload 0
invokevirtual org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor.clone:()Lorg/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDecryptor;
areturn
LocalVariableTable:
Start End Slot Name Signature
Exceptions:
throws java.lang.CloneNotSupportedException
public java.lang.Object clone();
descriptor: ()Ljava/lang/Object;
flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=1, locals=1, args_size=1
0: aload 0
invokevirtual org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor.clone:()Lorg/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDecryptor;
areturn
LocalVariableTable:
Start End Slot Name Signature
Exceptions:
throws java.lang.CloneNotSupportedException
}
SourceFile: "CryptoAPIDecryptor.java"
NestMembers:
org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor$CryptoAPICipherInputStream org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor$StreamDescriptorEntry
InnerClasses:
private CryptoAPICipherInputStream = org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor$CryptoAPICipherInputStream of org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor
StreamDescriptorEntry = org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor$StreamDescriptorEntry of org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIDecryptor