public class android.security.SystemKeyStore
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: android.security.SystemKeyStore
super_class: java.lang.Object
{
private static final java.lang.String SYSTEM_KEYSTORE_DIRECTORY;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "misc/systemkeys"
private static final java.lang.String KEY_FILE_EXTENSION;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: ".sks"
private static android.security.SystemKeyStore mInstance;
descriptor: Landroid/security/SystemKeyStore;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: new android.security.SystemKeyStore
dup
invokespecial android.security.SystemKeyStore.<init>:()V
putstatic android.security.SystemKeyStore.mInstance:Landroid/security/SystemKeyStore;
return
LocalVariableTable:
Start End Slot Name Signature
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Landroid/security/SystemKeyStore;
public static android.security.SystemKeyStore getInstance();
descriptor: ()Landroid/security/SystemKeyStore;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: getstatic android.security.SystemKeyStore.mInstance:Landroid/security/SystemKeyStore;
areturn
LocalVariableTable:
Start End Slot Name Signature
public static java.lang.String toHexString(byte[]);
descriptor: ([B)Ljava/lang/String;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=5, args_size=1
start local 0 0: aload 0
ifnonnull 2
1: aconst_null
areturn
2: StackMap locals:
StackMap stack:
aload 0
arraylength
pop
3: aload 0
arraylength
iconst_2
imul
istore 1
start local 1 4: new java.lang.StringBuilder
dup
iload 1
invokespecial java.lang.StringBuilder.<init>:(I)V
astore 2
start local 2 5: iconst_0
istore 3
start local 3 6: goto 12
7: StackMap locals: int java.lang.StringBuilder int
StackMap stack:
aload 0
iload 3
baload
sipush 255
iand
bipush 16
invokestatic java.lang.Integer.toString:(II)Ljava/lang/String;
astore 4
start local 4 8: aload 4
invokevirtual java.lang.String.length:()I
iconst_1
if_icmpne 10
9: new java.lang.StringBuilder
dup
ldc "0"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 4
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 4
10: StackMap locals: java.lang.String
StackMap stack:
aload 2
aload 4
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
end local 4 11: iinc 3 1
StackMap locals:
StackMap stack:
12: iload 3
aload 0
arraylength
if_icmplt 7
end local 3 13: aload 2
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 keyData [B
4 14 1 expectedStringLen I
5 14 2 sb Ljava/lang/StringBuilder;
6 13 3 i I
8 11 4 hexStr Ljava/lang/String;
MethodParameters:
Name Flags
keyData
public java.lang.String generateNewKeyHexString(int, java.lang.String, java.lang.String);
descriptor: (ILjava/lang/String;Ljava/lang/String;)Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
iload 1
aload 2
aload 3
invokevirtual android.security.SystemKeyStore.generateNewKey:(ILjava/lang/String;Ljava/lang/String;)[B
invokestatic android.security.SystemKeyStore.toHexString:([B)Ljava/lang/String;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Landroid/security/SystemKeyStore;
0 1 1 numBits I
0 1 2 algName Ljava/lang/String;
0 1 3 keyName Ljava/lang/String;
Exceptions:
throws java.security.NoSuchAlgorithmException
MethodParameters:
Name Flags
numBits
algName
keyName
public byte[] generateNewKey(int, java.lang.String, java.lang.String);
descriptor: (ILjava/lang/String;Ljava/lang/String;)[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=10, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 3
invokevirtual android.security.SystemKeyStore.getKeyFile:(Ljava/lang/String;)Ljava/io/File;
astore 4
start local 4 1: aload 4
invokevirtual java.io.File.exists:()Z
ifeq 3
2: new java.lang.IllegalArgumentException
dup
invokespecial java.lang.IllegalArgumentException.<init>:()V
athrow
3: StackMap locals: java.io.File
StackMap stack:
aload 2
invokestatic javax.crypto.KeyGenerator.getInstance:(Ljava/lang/String;)Ljavax/crypto/KeyGenerator;
astore 5
start local 5 4: ldc "SHA1PRNG"
invokestatic java.security.SecureRandom.getInstance:(Ljava/lang/String;)Ljava/security/SecureRandom;
astore 6
start local 6 5: aload 5
iload 1
aload 6
invokevirtual javax.crypto.KeyGenerator.init:(ILjava/security/SecureRandom;)V
6: aload 5
invokevirtual javax.crypto.KeyGenerator.generateKey:()Ljavax/crypto/SecretKey;
astore 7
start local 7 7: aload 7
invokeinterface javax.crypto.SecretKey.getEncoded:()[B
astore 8
start local 8 8: aload 4
invokevirtual java.io.File.createNewFile:()Z
ifne 10
9: new java.lang.IllegalArgumentException
dup
invokespecial java.lang.IllegalArgumentException.<init>:()V
athrow
10: StackMap locals: android.security.SystemKeyStore int java.lang.String java.lang.String java.io.File javax.crypto.KeyGenerator java.security.SecureRandom javax.crypto.SecretKey byte[]
StackMap stack:
new java.io.FileOutputStream
dup
aload 4
invokespecial java.io.FileOutputStream.<init>:(Ljava/io/File;)V
astore 9
start local 9 11: aload 9
aload 8
invokevirtual java.io.FileOutputStream.write:([B)V
12: aload 9
invokevirtual java.io.FileOutputStream.flush:()V
13: aload 9
invokestatic android.os.FileUtils.sync:(Ljava/io/FileOutputStream;)Z
pop
14: aload 9
invokevirtual java.io.FileOutputStream.close:()V
15: aload 4
invokevirtual java.io.File.getName:()Ljava/lang/String;
sipush 384
16: iconst_m1
iconst_m1
17: invokestatic android.os.FileUtils.setPermissions:(Ljava/lang/String;III)I
pop
end local 9 18: goto 21
StackMap locals:
StackMap stack: java.io.IOException
19: pop
20: aconst_null
areturn
21: StackMap locals:
StackMap stack:
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 22 0 this Landroid/security/SystemKeyStore;
0 22 1 numBits I
0 22 2 algName Ljava/lang/String;
0 22 3 keyName Ljava/lang/String;
1 22 4 keyFile Ljava/io/File;
4 22 5 skg Ljavax/crypto/KeyGenerator;
5 22 6 srng Ljava/security/SecureRandom;
7 22 7 sk Ljavax/crypto/SecretKey;
8 22 8 retKey [B
11 18 9 fos Ljava/io/FileOutputStream;
Exception table:
from to target type
8 18 19 Class java.io.IOException
Exceptions:
throws java.security.NoSuchAlgorithmException
MethodParameters:
Name Flags
numBits
algName
keyName
private java.io.File getKeyFile(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/io/File;
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=4, args_size=2
start local 0 start local 1 0: new java.io.File
dup
invokestatic android.os.Environment.getDataDirectory:()Ljava/io/File;
1: ldc "misc/systemkeys"
2: invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
astore 2
start local 2 3: new java.io.File
dup
aload 2
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 ".sks"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
astore 3
start local 3 4: aload 3
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Landroid/security/SystemKeyStore;
0 5 1 keyName Ljava/lang/String;
3 5 2 sysKeystoreDir Ljava/io/File;
4 5 3 keyFile Ljava/io/File;
MethodParameters:
Name Flags
keyName
public java.lang.String retrieveKeyHexString(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual android.security.SystemKeyStore.retrieveKey:(Ljava/lang/String;)[B
invokestatic android.security.SystemKeyStore.toHexString:([B)Ljava/lang/String;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Landroid/security/SystemKeyStore;
0 1 1 keyName Ljava/lang/String;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
keyName
public byte[] retrieveKey(java.lang.String);
descriptor: (Ljava/lang/String;)[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 0: new java.lang.Error
dup
ldc "Unresolved compilation problem: \n\tIoUtils cannot be resolved\n"
invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Landroid/security/SystemKeyStore;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
keyName
public void deleteKey(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual android.security.SystemKeyStore.getKeyFile:(Ljava/lang/String;)Ljava/io/File;
astore 2
start local 2 1: aload 2
invokevirtual java.io.File.exists:()Z
ifne 3
2: new java.lang.IllegalArgumentException
dup
invokespecial java.lang.IllegalArgumentException.<init>:()V
athrow
3: StackMap locals: java.io.File
StackMap stack:
aload 2
invokevirtual java.io.File.delete:()Z
pop
4: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Landroid/security/SystemKeyStore;
0 5 1 keyName Ljava/lang/String;
1 5 2 keyFile Ljava/io/File;
MethodParameters:
Name Flags
keyName
}
SourceFile: "SystemKeyStore.java"