public class org.h2.tools.ChangeFileEncryption extends org.h2.util.Tool
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.h2.tools.ChangeFileEncryption
super_class: org.h2.util.Tool
{
private java.lang.String directory;
descriptor: Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
private java.lang.String cipherType;
descriptor: Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
private byte[] decrypt;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private byte[] encrypt;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private byte[] decryptKey;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private byte[] encryptKey;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial org.h2.util.Tool.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/h2/tools/ChangeFileEncryption;
public static void main(java.lang.String[]);
descriptor: ([Ljava/lang/String;)V
flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
Code:
stack=2, locals=2, args_size=1
start local 0 0: new org.h2.tools.ChangeFileEncryption
dup
invokespecial org.h2.tools.ChangeFileEncryption.<init>:()V
aload 0
invokevirtual org.h2.tools.ChangeFileEncryption.runTool:([Ljava/lang/String;)V
1: goto 5
StackMap locals:
StackMap stack: java.sql.SQLException
2: astore 1
start local 1 3: aload 1
getstatic java.lang.System.err:Ljava/io/PrintStream;
invokevirtual java.sql.SQLException.printStackTrace:(Ljava/io/PrintStream;)V
4: iconst_1
invokestatic java.lang.System.exit:(I)V
end local 1 5: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 args [Ljava/lang/String;
3 5 1 ex Ljava/sql/SQLException;
Exception table:
from to target type
0 1 2 Class java.sql.SQLException
MethodParameters:
Name Flags
args
public void runTool(java.lang.String[]);
descriptor: ([Ljava/lang/String;)V
flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
Code:
stack=7, locals=10, args_size=2
start local 0 start local 1 0: ldc "."
astore 2
start local 2 1: aconst_null
astore 3
start local 3 2: aconst_null
astore 4
start local 4 3: aconst_null
astore 5
start local 5 4: aconst_null
astore 6
start local 6 5: iconst_0
istore 7
start local 7 6: iconst_0
istore 8
start local 8 7: goto 32
8: StackMap locals: org.h2.tools.ChangeFileEncryption java.lang.String[] java.lang.String java.lang.String char[] char[] java.lang.String int int
StackMap stack:
aload 1
iload 8
aaload
astore 9
start local 9 9: aload 9
ldc "-dir"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 12
10: aload 1
iinc 8 1
iload 8
aaload
astore 2
11: goto 31
StackMap locals: java.lang.String
StackMap stack:
12: aload 9
ldc "-cipher"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 15
13: aload 1
iinc 8 1
iload 8
aaload
astore 3
14: goto 31
StackMap locals:
StackMap stack:
15: aload 9
ldc "-db"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 18
16: aload 1
iinc 8 1
iload 8
aaload
astore 6
17: goto 31
StackMap locals:
StackMap stack:
18: aload 9
ldc "-decrypt"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 21
19: aload 1
iinc 8 1
iload 8
aaload
invokevirtual java.lang.String.toCharArray:()[C
astore 4
20: goto 31
StackMap locals:
StackMap stack:
21: aload 9
ldc "-encrypt"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 24
22: aload 1
iinc 8 1
iload 8
aaload
invokevirtual java.lang.String.toCharArray:()[C
astore 5
23: goto 31
StackMap locals:
StackMap stack:
24: aload 9
ldc "-quiet"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 27
25: iconst_1
istore 7
26: goto 31
StackMap locals:
StackMap stack:
27: aload 9
ldc "-help"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 28
aload 9
ldc "-?"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 30
28: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.h2.tools.ChangeFileEncryption.showUsage:()V
29: return
30: StackMap locals:
StackMap stack:
aload 0
aload 9
invokevirtual org.h2.tools.ChangeFileEncryption.showUsageAndThrowUnsupportedOption:(Ljava/lang/String;)Ljava/sql/SQLException;
pop
end local 9 31: StackMap locals:
StackMap stack:
iinc 8 1
StackMap locals:
StackMap stack:
32: aload 1
ifnull 33
iload 8
aload 1
arraylength
if_icmplt 8
end local 8 33: StackMap locals:
StackMap stack:
aload 5
ifnonnull 34
aload 4
ifnull 35
StackMap locals:
StackMap stack:
34: aload 3
ifnonnull 39
35: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.h2.tools.ChangeFileEncryption.showUsage:()V
36: new java.sql.SQLException
dup
37: ldc "Encryption or decryption password not set, or cipher not set"
38: invokespecial java.sql.SQLException.<init>:(Ljava/lang/String;)V
athrow
39: StackMap locals:
StackMap stack:
aload 0
aload 2
aload 6
aload 3
aload 4
aload 5
iload 7
invokevirtual org.h2.tools.ChangeFileEncryption.process:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[C[CZ)V
40: goto 43
StackMap locals:
StackMap stack: java.lang.Exception
41: astore 8
start local 8 42: aload 8
invokestatic org.h2.message.DbException.toSQLException:(Ljava/lang/Throwable;)Ljava/sql/SQLException;
athrow
end local 8 43: StackMap locals:
StackMap stack:
return
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 44 0 this Lorg/h2/tools/ChangeFileEncryption;
0 44 1 args [Ljava/lang/String;
1 44 2 dir Ljava/lang/String;
2 44 3 cipher Ljava/lang/String;
3 44 4 decryptPassword [C
4 44 5 encryptPassword [C
5 44 6 db Ljava/lang/String;
6 44 7 quiet Z
7 33 8 i I
9 31 9 arg Ljava/lang/String;
42 43 8 e Ljava/lang/Exception;
Exception table:
from to target type
39 40 41 Class java.lang.Exception
Exceptions:
throws java.sql.SQLException
MethodParameters:
Name Flags
args
private static byte[] getFileEncryptionKey(char[]);
descriptor: ([C)[B
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
ifnonnull 2
1: aconst_null
areturn
2: StackMap locals:
StackMap stack:
ldc "file"
aload 0
invokevirtual char[].clone:()Ljava/lang/Object;
checkcast char[]
invokestatic org.h2.security.SHA256.getKeyPasswordHash:(Ljava/lang/String;[C)[B
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 password [C
MethodParameters:
Name Flags
password
public static void execute(java.lang.String, java.lang.String, java.lang.String, char[], char[], boolean);
descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[C[CZ)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=7, locals=7, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: new org.h2.tools.ChangeFileEncryption
dup
invokespecial org.h2.tools.ChangeFileEncryption.<init>:()V
aload 0
aload 1
aload 2
1: aload 3
aload 4
iload 5
2: invokevirtual org.h2.tools.ChangeFileEncryption.process:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[C[CZ)V
3: goto 6
StackMap locals:
StackMap stack: java.lang.Exception
4: astore 6
start local 6 5: aload 6
invokestatic org.h2.message.DbException.toSQLException:(Ljava/lang/Throwable;)Ljava/sql/SQLException;
athrow
end local 6 6: StackMap locals:
StackMap stack:
return
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 7 0 dir Ljava/lang/String;
0 7 1 db Ljava/lang/String;
0 7 2 cipher Ljava/lang/String;
0 7 3 decryptPassword [C
0 7 4 encryptPassword [C
0 7 5 quiet Z
5 6 6 e Ljava/lang/Exception;
Exception table:
from to target type
0 3 4 Class java.lang.Exception
Exceptions:
throws java.sql.SQLException
MethodParameters:
Name Flags
dir
db
cipher
decryptPassword
encryptPassword
quiet
private void process(java.lang.String, java.lang.String, java.lang.String, char[], char[], boolean);
descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[C[CZ)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=12, args_size=7
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 0: aload 1
invokestatic org.h2.store.FileLister.getDir:(Ljava/lang/String;)Ljava/lang/String;
astore 1
1: new org.h2.tools.ChangeFileEncryption
dup
invokespecial org.h2.tools.ChangeFileEncryption.<init>:()V
astore 7
start local 7 2: aload 5
ifnull 11
3: aload 5
dup
astore 11
arraylength
istore 10
iconst_0
istore 9
goto 8
StackMap locals: org.h2.tools.ChangeFileEncryption java.lang.String java.lang.String java.lang.String char[] char[] int org.h2.tools.ChangeFileEncryption top int int char[]
StackMap stack:
4: aload 11
iload 9
caload
istore 8
start local 8 5: iload 8
bipush 32
if_icmpne 7
6: new java.sql.SQLException
dup
ldc "The file password may not contain spaces"
invokespecial java.sql.SQLException.<init>:(Ljava/lang/String;)V
athrow
end local 8 7: StackMap locals:
StackMap stack:
iinc 9 1
StackMap locals:
StackMap stack:
8: iload 9
iload 10
if_icmplt 4
9: aload 7
aload 5
invokestatic org.h2.store.fs.FilePathEncrypt.getPasswordBytes:([C)[B
putfield org.h2.tools.ChangeFileEncryption.encryptKey:[B
10: aload 7
aload 5
invokestatic org.h2.tools.ChangeFileEncryption.getFileEncryptionKey:([C)[B
putfield org.h2.tools.ChangeFileEncryption.encrypt:[B
11: StackMap locals: org.h2.tools.ChangeFileEncryption java.lang.String java.lang.String java.lang.String char[] char[] int org.h2.tools.ChangeFileEncryption
StackMap stack:
aload 4
ifnull 14
12: aload 7
aload 4
invokestatic org.h2.store.fs.FilePathEncrypt.getPasswordBytes:([C)[B
putfield org.h2.tools.ChangeFileEncryption.decryptKey:[B
13: aload 7
aload 4
invokestatic org.h2.tools.ChangeFileEncryption.getFileEncryptionKey:([C)[B
putfield org.h2.tools.ChangeFileEncryption.decrypt:[B
14: StackMap locals:
StackMap stack:
aload 7
aload 0
getfield org.h2.tools.ChangeFileEncryption.out:Ljava/io/PrintStream;
putfield org.h2.tools.ChangeFileEncryption.out:Ljava/io/PrintStream;
15: aload 7
aload 1
putfield org.h2.tools.ChangeFileEncryption.directory:Ljava/lang/String;
16: aload 7
aload 3
putfield org.h2.tools.ChangeFileEncryption.cipherType:Ljava/lang/String;
17: aload 1
aload 2
iconst_1
invokestatic org.h2.store.FileLister.getDatabaseFiles:(Ljava/lang/String;Ljava/lang/String;Z)Ljava/util/ArrayList;
astore 8
start local 8 18: aload 8
ldc "encryption"
invokestatic org.h2.store.FileLister.tryUnlockDatabase:(Ljava/util/List;Ljava/lang/String;)V
19: aload 1
aload 2
iconst_0
invokestatic org.h2.store.FileLister.getDatabaseFiles:(Ljava/lang/String;Ljava/lang/String;Z)Ljava/util/ArrayList;
astore 8
20: aload 8
invokevirtual java.util.ArrayList.isEmpty:()Z
ifeq 22
iload 6
ifne 22
21: aload 0
aload 1
aload 2
invokevirtual org.h2.tools.ChangeFileEncryption.printNoDatabaseFilesFound:(Ljava/lang/String;Ljava/lang/String;)V
22: StackMap locals: java.util.ArrayList
StackMap stack:
aload 8
invokevirtual java.util.ArrayList.iterator:()Ljava/util/Iterator;
astore 10
goto 28
StackMap locals: org.h2.tools.ChangeFileEncryption java.lang.String java.lang.String java.lang.String char[] char[] int org.h2.tools.ChangeFileEncryption java.util.ArrayList top java.util.Iterator
StackMap stack:
23: aload 10
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.String
astore 9
start local 9 24: new java.lang.StringBuilder
dup
aload 1
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "/temp.db"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 11
start local 11 25: aload 11
invokestatic org.h2.store.fs.FileUtils.delete:(Ljava/lang/String;)V
26: aload 9
aload 11
invokestatic org.h2.store.fs.FileUtils.move:(Ljava/lang/String;Ljava/lang/String;)V
27: aload 11
aload 9
invokestatic org.h2.store.fs.FileUtils.move:(Ljava/lang/String;Ljava/lang/String;)V
end local 11 end local 9 28: StackMap locals:
StackMap stack:
aload 10
invokeinterface java.util.Iterator.hasNext:()Z
ifne 23
29: aload 8
invokevirtual java.util.ArrayList.iterator:()Ljava/util/Iterator;
astore 10
goto 33
StackMap locals:
StackMap stack:
30: aload 10
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.String
astore 9
start local 9 31: aload 9
invokestatic org.h2.store.fs.FileUtils.isDirectory:(Ljava/lang/String;)Z
ifne 33
32: aload 7
aload 9
iload 6
aload 4
invokevirtual org.h2.tools.ChangeFileEncryption.process:(Ljava/lang/String;Z[C)V
end local 9 33: StackMap locals:
StackMap stack:
aload 10
invokeinterface java.util.Iterator.hasNext:()Z
ifne 30
34: return
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 35 0 this Lorg/h2/tools/ChangeFileEncryption;
0 35 1 dir Ljava/lang/String;
0 35 2 db Ljava/lang/String;
0 35 3 cipher Ljava/lang/String;
0 35 4 decryptPassword [C
0 35 5 encryptPassword [C
0 35 6 quiet Z
2 35 7 change Lorg/h2/tools/ChangeFileEncryption;
5 7 8 c C
18 35 8 files Ljava/util/ArrayList<Ljava/lang/String;>;
24 28 9 fileName Ljava/lang/String;
25 28 11 temp Ljava/lang/String;
31 33 9 fileName Ljava/lang/String;
Exceptions:
throws java.sql.SQLException
MethodParameters:
Name Flags
dir
db
cipher
decryptPassword
encryptPassword
quiet
private void process(java.lang.String, boolean, char[]);
descriptor: (Ljava/lang/String;Z[C)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
ldc ".mv.db"
invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
ifeq 8
1: aload 0
aload 1
iload 2
aload 3
invokevirtual org.h2.tools.ChangeFileEncryption.copyMvStore:(Ljava/lang/String;Z[C)V
2: goto 7
StackMap locals:
StackMap stack: java.io.IOException
3: astore 4
start local 4 4: aload 4
5: new java.lang.StringBuilder
dup
ldc "Error encrypting / decrypting file "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
6: invokestatic org.h2.message.DbException.convertIOException:(Ljava/io/IOException;Ljava/lang/String;)Lorg/h2/message/DbException;
athrow
end local 4 7: StackMap locals:
StackMap stack:
return
8: StackMap locals:
StackMap stack:
aload 0
getfield org.h2.tools.ChangeFileEncryption.decrypt:[B
ifnonnull 11
9: aconst_null
aload 1
ldc "r"
invokestatic org.h2.store.FileStore.open:(Lorg/h2/store/DataHandler;Ljava/lang/String;Ljava/lang/String;)Lorg/h2/store/FileStore;
astore 4
start local 4 10: goto 12
end local 4 11: StackMap locals:
StackMap stack:
aconst_null
aload 1
ldc "r"
aload 0
getfield org.h2.tools.ChangeFileEncryption.cipherType:Ljava/lang/String;
aload 0
getfield org.h2.tools.ChangeFileEncryption.decrypt:[B
invokestatic org.h2.store.FileStore.open:(Lorg/h2/store/DataHandler;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)Lorg/h2/store/FileStore;
astore 4
start local 4 12: StackMap locals: org.h2.store.FileStore
StackMap stack:
aload 4
invokevirtual org.h2.store.FileStore.init:()V
13: aload 0
aload 1
aload 4
aload 0
getfield org.h2.tools.ChangeFileEncryption.encrypt:[B
iload 2
invokevirtual org.h2.tools.ChangeFileEncryption.copyPageStore:(Ljava/lang/String;Lorg/h2/store/FileStore;[BZ)V
14: goto 18
StackMap locals:
StackMap stack: java.lang.Throwable
15: astore 5
16: aload 4
invokevirtual org.h2.store.FileStore.closeSilently:()V
17: aload 5
athrow
18: StackMap locals:
StackMap stack:
aload 4
invokevirtual org.h2.store.FileStore.closeSilently:()V
19: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 this Lorg/h2/tools/ChangeFileEncryption;
0 20 1 fileName Ljava/lang/String;
0 20 2 quiet Z
0 20 3 decryptPassword [C
4 7 4 e Ljava/io/IOException;
10 11 4 in Lorg/h2/store/FileStore;
12 20 4 in Lorg/h2/store/FileStore;
Exception table:
from to target type
1 2 3 Class java.io.IOException
12 15 15 any
Exceptions:
throws java.sql.SQLException
MethodParameters:
Name Flags
fileName
quiet
decryptPassword
private void copyMvStore(java.lang.String, boolean, char[]);
descriptor: (Ljava/lang/String;Z[C)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=8, locals=22, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
invokestatic org.h2.store.fs.FileUtils.isDirectory:(Ljava/lang/String;)Z
ifeq 2
1: return
2: StackMap locals:
StackMap stack:
new org.h2.mvstore.MVStore$Builder
dup
invokespecial org.h2.mvstore.MVStore$Builder.<init>:()V
3: aload 1
invokevirtual org.h2.mvstore.MVStore$Builder.fileName:(Ljava/lang/String;)Lorg/h2/mvstore/MVStore$Builder;
4: invokevirtual org.h2.mvstore.MVStore$Builder.readOnly:()Lorg/h2/mvstore/MVStore$Builder;
5: aload 3
invokevirtual org.h2.mvstore.MVStore$Builder.encryptionKey:([C)Lorg/h2/mvstore/MVStore$Builder;
6: invokevirtual org.h2.mvstore.MVStore$Builder.open:()Lorg/h2/mvstore/MVStore;
7: astore 4
start local 4 8: aload 4
invokevirtual org.h2.mvstore.MVStore.close:()V
end local 4 9: goto 12
StackMap locals:
StackMap stack: java.lang.IllegalStateException
10: astore 4
start local 4 11: new java.sql.SQLException
dup
new java.lang.StringBuilder
dup
ldc "error decrypting file "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 4
invokespecial java.sql.SQLException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 4 12: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
aload 0
getfield org.h2.tools.ChangeFileEncryption.directory:Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "/temp.db"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 4
start local 4 13: aconst_null
astore 5
aconst_null
astore 6
14: aload 1
ldc "r"
aload 0
getfield org.h2.tools.ChangeFileEncryption.decryptKey:[B
invokestatic org.h2.tools.ChangeFileEncryption.getFileChannel:(Ljava/lang/String;Ljava/lang/String;[B)Ljava/nio/channels/FileChannel;
astore 7
start local 7 15: aconst_null
astore 8
aconst_null
astore 9
16: new org.h2.store.fs.FileChannelInputStream
dup
aload 7
iconst_1
invokespecial org.h2.store.fs.FileChannelInputStream.<init>:(Ljava/nio/channels/FileChannel;Z)V
astore 10
start local 10 17: aload 4
invokestatic org.h2.store.fs.FileUtils.delete:(Ljava/lang/String;)V
18: aconst_null
astore 11
aconst_null
astore 12
19: new org.h2.store.fs.FileChannelOutputStream
dup
aload 4
ldc "rw"
aload 0
getfield org.h2.tools.ChangeFileEncryption.encryptKey:[B
invokestatic org.h2.tools.ChangeFileEncryption.getFileChannel:(Ljava/lang/String;Ljava/lang/String;[B)Ljava/nio/channels/FileChannel;
20: iconst_1
21: invokespecial org.h2.store.fs.FileChannelOutputStream.<init>:(Ljava/nio/channels/FileChannel;Z)V
astore 13
start local 13 22: sipush 4096
newarray 8
astore 14
start local 14 23: aload 7
invokevirtual java.nio.channels.FileChannel.size:()J
lstore 15
start local 15 24: lload 15
lstore 17
start local 17 25: invokestatic java.lang.System.nanoTime:()J
lstore 19
start local 19 26: goto 34
27: StackMap locals: org.h2.tools.ChangeFileEncryption java.lang.String int char[] java.lang.String java.lang.Throwable java.lang.Throwable java.nio.channels.FileChannel java.lang.Throwable java.lang.Throwable java.io.InputStream java.lang.Throwable java.lang.Throwable java.io.OutputStream byte[] long long long
StackMap stack:
iload 2
ifne 30
invokestatic java.lang.System.nanoTime:()J
lload 19
lsub
getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
lconst_1
invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
lcmp
ifle 30
28: aload 0
getfield org.h2.tools.ChangeFileEncryption.out:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
aload 1
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;
ldc 100
ldc 100
lload 15
lmul
lload 17
ldiv
lsub
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc "%"
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
29: invokestatic java.lang.System.nanoTime:()J
lstore 19
30: StackMap locals:
StackMap stack:
aload 14
arraylength
i2l
lload 15
invokestatic java.lang.Math.min:(JJ)J
l2i
istore 21
start local 21 31: aload 10
aload 14
iconst_0
iload 21
invokevirtual java.io.InputStream.read:([BII)I
istore 21
32: aload 13
aload 14
iconst_0
iload 21
invokevirtual java.io.OutputStream.write:([BII)V
33: lload 15
iload 21
i2l
lsub
lstore 15
end local 21 34: StackMap locals:
StackMap stack:
lload 15
lconst_0
lcmp
ifgt 27
end local 19 end local 17 end local 15 end local 14 35: aload 13
ifnull 41
aload 13
invokevirtual java.io.OutputStream.close:()V
goto 41
StackMap locals: org.h2.tools.ChangeFileEncryption java.lang.String int char[] java.lang.String java.lang.Throwable java.lang.Throwable java.nio.channels.FileChannel java.lang.Throwable java.lang.Throwable java.io.InputStream java.lang.Throwable java.lang.Throwable java.io.OutputStream
StackMap stack: java.lang.Throwable
36: astore 11
aload 13
ifnull 37
aload 13
invokevirtual java.io.OutputStream.close:()V
end local 13 StackMap locals:
StackMap stack:
37: aload 11
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
38: astore 12
aload 11
ifnonnull 39
aload 12
astore 11
goto 40
StackMap locals:
StackMap stack:
39: aload 11
aload 12
if_acmpeq 40
aload 11
aload 12
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
40: aload 11
athrow
41: StackMap locals:
StackMap stack:
aload 10
ifnull 47
aload 10
invokevirtual java.io.InputStream.close:()V
goto 47
StackMap locals:
StackMap stack: java.lang.Throwable
42: astore 8
aload 10
ifnull 43
aload 10
invokevirtual java.io.InputStream.close:()V
end local 10 StackMap locals:
StackMap stack:
43: aload 8
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
44: astore 9
aload 8
ifnonnull 45
aload 9
astore 8
goto 46
StackMap locals:
StackMap stack:
45: aload 8
aload 9
if_acmpeq 46
aload 8
aload 9
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
46: aload 8
athrow
47: StackMap locals:
StackMap stack:
aload 7
ifnull 53
aload 7
invokevirtual java.nio.channels.FileChannel.close:()V
goto 53
StackMap locals:
StackMap stack: java.lang.Throwable
48: astore 5
aload 7
ifnull 49
aload 7
invokevirtual java.nio.channels.FileChannel.close:()V
end local 7 StackMap locals:
StackMap stack:
49: aload 5
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
50: astore 6
aload 5
ifnonnull 51
aload 6
astore 5
goto 52
StackMap locals:
StackMap stack:
51: aload 5
aload 6
if_acmpeq 52
aload 5
aload 6
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
52: aload 5
athrow
53: StackMap locals:
StackMap stack:
aload 1
invokestatic org.h2.store.fs.FileUtils.delete:(Ljava/lang/String;)V
54: aload 4
aload 1
invokestatic org.h2.store.fs.FileUtils.move:(Ljava/lang/String;Ljava/lang/String;)V
55: return
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/h2/tools/ChangeFileEncryption;
0 56 1 fileName Ljava/lang/String;
0 56 2 quiet Z
0 56 3 decryptPassword [C
8 9 4 source Lorg/h2/mvstore/MVStore;
11 12 4 ex Ljava/lang/IllegalStateException;
13 56 4 temp Ljava/lang/String;
15 49 7 fileIn Ljava/nio/channels/FileChannel;
17 43 10 inStream Ljava/io/InputStream;
22 37 13 outStream Ljava/io/OutputStream;
23 35 14 buffer [B
24 35 15 remaining J
25 35 17 total J
26 35 19 time J
31 34 21 len I
Exception table:
from to target type
2 9 10 Class java.lang.IllegalStateException
22 35 36 any
19 38 38 any
17 41 42 any
16 44 44 any
15 47 48 any
14 50 50 any
Exceptions:
throws java.io.IOException, java.sql.SQLException
MethodParameters:
Name Flags
fileName
quiet
decryptPassword
private static java.nio.channels.FileChannel getFileChannel(java.lang.String, java.lang.String, byte[]);
descriptor: (Ljava/lang/String;Ljava/lang/String;[B)Ljava/nio/channels/FileChannel;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokestatic org.h2.store.fs.FilePath.get:(Ljava/lang/String;)Lorg/h2/store/fs/FilePath;
aload 1
invokevirtual org.h2.store.fs.FilePath.open:(Ljava/lang/String;)Ljava/nio/channels/FileChannel;
astore 3
start local 3 1: aload 2
ifnull 5
2: new org.h2.store.fs.FilePathEncrypt$FileEncrypt
dup
aload 0
aload 2
3: aload 3
4: invokespecial org.h2.store.fs.FilePathEncrypt$FileEncrypt.<init>:(Ljava/lang/String;[BLjava/nio/channels/FileChannel;)V
astore 3
5: StackMap locals: java.nio.channels.FileChannel
StackMap stack:
aload 3
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 fileName Ljava/lang/String;
0 6 1 r Ljava/lang/String;
0 6 2 decryptKey [B
1 6 3 fileIn Ljava/nio/channels/FileChannel;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
fileName
r
decryptKey
private void copyPageStore(java.lang.String, org.h2.store.FileStore, byte[], boolean);
descriptor: (Ljava/lang/String;Lorg/h2/store/FileStore;[BZ)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=8, locals=15, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 1
invokestatic org.h2.store.fs.FileUtils.isDirectory:(Ljava/lang/String;)Z
ifeq 2
1: return
2: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
aload 0
getfield org.h2.tools.ChangeFileEncryption.directory:Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "/temp.db"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 5
start local 5 3: aload 5
invokestatic org.h2.store.fs.FileUtils.delete:(Ljava/lang/String;)V
4: aload 3
ifnonnull 7
5: aconst_null
aload 5
ldc "rw"
invokestatic org.h2.store.FileStore.open:(Lorg/h2/store/DataHandler;Ljava/lang/String;Ljava/lang/String;)Lorg/h2/store/FileStore;
astore 6
start local 6 6: goto 8
end local 6 7: StackMap locals: java.lang.String
StackMap stack:
aconst_null
aload 5
ldc "rw"
aload 0
getfield org.h2.tools.ChangeFileEncryption.cipherType:Ljava/lang/String;
aload 3
invokestatic org.h2.store.FileStore.open:(Lorg/h2/store/DataHandler;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)Lorg/h2/store/FileStore;
astore 6
start local 6 8: StackMap locals: org.h2.store.FileStore
StackMap stack:
sipush 4096
newarray 8
astore 7
start local 7 9: aload 6
invokevirtual org.h2.store.FileStore.init:()V
10: aload 2
invokevirtual org.h2.store.FileStore.length:()J
ldc 48
lsub
lstore 8
start local 8 11: lload 8
lstore 10
start local 10 12: aload 2
ldc 48
invokevirtual org.h2.store.FileStore.seek:(J)V
13: aload 6
ldc 48
invokevirtual org.h2.store.FileStore.seek:(J)V
14: invokestatic java.lang.System.nanoTime:()J
lstore 12
start local 12 15: goto 23
16: StackMap locals: org.h2.tools.ChangeFileEncryption java.lang.String org.h2.store.FileStore byte[] int java.lang.String org.h2.store.FileStore byte[] long long long
StackMap stack:
iload 4
ifne 19
invokestatic java.lang.System.nanoTime:()J
lload 12
lsub
getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
lconst_1
invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
lcmp
ifle 19
17: aload 0
getfield org.h2.tools.ChangeFileEncryption.out:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
aload 1
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;
ldc 100
ldc 100
lload 8
lmul
lload 10
ldiv
lsub
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc "%"
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
18: invokestatic java.lang.System.nanoTime:()J
lstore 12
19: StackMap locals:
StackMap stack:
aload 7
arraylength
i2l
lload 8
invokestatic java.lang.Math.min:(JJ)J
l2i
istore 14
start local 14 20: aload 2
aload 7
iconst_0
iload 14
invokevirtual org.h2.store.FileStore.readFully:([BII)V
21: aload 6
aload 7
iconst_0
iload 14
invokevirtual org.h2.store.FileStore.write:([BII)V
22: lload 8
iload 14
i2l
lsub
lstore 8
end local 14 23: StackMap locals:
StackMap stack:
lload 8
lconst_0
lcmp
ifgt 16
24: aload 2
invokevirtual org.h2.store.FileStore.close:()V
25: aload 6
invokevirtual org.h2.store.FileStore.close:()V
26: aload 1
invokestatic org.h2.store.fs.FileUtils.delete:(Ljava/lang/String;)V
27: aload 5
aload 1
invokestatic org.h2.store.fs.FileUtils.move:(Ljava/lang/String;Ljava/lang/String;)V
28: return
end local 12 end local 10 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 29 0 this Lorg/h2/tools/ChangeFileEncryption;
0 29 1 fileName Ljava/lang/String;
0 29 2 in Lorg/h2/store/FileStore;
0 29 3 key [B
0 29 4 quiet Z
3 29 5 temp Ljava/lang/String;
6 7 6 fileOut Lorg/h2/store/FileStore;
8 29 6 fileOut Lorg/h2/store/FileStore;
9 29 7 buffer [B
11 29 8 remaining J
12 29 10 total J
15 29 12 time J
20 23 14 len I
MethodParameters:
Name Flags
fileName
in
key
quiet
}
SourceFile: "ChangeFileEncryption.java"
InnerClasses:
public final Builder = org.h2.mvstore.MVStore$Builder of org.h2.mvstore.MVStore
public FileEncrypt = org.h2.store.fs.FilePathEncrypt$FileEncrypt of org.h2.store.fs.FilePathEncrypt