public final class apple.security.KeychainStore extends java.security.KeyStoreSpi
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: apple.security.KeychainStore
super_class: java.security.KeyStoreSpi
{
private java.util.Hashtable<java.lang.String, java.lang.Object> deletedEntries;
descriptor: Ljava/util/Hashtable;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/Hashtable<Ljava/lang/String;Ljava/lang/Object;>;
private java.util.Hashtable<java.lang.String, java.lang.Object> addedEntries;
descriptor: Ljava/util/Hashtable;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/Hashtable<Ljava/lang/String;Ljava/lang/Object;>;
private java.util.Hashtable<java.lang.String, java.lang.Object> entries;
descriptor: Ljava/util/Hashtable;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/Hashtable<Ljava/lang/String;Ljava/lang/Object;>;
private static final int[] keyBag;
descriptor: [I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int[] pbeWithSHAAnd3KeyTripleDESCBC;
descriptor: [I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static sun.security.util.ObjectIdentifier PKCS8ShroudedKeyBag_OID;
descriptor: Lsun/security/util/ObjectIdentifier;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private static sun.security.util.ObjectIdentifier pbeWithSHAAnd3KeyTripleDESCBC_OID;
descriptor: Lsun/security/util/ObjectIdentifier;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private static final int iterationCount;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1024
private static final int SALT_LEN;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 20
private java.security.SecureRandom random;
descriptor: Ljava/security/SecureRandom;
flags: (0x0002) ACC_PRIVATE
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=0, args_size=0
0: bipush 9
newarray 10
dup
iconst_0
iconst_1
iastore
dup
iconst_1
iconst_2
iastore
dup
iconst_2
sipush 840
iastore
dup
iconst_3
ldc 113549
iastore
dup
iconst_4
iconst_1
iastore
dup
iconst_5
bipush 12
iastore
dup
bipush 6
bipush 10
iastore
dup
bipush 7
iconst_1
iastore
dup
bipush 8
iconst_2
iastore
putstatic apple.security.KeychainStore.keyBag:[I
1: bipush 8
newarray 10
dup
iconst_0
iconst_1
iastore
dup
iconst_1
iconst_2
iastore
dup
iconst_2
sipush 840
iastore
dup
iconst_3
ldc 113549
iastore
dup
iconst_4
iconst_1
iastore
dup
iconst_5
bipush 12
iastore
dup
bipush 6
iconst_1
iastore
dup
bipush 7
iconst_3
iastore
putstatic apple.security.KeychainStore.pbeWithSHAAnd3KeyTripleDESCBC:[I
2: new apple.security.KeychainStore$1
dup
invokespecial apple.security.KeychainStore$1.<init>:()V
3: invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
pop
4: new sun.security.util.ObjectIdentifier
dup
getstatic apple.security.KeychainStore.keyBag:[I
invokespecial sun.security.util.ObjectIdentifier.<init>:([I)V
putstatic apple.security.KeychainStore.PKCS8ShroudedKeyBag_OID:Lsun/security/util/ObjectIdentifier;
5: new sun.security.util.ObjectIdentifier
dup
getstatic apple.security.KeychainStore.pbeWithSHAAnd3KeyTripleDESCBC:[I
invokespecial sun.security.util.ObjectIdentifier.<init>:([I)V
putstatic apple.security.KeychainStore.pbeWithSHAAnd3KeyTripleDESCBC_OID:Lsun/security/util/ObjectIdentifier;
6: goto 8
StackMap locals:
StackMap stack: java.io.IOException
7: pop
8: StackMap locals:
StackMap stack:
return
LocalVariableTable:
Start End Slot Name Signature
Exception table:
from to target type
4 6 7 Class java.io.IOException
private static void permissionCheck();
descriptor: ()V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=1, args_size=0
0: invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
astore 0
start local 0 1: aload 0
ifnull 3
2: aload 0
new java.lang.RuntimePermission
dup
ldc "useKeychainStore"
invokespecial java.lang.RuntimePermission.<init>:(Ljava/lang/String;)V
invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;)V
3: StackMap locals: java.lang.SecurityManager
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
1 4 0 sec Ljava/lang/SecurityManager;
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.security.KeyStoreSpi.<init>:()V
1: aload 0
new java.util.Hashtable
dup
invokespecial java.util.Hashtable.<init>:()V
putfield apple.security.KeychainStore.deletedEntries:Ljava/util/Hashtable;
2: aload 0
new java.util.Hashtable
dup
invokespecial java.util.Hashtable.<init>:()V
putfield apple.security.KeychainStore.addedEntries:Ljava/util/Hashtable;
3: aload 0
new java.util.Hashtable
dup
invokespecial java.util.Hashtable.<init>:()V
putfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
4: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lapple/security/KeychainStore;
public java.security.Key engineGetKey(java.lang.String, char[]);
descriptor: (Ljava/lang/String;[C)Ljava/security/Key;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=20, args_size=3
start local 0 start local 1 start local 2 0: invokestatic apple.security.KeychainStore.permissionCheck:()V
1: aload 2
ifnull 2
aload 2
arraylength
ifne 5
2: StackMap locals:
StackMap stack:
aload 0
getfield apple.security.KeychainStore.random:Ljava/security/SecureRandom;
ifnonnull 4
3: aload 0
new java.security.SecureRandom
dup
invokespecial java.security.SecureRandom.<init>:()V
putfield apple.security.KeychainStore.random:Ljava/security/SecureRandom;
4: StackMap locals:
StackMap stack:
aload 0
getfield apple.security.KeychainStore.random:Ljava/security/SecureRandom;
invokevirtual java.security.SecureRandom.nextLong:()J
invokestatic java.lang.Long.toString:(J)Ljava/lang/String;
invokevirtual java.lang.String.toCharArray:()[C
astore 2
5: StackMap locals:
StackMap stack:
aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
aload 1
invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
astore 3
start local 3 6: aload 3
ifnull 7
aload 3
instanceof apple.security.KeychainStore$KeyEntry
ifne 8
7: StackMap locals: java.lang.Object
StackMap stack:
aconst_null
areturn
8: StackMap locals:
StackMap stack:
aload 0
aload 3
checkcast apple.security.KeychainStore$KeyEntry
getfield apple.security.KeychainStore$KeyEntry.keyRef:J
aload 2
invokevirtual apple.security.KeychainStore._getEncodedKeyData:(J[C)[B
astore 4
start local 4 9: aload 4
ifnonnull 11
10: aconst_null
areturn
11: StackMap locals: byte[]
StackMap stack:
aconst_null
astore 5
start local 5 12: aload 0
aload 4
invokevirtual apple.security.KeychainStore.fetchPrivateKeyFromBag:([B)[B
astore 6
start local 6 13: new sun.security.pkcs.EncryptedPrivateKeyInfo
dup
aload 6
invokespecial sun.security.pkcs.EncryptedPrivateKeyInfo.<init>:([B)V
astore 10
start local 10 14: aload 10
invokevirtual sun.security.pkcs.EncryptedPrivateKeyInfo.getEncryptedData:()[B
astore 7
start local 7 15: new sun.security.util.DerValue
dup
aload 10
invokevirtual sun.security.pkcs.EncryptedPrivateKeyInfo.getAlgorithm:()Lsun/security/x509/AlgorithmId;
invokevirtual sun.security.x509.AlgorithmId.encode:()[B
invokespecial sun.security.util.DerValue.<init>:([B)V
astore 11
start local 11 16: aload 11
invokevirtual sun.security.util.DerValue.toDerInputStream:()Lsun/security/util/DerInputStream;
astore 12
start local 12 17: aload 12
invokevirtual sun.security.util.DerInputStream.getOID:()Lsun/security/util/ObjectIdentifier;
astore 9
start local 9 18: aload 0
aload 12
invokevirtual apple.security.KeychainStore.parseAlgParameters:(Lsun/security/util/DerInputStream;)Ljava/security/AlgorithmParameters;
astore 8
end local 12 end local 11 end local 10 start local 8 19: goto 27
end local 9 end local 8 end local 7 StackMap locals: apple.security.KeychainStore java.lang.String char[] java.lang.Object byte[] java.security.PrivateKey byte[]
StackMap stack: java.io.IOException
20: astore 10
start local 10 21: new java.security.UnrecoverableKeyException
dup
new java.lang.StringBuilder
dup
ldc "Private key not stored as PKCS#8 EncryptedPrivateKeyInfo: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
22: aload 10
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
23: invokespecial java.security.UnrecoverableKeyException.<init>:(Ljava/lang/String;)V
24: astore 11
start local 11 25: aload 11
aload 10
invokevirtual java.security.UnrecoverableKeyException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
pop
26: aload 11
athrow
end local 11 end local 10 start local 7 start local 8 start local 9 27: StackMap locals: byte[] java.security.AlgorithmParameters sun.security.util.ObjectIdentifier
StackMap stack:
aload 0
aload 2
invokevirtual apple.security.KeychainStore.getPBEKey:([C)Ljavax/crypto/SecretKey;
astore 10
start local 10 28: aload 9
invokevirtual sun.security.util.ObjectIdentifier.toString:()Ljava/lang/String;
invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
astore 11
start local 11 29: aload 11
iconst_2
aload 10
aload 8
invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;Ljava/security/AlgorithmParameters;)V
30: aload 11
aload 7
invokevirtual javax.crypto.Cipher.doFinal:([B)[B
astore 12
start local 12 31: new java.security.spec.PKCS8EncodedKeySpec
dup
aload 12
invokespecial java.security.spec.PKCS8EncodedKeySpec.<init>:([B)V
astore 13
start local 13 32: new sun.security.util.DerValue
dup
aload 12
invokespecial sun.security.util.DerValue.<init>:([B)V
astore 14
start local 14 33: aload 14
invokevirtual sun.security.util.DerValue.toDerInputStream:()Lsun/security/util/DerInputStream;
astore 15
start local 15 34: aload 15
invokevirtual sun.security.util.DerInputStream.getInteger:()I
pop
35: aload 15
iconst_2
invokevirtual sun.security.util.DerInputStream.getSequence:(I)[Lsun/security/util/DerValue;
astore 16
start local 16 36: new sun.security.x509.AlgorithmId
dup
aload 16
iconst_0
aaload
invokevirtual sun.security.util.DerValue.getOID:()Lsun/security/util/ObjectIdentifier;
invokespecial sun.security.x509.AlgorithmId.<init>:(Lsun/security/util/ObjectIdentifier;)V
astore 17
start local 17 37: aload 17
invokevirtual sun.security.x509.AlgorithmId.getName:()Ljava/lang/String;
astore 18
start local 18 38: aload 18
invokestatic java.security.KeyFactory.getInstance:(Ljava/lang/String;)Ljava/security/KeyFactory;
astore 19
start local 19 39: aload 19
aload 13
invokevirtual java.security.KeyFactory.generatePrivate:(Ljava/security/spec/KeySpec;)Ljava/security/PrivateKey;
astore 5
end local 19 end local 18 end local 17 end local 16 end local 15 end local 14 end local 13 end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 40: goto 48
StackMap locals: apple.security.KeychainStore java.lang.String char[] java.lang.Object byte[] java.security.PrivateKey
StackMap stack: java.lang.Exception
41: astore 6
start local 6 42: new java.security.UnrecoverableKeyException
dup
new java.lang.StringBuilder
dup
ldc "Get Key failed: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
43: aload 6
invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
44: invokespecial java.security.UnrecoverableKeyException.<init>:(Ljava/lang/String;)V
45: astore 7
start local 7 46: aload 7
aload 6
invokevirtual java.security.UnrecoverableKeyException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
pop
47: aload 7
athrow
end local 7 end local 6 48: StackMap locals:
StackMap stack:
aload 5
areturn
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 49 0 this Lapple/security/KeychainStore;
0 49 1 alias Ljava/lang/String;
0 49 2 password [C
6 49 3 entry Ljava/lang/Object;
9 49 4 exportedKeyInfo [B
12 49 5 returnValue Ljava/security/PrivateKey;
13 40 6 pkcs8KeyData [B
15 20 7 encryptedKey [B
27 40 7 encryptedKey [B
19 20 8 algParams Ljava/security/AlgorithmParameters;
27 40 8 algParams Ljava/security/AlgorithmParameters;
18 20 9 algOid Lsun/security/util/ObjectIdentifier;
27 40 9 algOid Lsun/security/util/ObjectIdentifier;
14 19 10 encrInfo Lsun/security/pkcs/EncryptedPrivateKeyInfo;
16 19 11 val Lsun/security/util/DerValue;
17 19 12 in Lsun/security/util/DerInputStream;
21 27 10 ioe Ljava/io/IOException;
25 27 11 uke Ljava/security/UnrecoverableKeyException;
28 40 10 skey Ljavax/crypto/SecretKey;
29 40 11 cipher Ljavax/crypto/Cipher;
31 40 12 decryptedPrivateKey [B
32 40 13 kspec Ljava/security/spec/PKCS8EncodedKeySpec;
33 40 14 val Lsun/security/util/DerValue;
34 40 15 in Lsun/security/util/DerInputStream;
36 40 16 value [Lsun/security/util/DerValue;
37 40 17 algId Lsun/security/x509/AlgorithmId;
38 40 18 algName Ljava/lang/String;
39 40 19 kfac Ljava/security/KeyFactory;
42 48 6 e Ljava/lang/Exception;
46 48 7 uke Ljava/security/UnrecoverableKeyException;
Exception table:
from to target type
13 19 20 Class java.io.IOException
12 40 41 Class java.lang.Exception
Exceptions:
throws java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException
MethodParameters:
Name Flags
alias
password
private native byte[] _getEncodedKeyData(long, char[]);
descriptor: (J[C)[B
flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
MethodParameters:
Name Flags
secKeyRef
password
public java.security.cert.Certificate[] engineGetCertificateChain(java.lang.String);
descriptor: (Ljava/lang/String;)[Ljava/security/cert/Certificate;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: invokestatic apple.security.KeychainStore.permissionCheck:()V
1: aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
aload 1
invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
astore 2
start local 2 2: aload 2
ifnull 6
aload 2
instanceof apple.security.KeychainStore$KeyEntry
ifeq 6
3: aload 2
checkcast apple.security.KeychainStore$KeyEntry
getfield apple.security.KeychainStore$KeyEntry.chain:[Ljava/security/cert/Certificate;
ifnonnull 5
4: aconst_null
areturn
5: StackMap locals: java.lang.Object
StackMap stack:
aload 2
checkcast apple.security.KeychainStore$KeyEntry
getfield apple.security.KeychainStore$KeyEntry.chain:[Ljava/security/cert/Certificate;
invokevirtual java.security.cert.Certificate[].clone:()Ljava/lang/Object;
checkcast java.security.cert.Certificate[]
areturn
6: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lapple/security/KeychainStore;
0 7 1 alias Ljava/lang/String;
2 7 2 entry Ljava/lang/Object;
MethodParameters:
Name Flags
alias
public java.security.cert.Certificate engineGetCertificate(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/security/cert/Certificate;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=4, args_size=2
start local 0 start local 1 0: invokestatic apple.security.KeychainStore.permissionCheck:()V
1: aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
aload 1
invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
astore 2
start local 2 2: aload 2
ifnull 9
3: aload 2
instanceof apple.security.KeychainStore$TrustedCertEntry
ifeq 5
4: aload 2
checkcast apple.security.KeychainStore$TrustedCertEntry
getfield apple.security.KeychainStore$TrustedCertEntry.cert:Ljava/security/cert/Certificate;
areturn
5: StackMap locals: java.lang.Object
StackMap stack:
aload 2
checkcast apple.security.KeychainStore$KeyEntry
astore 3
start local 3 6: aload 3
getfield apple.security.KeychainStore$KeyEntry.chain:[Ljava/security/cert/Certificate;
ifnull 7
aload 3
getfield apple.security.KeychainStore$KeyEntry.chain:[Ljava/security/cert/Certificate;
arraylength
ifne 8
7: StackMap locals: apple.security.KeychainStore$KeyEntry
StackMap stack:
aconst_null
areturn
8: StackMap locals:
StackMap stack:
aload 3
getfield apple.security.KeychainStore$KeyEntry.chain:[Ljava/security/cert/Certificate;
iconst_0
aaload
areturn
end local 3 9: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lapple/security/KeychainStore;
0 10 1 alias Ljava/lang/String;
2 10 2 entry Ljava/lang/Object;
6 9 3 ke Lapple/security/KeychainStore$KeyEntry;
MethodParameters:
Name Flags
alias
public java.util.Date engineGetCreationDate(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/util/Date;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: invokestatic apple.security.KeychainStore.permissionCheck:()V
1: aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
aload 1
invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
astore 2
start local 2 2: aload 2
ifnull 6
3: aload 2
instanceof apple.security.KeychainStore$TrustedCertEntry
ifeq 5
4: new java.util.Date
dup
aload 2
checkcast apple.security.KeychainStore$TrustedCertEntry
getfield apple.security.KeychainStore$TrustedCertEntry.date:Ljava/util/Date;
invokevirtual java.util.Date.getTime:()J
invokespecial java.util.Date.<init>:(J)V
areturn
5: StackMap locals: java.lang.Object
StackMap stack:
new java.util.Date
dup
aload 2
checkcast apple.security.KeychainStore$KeyEntry
getfield apple.security.KeychainStore$KeyEntry.date:Ljava/util/Date;
invokevirtual java.util.Date.getTime:()J
invokespecial java.util.Date.<init>:(J)V
areturn
6: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lapple/security/KeychainStore;
0 7 1 alias Ljava/lang/String;
2 7 2 entry Ljava/lang/Object;
MethodParameters:
Name Flags
alias
public void engineSetKeyEntry(java.lang.String, java.security.Key, char[], java.security.cert.Certificate[]);
descriptor: (Ljava/lang/String;Ljava/security/Key;[C[Ljava/security/cert/Certificate;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=8, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: invokestatic apple.security.KeychainStore.permissionCheck:()V
1: aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
dup
astore 5
monitorenter
2: new apple.security.KeychainStore$KeyEntry
dup
aload 0
invokespecial apple.security.KeychainStore$KeyEntry.<init>:(Lapple/security/KeychainStore;)V
astore 6
start local 6 3: aload 6
new java.util.Date
dup
invokespecial java.util.Date.<init>:()V
putfield apple.security.KeychainStore$KeyEntry.date:Ljava/util/Date;
4: aload 2
instanceof java.security.PrivateKey
ifeq 11
5: aload 2
invokeinterface java.security.Key.getFormat:()Ljava/lang/String;
ldc "PKCS#8"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 7
6: aload 2
invokeinterface java.security.Key.getFormat:()Ljava/lang/String;
ldc "PKCS8"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 10
7: StackMap locals: java.util.Hashtable apple.security.KeychainStore$KeyEntry
StackMap stack:
aload 6
aload 0
aload 2
invokeinterface java.security.Key.getEncoded:()[B
aload 3
invokevirtual apple.security.KeychainStore.encryptPrivateKey:([B[C)[B
putfield apple.security.KeychainStore$KeyEntry.protectedPrivKey:[B
8: aload 6
aload 3
invokevirtual char[].clone:()Ljava/lang/Object;
checkcast char[]
putfield apple.security.KeychainStore$KeyEntry.password:[C
9: goto 12
10: StackMap locals:
StackMap stack:
new java.security.KeyStoreException
dup
ldc "Private key is not encoded as PKCS#8"
invokespecial java.security.KeyStoreException.<init>:(Ljava/lang/String;)V
athrow
11: StackMap locals:
StackMap stack:
new java.security.KeyStoreException
dup
ldc "Key is not a PrivateKey"
invokespecial java.security.KeyStoreException.<init>:(Ljava/lang/String;)V
athrow
12: StackMap locals:
StackMap stack:
aload 4
ifnull 17
13: aload 4
arraylength
iconst_1
if_icmple 15
aload 0
aload 4
invokevirtual apple.security.KeychainStore.validateChain:([Ljava/security/cert/Certificate;)Z
ifne 15
14: new java.security.KeyStoreException
dup
ldc "Certificate chain does not validate"
invokespecial java.security.KeyStoreException.<init>:(Ljava/lang/String;)V
athrow
15: StackMap locals:
StackMap stack:
aload 6
aload 4
invokevirtual java.security.cert.Certificate[].clone:()Ljava/lang/Object;
checkcast java.security.cert.Certificate[]
putfield apple.security.KeychainStore$KeyEntry.chain:[Ljava/security/cert/Certificate;
16: aload 6
aload 6
getfield apple.security.KeychainStore$KeyEntry.chain:[Ljava/security/cert/Certificate;
arraylength
newarray 11
putfield apple.security.KeychainStore$KeyEntry.chainRefs:[J
17: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
astore 7
start local 7 18: aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
aload 7
invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
ifnull 20
19: aload 0
getfield apple.security.KeychainStore.deletedEntries:Ljava/util/Hashtable;
aload 7
aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
aload 7
invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
20: StackMap locals: java.lang.String
StackMap stack:
aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
aload 7
aload 6
invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
21: aload 0
getfield apple.security.KeychainStore.addedEntries:Ljava/util/Hashtable;
aload 7
aload 6
invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 7 end local 6 22: goto 27
StackMap locals: apple.security.KeychainStore java.lang.String java.security.Key char[] java.security.cert.Certificate[] java.util.Hashtable
StackMap stack: java.lang.Exception
23: astore 6
start local 6 24: new java.security.KeyStoreException
dup
new java.lang.StringBuilder
dup
ldc "Key protection algorithm not found: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 6
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.security.KeyStoreException.<init>:(Ljava/lang/String;)V
astore 7
start local 7 25: aload 7
aload 6
invokevirtual java.security.KeyStoreException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
pop
26: aload 7
athrow
end local 7 end local 6 27: StackMap locals:
StackMap stack:
aload 5
monitorexit
28: goto 31
StackMap locals:
StackMap stack: java.lang.Throwable
29: aload 5
monitorexit
30: athrow
31: StackMap locals:
StackMap stack:
return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 32 0 this Lapple/security/KeychainStore;
0 32 1 alias Ljava/lang/String;
0 32 2 key Ljava/security/Key;
0 32 3 password [C
0 32 4 chain [Ljava/security/cert/Certificate;
3 22 6 entry Lapple/security/KeychainStore$KeyEntry;
18 22 7 lowerAlias Ljava/lang/String;
24 27 6 nsae Ljava/lang/Exception;
25 27 7 ke Ljava/security/KeyStoreException;
Exception table:
from to target type
2 22 23 Class java.lang.Exception
2 28 29 any
29 30 29 any
Exceptions:
throws java.security.KeyStoreException
MethodParameters:
Name Flags
alias
key
password
chain
public void engineSetKeyEntry(java.lang.String, byte[], java.security.cert.Certificate[]);
descriptor: (Ljava/lang/String;[B[Ljava/security/cert/Certificate;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=7, args_size=4
start local 0 start local 1 start local 2 start local 3 0: invokestatic apple.security.KeychainStore.permissionCheck:()V
1: aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
dup
astore 4
monitorenter
2: new apple.security.KeychainStore$KeyEntry
dup
aload 0
invokespecial apple.security.KeychainStore$KeyEntry.<init>:(Lapple/security/KeychainStore;)V
astore 5
start local 5 3: new sun.security.pkcs.EncryptedPrivateKeyInfo
dup
aload 2
invokespecial sun.security.pkcs.EncryptedPrivateKeyInfo.<init>:([B)V
astore 6
start local 6 4: aload 5
aload 6
invokevirtual sun.security.pkcs.EncryptedPrivateKeyInfo.getEncoded:()[B
putfield apple.security.KeychainStore$KeyEntry.protectedPrivKey:[B
end local 6 5: goto 8
StackMap locals: apple.security.KeychainStore java.lang.String byte[] java.security.cert.Certificate[] java.util.Hashtable apple.security.KeychainStore$KeyEntry
StackMap stack: java.io.IOException
6: pop
7: new java.security.KeyStoreException
dup
ldc "key is not encoded as EncryptedPrivateKeyInfo"
invokespecial java.security.KeyStoreException.<init>:(Ljava/lang/String;)V
athrow
8: StackMap locals:
StackMap stack:
aload 5
new java.util.Date
dup
invokespecial java.util.Date.<init>:()V
putfield apple.security.KeychainStore$KeyEntry.date:Ljava/util/Date;
9: aload 3
ifnull 13
10: aload 3
arraylength
ifeq 13
11: aload 5
aload 3
invokevirtual java.security.cert.Certificate[].clone:()Ljava/lang/Object;
checkcast java.security.cert.Certificate[]
putfield apple.security.KeychainStore$KeyEntry.chain:[Ljava/security/cert/Certificate;
12: aload 5
aload 5
getfield apple.security.KeychainStore$KeyEntry.chain:[Ljava/security/cert/Certificate;
arraylength
newarray 11
putfield apple.security.KeychainStore$KeyEntry.chainRefs:[J
13: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
astore 6
start local 6 14: aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
aload 6
invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
ifnull 16
15: aload 0
getfield apple.security.KeychainStore.deletedEntries:Ljava/util/Hashtable;
aload 6
aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
aload 1
invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
16: StackMap locals: java.lang.String
StackMap stack:
aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
aload 6
aload 5
invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
17: aload 0
getfield apple.security.KeychainStore.addedEntries:Ljava/util/Hashtable;
aload 6
aload 5
invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 6 end local 5 18: aload 4
monitorexit
19: goto 22
StackMap locals: apple.security.KeychainStore java.lang.String byte[] java.security.cert.Certificate[] java.util.Hashtable
StackMap stack: java.lang.Throwable
20: aload 4
monitorexit
21: athrow
22: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 23 0 this Lapple/security/KeychainStore;
0 23 1 alias Ljava/lang/String;
0 23 2 key [B
0 23 3 chain [Ljava/security/cert/Certificate;
3 18 5 entry Lapple/security/KeychainStore$KeyEntry;
4 5 6 privateKey Lsun/security/pkcs/EncryptedPrivateKeyInfo;
14 18 6 lowerAlias Ljava/lang/String;
Exception table:
from to target type
3 5 6 Class java.io.IOException
2 19 20 any
20 21 20 any
Exceptions:
throws java.security.KeyStoreException
MethodParameters:
Name Flags
alias
key
chain
public void engineSetCertificateEntry(java.lang.String, java.security.cert.Certificate);
descriptor: (Ljava/lang/String;Ljava/security/cert/Certificate;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=9, args_size=3
start local 0 start local 1 start local 2 0: invokestatic apple.security.KeychainStore.permissionCheck:()V
1: aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
dup
astore 3
monitorenter
2: aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
aload 1
invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
astore 4
start local 4 3: aload 4
ifnull 7
aload 4
instanceof apple.security.KeychainStore$KeyEntry
ifeq 7
4: new java.security.KeyStoreException
dup
5: ldc "Cannot overwrite key entry with certificate"
6: invokespecial java.security.KeyStoreException.<init>:(Ljava/lang/String;)V
athrow
7: StackMap locals: java.util.Hashtable java.lang.Object
StackMap stack:
aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
invokevirtual java.util.Hashtable.values:()Ljava/util/Collection;
astore 5
start local 5 8: aload 5
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 7
goto 14
StackMap locals: apple.security.KeychainStore java.lang.String java.security.cert.Certificate java.util.Hashtable java.lang.Object java.util.Collection top java.util.Iterator
StackMap stack:
9: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
astore 6
start local 6 10: aload 6
instanceof apple.security.KeychainStore$TrustedCertEntry
ifeq 14
11: aload 6
checkcast apple.security.KeychainStore$TrustedCertEntry
astore 8
start local 8 12: aload 8
getfield apple.security.KeychainStore$TrustedCertEntry.cert:Ljava/security/cert/Certificate;
aload 2
invokevirtual java.security.cert.Certificate.equals:(Ljava/lang/Object;)Z
ifeq 14
13: new java.security.KeyStoreException
dup
ldc "Keychain does not support mulitple copies of same certificate."
invokespecial java.security.KeyStoreException.<init>:(Ljava/lang/String;)V
athrow
end local 8 end local 6 14: StackMap locals:
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 9
15: new apple.security.KeychainStore$TrustedCertEntry
dup
aload 0
invokespecial apple.security.KeychainStore$TrustedCertEntry.<init>:(Lapple/security/KeychainStore;)V
astore 6
start local 6 16: aload 6
aload 2
putfield apple.security.KeychainStore$TrustedCertEntry.cert:Ljava/security/cert/Certificate;
17: aload 6
new java.util.Date
dup
invokespecial java.util.Date.<init>:()V
putfield apple.security.KeychainStore$TrustedCertEntry.date:Ljava/util/Date;
18: aload 1
invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
astore 7
start local 7 19: aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
aload 7
invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
ifnull 21
20: aload 0
getfield apple.security.KeychainStore.deletedEntries:Ljava/util/Hashtable;
aload 7
aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
aload 7
invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
21: StackMap locals: apple.security.KeychainStore java.lang.String java.security.cert.Certificate java.util.Hashtable java.lang.Object java.util.Collection apple.security.KeychainStore$TrustedCertEntry java.lang.String
StackMap stack:
aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
aload 7
aload 6
invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
22: aload 0
getfield apple.security.KeychainStore.addedEntries:Ljava/util/Hashtable;
aload 7
aload 6
invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 7 end local 6 end local 5 end local 4 23: aload 3
monitorexit
24: goto 27
StackMap locals: apple.security.KeychainStore java.lang.String java.security.cert.Certificate java.util.Hashtable
StackMap stack: java.lang.Throwable
25: aload 3
monitorexit
26: athrow
27: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 28 0 this Lapple/security/KeychainStore;
0 28 1 alias Ljava/lang/String;
0 28 2 cert Ljava/security/cert/Certificate;
3 23 4 entry Ljava/lang/Object;
8 23 5 allValues Ljava/util/Collection<Ljava/lang/Object;>;
10 14 6 value Ljava/lang/Object;
12 14 8 tce Lapple/security/KeychainStore$TrustedCertEntry;
16 23 6 trustedCertEntry Lapple/security/KeychainStore$TrustedCertEntry;
19 23 7 lowerAlias Ljava/lang/String;
Exception table:
from to target type
2 24 25 any
25 26 25 any
Exceptions:
throws java.security.KeyStoreException
MethodParameters:
Name Flags
alias
cert
public void engineDeleteEntry(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: invokestatic apple.security.KeychainStore.permissionCheck:()V
1: aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
dup
astore 2
monitorenter
2: aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
aload 1
invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
invokevirtual java.util.Hashtable.remove:(Ljava/lang/Object;)Ljava/lang/Object;
astore 3
start local 3 3: aload 0
getfield apple.security.KeychainStore.deletedEntries:Ljava/util/Hashtable;
aload 1
invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
aload 3
invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 3 4: aload 2
monitorexit
5: goto 8
StackMap locals: apple.security.KeychainStore java.lang.String java.util.Hashtable
StackMap stack: java.lang.Throwable
6: aload 2
monitorexit
7: athrow
8: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lapple/security/KeychainStore;
0 9 1 alias Ljava/lang/String;
3 4 3 entry Ljava/lang/Object;
Exception table:
from to target type
2 5 6 any
6 7 6 any
Exceptions:
throws java.security.KeyStoreException
MethodParameters:
Name Flags
alias
public java.util.Enumeration<java.lang.String> engineAliases();
descriptor: ()Ljava/util/Enumeration;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: invokestatic apple.security.KeychainStore.permissionCheck:()V
1: aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
invokevirtual java.util.Hashtable.keys:()Ljava/util/Enumeration;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lapple/security/KeychainStore;
Signature: ()Ljava/util/Enumeration<Ljava/lang/String;>;
public boolean engineContainsAlias(java.lang.String);
descriptor: (Ljava/lang/String;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: invokestatic apple.security.KeychainStore.permissionCheck:()V
1: aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
aload 1
invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
invokevirtual java.util.Hashtable.containsKey:(Ljava/lang/Object;)Z
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lapple/security/KeychainStore;
0 2 1 alias Ljava/lang/String;
MethodParameters:
Name Flags
alias
public int engineSize();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: invokestatic apple.security.KeychainStore.permissionCheck:()V
1: aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
invokevirtual java.util.Hashtable.size:()I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lapple/security/KeychainStore;
public boolean engineIsKeyEntry(java.lang.String);
descriptor: (Ljava/lang/String;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: invokestatic apple.security.KeychainStore.permissionCheck:()V
1: aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
aload 1
invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
astore 2
start local 2 2: aload 2
ifnull 4
aload 2
instanceof apple.security.KeychainStore$KeyEntry
ifeq 4
3: iconst_1
ireturn
4: StackMap locals: java.lang.Object
StackMap stack:
iconst_0
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lapple/security/KeychainStore;
0 5 1 alias Ljava/lang/String;
2 5 2 entry Ljava/lang/Object;
MethodParameters:
Name Flags
alias
public boolean engineIsCertificateEntry(java.lang.String);
descriptor: (Ljava/lang/String;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: invokestatic apple.security.KeychainStore.permissionCheck:()V
1: aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
aload 1
invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
astore 2
start local 2 2: aload 2
ifnull 4
aload 2
instanceof apple.security.KeychainStore$TrustedCertEntry
ifeq 4
3: iconst_1
ireturn
4: StackMap locals: java.lang.Object
StackMap stack:
iconst_0
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lapple/security/KeychainStore;
0 5 1 alias Ljava/lang/String;
2 5 2 entry Ljava/lang/Object;
MethodParameters:
Name Flags
alias
public java.lang.String engineGetCertificateAlias(java.security.cert.Certificate);
descriptor: (Ljava/security/cert/Certificate;)Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=7, args_size=2
start local 0 start local 1 0: invokestatic apple.security.KeychainStore.permissionCheck:()V
1: aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
invokevirtual java.util.Hashtable.keys:()Ljava/util/Enumeration;
astore 3
start local 3 2: goto 14
3: StackMap locals: apple.security.KeychainStore java.security.cert.Certificate top java.util.Enumeration
StackMap stack:
aload 3
invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
checkcast java.lang.String
astore 4
start local 4 4: aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
aload 4
invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
astore 5
start local 5 5: aload 5
instanceof apple.security.KeychainStore$TrustedCertEntry
ifeq 8
6: aload 5
checkcast apple.security.KeychainStore$TrustedCertEntry
getfield apple.security.KeychainStore$TrustedCertEntry.cert:Ljava/security/cert/Certificate;
astore 2
start local 2 7: goto 12
end local 2 8: StackMap locals: java.lang.String java.lang.Object
StackMap stack:
aload 5
checkcast apple.security.KeychainStore$KeyEntry
astore 6
start local 6 9: aload 6
getfield apple.security.KeychainStore$KeyEntry.chain:[Ljava/security/cert/Certificate;
ifnull 14
aload 6
getfield apple.security.KeychainStore$KeyEntry.chain:[Ljava/security/cert/Certificate;
arraylength
ifne 11
10: goto 14
11: StackMap locals: apple.security.KeychainStore$KeyEntry
StackMap stack:
aload 6
getfield apple.security.KeychainStore$KeyEntry.chain:[Ljava/security/cert/Certificate;
iconst_0
aaload
astore 2
end local 6 start local 2 12: StackMap locals: apple.security.KeychainStore java.security.cert.Certificate java.security.cert.Certificate java.util.Enumeration java.lang.String java.lang.Object
StackMap stack:
aload 2
aload 1
invokevirtual java.security.cert.Certificate.equals:(Ljava/lang/Object;)Z
ifeq 14
13: aload 4
areturn
end local 5 end local 4 end local 2 14: StackMap locals: apple.security.KeychainStore java.security.cert.Certificate top java.util.Enumeration
StackMap stack:
aload 3
invokeinterface java.util.Enumeration.hasMoreElements:()Z
ifne 3
end local 3 15: aconst_null
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lapple/security/KeychainStore;
0 16 1 cert Ljava/security/cert/Certificate;
7 8 2 certElem Ljava/security/cert/Certificate;
12 14 2 certElem Ljava/security/cert/Certificate;
2 15 3 e Ljava/util/Enumeration<Ljava/lang/String;>;
4 14 4 alias Ljava/lang/String;
5 14 5 entry Ljava/lang/Object;
9 12 6 ke Lapple/security/KeychainStore$KeyEntry;
MethodParameters:
Name Flags
cert
public void engineStore(java.io.OutputStream, char[]);
descriptor: (Ljava/io/OutputStream;[C)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=8, args_size=3
start local 0 start local 1 start local 2 0: invokestatic apple.security.KeychainStore.permissionCheck:()V
1: aload 0
getfield apple.security.KeychainStore.deletedEntries:Ljava/util/Hashtable;
invokevirtual java.util.Hashtable.keys:()Ljava/util/Enumeration;
astore 3
start local 3 2: goto 22
3: StackMap locals: java.util.Enumeration
StackMap stack:
aload 3
invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
checkcast java.lang.String
astore 4
start local 4 4: aload 0
getfield apple.security.KeychainStore.deletedEntries:Ljava/util/Hashtable;
aload 4
invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
astore 5
start local 5 5: aload 5
instanceof apple.security.KeychainStore$TrustedCertEntry
ifeq 10
6: aload 5
checkcast apple.security.KeychainStore$TrustedCertEntry
getfield apple.security.KeychainStore$TrustedCertEntry.certRef:J
lconst_0
lcmp
ifeq 22
7: aload 0
aload 5
checkcast apple.security.KeychainStore$TrustedCertEntry
getfield apple.security.KeychainStore$TrustedCertEntry.certRef:J
invokevirtual apple.security.KeychainStore._removeItemFromKeychain:(J)I
pop
8: aload 0
aload 5
checkcast apple.security.KeychainStore$TrustedCertEntry
getfield apple.security.KeychainStore$TrustedCertEntry.certRef:J
invokevirtual apple.security.KeychainStore._releaseKeychainItemRef:(J)V
9: goto 22
10: StackMap locals: java.lang.String java.lang.Object
StackMap stack:
aload 5
checkcast apple.security.KeychainStore$KeyEntry
astore 6
start local 6 11: aload 6
getfield apple.security.KeychainStore$KeyEntry.chain:[Ljava/security/cert/Certificate;
ifnull 22
12: iconst_0
istore 7
start local 7 13: goto 18
14: StackMap locals: apple.security.KeychainStore$KeyEntry int
StackMap stack:
aload 6
getfield apple.security.KeychainStore$KeyEntry.chainRefs:[J
iload 7
laload
lconst_0
lcmp
ifeq 17
15: aload 0
aload 6
getfield apple.security.KeychainStore$KeyEntry.chainRefs:[J
iload 7
laload
invokevirtual apple.security.KeychainStore._removeItemFromKeychain:(J)I
pop
16: aload 0
aload 6
getfield apple.security.KeychainStore$KeyEntry.chainRefs:[J
iload 7
laload
invokevirtual apple.security.KeychainStore._releaseKeychainItemRef:(J)V
17: StackMap locals:
StackMap stack:
iinc 7 1
StackMap locals:
StackMap stack:
18: iload 7
aload 6
getfield apple.security.KeychainStore$KeyEntry.chain:[Ljava/security/cert/Certificate;
arraylength
if_icmplt 14
end local 7 19: aload 6
getfield apple.security.KeychainStore$KeyEntry.keyRef:J
lconst_0
lcmp
ifeq 22
20: aload 0
aload 6
getfield apple.security.KeychainStore$KeyEntry.keyRef:J
invokevirtual apple.security.KeychainStore._removeItemFromKeychain:(J)I
pop
21: aload 0
aload 6
getfield apple.security.KeychainStore$KeyEntry.keyRef:J
invokevirtual apple.security.KeychainStore._releaseKeychainItemRef:(J)V
end local 6 end local 5 end local 4 22: StackMap locals: apple.security.KeychainStore java.io.OutputStream char[] java.util.Enumeration
StackMap stack:
aload 3
invokeinterface java.util.Enumeration.hasMoreElements:()Z
ifne 3
end local 3 23: aload 0
getfield apple.security.KeychainStore.addedEntries:Ljava/util/Hashtable;
invokevirtual java.util.Hashtable.keys:()Ljava/util/Enumeration;
astore 3
start local 3 24: goto 40
25: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
checkcast java.lang.String
astore 4
start local 4 26: aload 0
getfield apple.security.KeychainStore.addedEntries:Ljava/util/Hashtable;
aload 4
invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
astore 5
start local 5 27: aload 5
instanceof apple.security.KeychainStore$TrustedCertEntry
ifeq 32
28: aload 5
checkcast apple.security.KeychainStore$TrustedCertEntry
astore 6
start local 6 29: aload 6
getfield apple.security.KeychainStore$TrustedCertEntry.cert:Ljava/security/cert/Certificate;
astore 7
start local 7 30: aload 6
aload 0
aload 4
aload 7
invokevirtual apple.security.KeychainStore.addCertificateToKeychain:(Ljava/lang/String;Ljava/security/cert/Certificate;)J
putfield apple.security.KeychainStore$TrustedCertEntry.certRef:J
end local 7 end local 6 31: goto 40
32: StackMap locals: java.lang.String java.lang.Object
StackMap stack:
aload 5
checkcast apple.security.KeychainStore$KeyEntry
astore 6
start local 6 33: aload 6
getfield apple.security.KeychainStore$KeyEntry.chain:[Ljava/security/cert/Certificate;
ifnull 40
34: iconst_0
istore 7
start local 7 35: goto 38
36: StackMap locals: apple.security.KeychainStore$KeyEntry int
StackMap stack:
aload 6
getfield apple.security.KeychainStore$KeyEntry.chainRefs:[J
iload 7
aload 0
aload 4
aload 6
getfield apple.security.KeychainStore$KeyEntry.chain:[Ljava/security/cert/Certificate;
iload 7
aaload
invokevirtual apple.security.KeychainStore.addCertificateToKeychain:(Ljava/lang/String;Ljava/security/cert/Certificate;)J
lastore
37: iinc 7 1
StackMap locals:
StackMap stack:
38: iload 7
aload 6
getfield apple.security.KeychainStore$KeyEntry.chain:[Ljava/security/cert/Certificate;
arraylength
if_icmplt 36
end local 7 39: aload 6
aload 0
aload 4
iconst_0
aload 6
getfield apple.security.KeychainStore$KeyEntry.protectedPrivKey:[B
aload 6
getfield apple.security.KeychainStore$KeyEntry.password:[C
invokevirtual apple.security.KeychainStore._addItemToKeychain:(Ljava/lang/String;Z[B[C)J
putfield apple.security.KeychainStore$KeyEntry.keyRef:J
end local 6 end local 5 end local 4 40: StackMap locals: apple.security.KeychainStore java.io.OutputStream char[] java.util.Enumeration
StackMap stack:
aload 3
invokeinterface java.util.Enumeration.hasMoreElements:()Z
ifne 25
end local 3 41: aload 0
getfield apple.security.KeychainStore.deletedEntries:Ljava/util/Hashtable;
invokevirtual java.util.Hashtable.clear:()V
42: aload 0
getfield apple.security.KeychainStore.addedEntries:Ljava/util/Hashtable;
invokevirtual java.util.Hashtable.clear:()V
43: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 44 0 this Lapple/security/KeychainStore;
0 44 1 stream Ljava/io/OutputStream;
0 44 2 password [C
2 23 3 e Ljava/util/Enumeration<Ljava/lang/String;>;
4 22 4 alias Ljava/lang/String;
5 22 5 entry Ljava/lang/Object;
11 22 6 keyEntry Lapple/security/KeychainStore$KeyEntry;
13 19 7 i I
24 41 3 e Ljava/util/Enumeration<Ljava/lang/String;>;
26 40 4 alias Ljava/lang/String;
27 40 5 entry Ljava/lang/Object;
29 31 6 tce Lapple/security/KeychainStore$TrustedCertEntry;
30 31 7 certElem Ljava/security/cert/Certificate;
33 40 6 keyEntry Lapple/security/KeychainStore$KeyEntry;
35 39 7 i I
Exceptions:
throws java.io.IOException, java.security.NoSuchAlgorithmException, java.security.cert.CertificateException
MethodParameters:
Name Flags
stream
password
private long addCertificateToKeychain(java.lang.String, java.security.cert.Certificate);
descriptor: (Ljava/lang/String;Ljava/security/cert/Certificate;)J
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aconst_null
astore 3
start local 3 1: lconst_0
lstore 4
start local 4 2: aload 2
invokevirtual java.security.cert.Certificate.getEncoded:()[B
astore 3
3: aload 0
aload 1
iconst_1
aload 3
aconst_null
invokevirtual apple.security.KeychainStore._addItemToKeychain:(Ljava/lang/String;Z[B[C)J
lstore 4
4: goto 7
StackMap locals: apple.security.KeychainStore java.lang.String java.security.cert.Certificate byte[] long
StackMap stack: java.lang.Exception
5: astore 6
start local 6 6: aload 6
invokevirtual java.lang.Exception.printStackTrace:()V
end local 6 7: StackMap locals:
StackMap stack:
lload 4
lreturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lapple/security/KeychainStore;
0 8 1 alias Ljava/lang/String;
0 8 2 cert Ljava/security/cert/Certificate;
1 8 3 certblob [B
2 8 4 returnValue J
6 7 6 e Ljava/lang/Exception;
Exception table:
from to target type
2 4 5 Class java.lang.Exception
MethodParameters:
Name Flags
alias
cert
private native long _addItemToKeychain(java.lang.String, boolean, byte[], char[]);
descriptor: (Ljava/lang/String;Z[B[C)J
flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
MethodParameters:
Name Flags
alias
isCertificate
datablob
password
private native int _removeItemFromKeychain(long);
descriptor: (J)I
flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
MethodParameters:
Name Flags
certRef
private native void _releaseKeychainItemRef(long);
descriptor: (J)V
flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
MethodParameters:
Name Flags
keychainItemRef
public void engineLoad(java.io.InputStream, char[]);
descriptor: (Ljava/io/InputStream;[C)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=9, args_size=3
start local 0 start local 1 start local 2 0: invokestatic apple.security.KeychainStore.permissionCheck:()V
1: aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
dup
astore 3
monitorenter
2: aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
invokevirtual java.util.Hashtable.keys:()Ljava/util/Enumeration;
astore 4
start local 4 3: goto 20
4: StackMap locals: java.util.Hashtable java.util.Enumeration
StackMap stack:
aload 4
invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
checkcast java.lang.String
astore 5
start local 5 5: aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
aload 5
invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
astore 6
start local 6 6: aload 6
instanceof apple.security.KeychainStore$TrustedCertEntry
ifeq 10
7: aload 6
checkcast apple.security.KeychainStore$TrustedCertEntry
getfield apple.security.KeychainStore$TrustedCertEntry.certRef:J
lconst_0
lcmp
ifeq 20
8: aload 0
aload 6
checkcast apple.security.KeychainStore$TrustedCertEntry
getfield apple.security.KeychainStore$TrustedCertEntry.certRef:J
invokevirtual apple.security.KeychainStore._releaseKeychainItemRef:(J)V
9: goto 20
10: StackMap locals: java.lang.String java.lang.Object
StackMap stack:
aload 6
checkcast apple.security.KeychainStore$KeyEntry
astore 7
start local 7 11: aload 7
getfield apple.security.KeychainStore$KeyEntry.chain:[Ljava/security/cert/Certificate;
ifnull 20
12: iconst_0
istore 8
start local 8 13: goto 17
14: StackMap locals: apple.security.KeychainStore$KeyEntry int
StackMap stack:
aload 7
getfield apple.security.KeychainStore$KeyEntry.chainRefs:[J
iload 8
laload
lconst_0
lcmp
ifeq 16
15: aload 0
aload 7
getfield apple.security.KeychainStore$KeyEntry.chainRefs:[J
iload 8
laload
invokevirtual apple.security.KeychainStore._releaseKeychainItemRef:(J)V
16: StackMap locals:
StackMap stack:
iinc 8 1
StackMap locals:
StackMap stack:
17: iload 8
aload 7
getfield apple.security.KeychainStore$KeyEntry.chain:[Ljava/security/cert/Certificate;
arraylength
if_icmplt 14
end local 8 18: aload 7
getfield apple.security.KeychainStore$KeyEntry.keyRef:J
lconst_0
lcmp
ifeq 20
19: aload 0
aload 7
getfield apple.security.KeychainStore$KeyEntry.keyRef:J
invokevirtual apple.security.KeychainStore._releaseKeychainItemRef:(J)V
end local 7 end local 6 end local 5 20: StackMap locals: apple.security.KeychainStore java.io.InputStream char[] java.util.Hashtable java.util.Enumeration
StackMap stack:
aload 4
invokeinterface java.util.Enumeration.hasMoreElements:()Z
ifne 4
end local 4 21: aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
invokevirtual java.util.Hashtable.clear:()V
22: aload 0
invokevirtual apple.security.KeychainStore._scanKeychain:()V
23: aload 3
monitorexit
24: goto 27
StackMap locals: apple.security.KeychainStore java.io.InputStream char[] java.util.Hashtable
StackMap stack: java.lang.Throwable
25: aload 3
monitorexit
26: athrow
27: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 28 0 this Lapple/security/KeychainStore;
0 28 1 stream Ljava/io/InputStream;
0 28 2 password [C
3 21 4 e Ljava/util/Enumeration<Ljava/lang/String;>;
5 20 5 alias Ljava/lang/String;
6 20 6 entry Ljava/lang/Object;
11 20 7 keyEntry Lapple/security/KeychainStore$KeyEntry;
13 18 8 i I
Exception table:
from to target type
2 24 25 any
25 26 25 any
Exceptions:
throws java.io.IOException, java.security.NoSuchAlgorithmException, java.security.cert.CertificateException
MethodParameters:
Name Flags
stream
password
private native void _scanKeychain();
descriptor: ()V
flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
private void createTrustedCertEntry(java.lang.String, long, long, byte[]);
descriptor: (Ljava/lang/String;JJ[B)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=13, args_size=5
start local 0 start local 1 start local 2 start local 4 start local 6 0: new apple.security.KeychainStore$TrustedCertEntry
dup
aload 0
invokespecial apple.security.KeychainStore$TrustedCertEntry.<init>:(Lapple/security/KeychainStore;)V
astore 7
start local 7 1: ldc "X.509"
invokestatic java.security.cert.CertificateFactory.getInstance:(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
astore 8
start local 8 2: new java.io.ByteArrayInputStream
dup
aload 6
invokespecial java.io.ByteArrayInputStream.<init>:([B)V
astore 9
start local 9 3: aload 8
aload 9
invokevirtual java.security.cert.CertificateFactory.generateCertificate:(Ljava/io/InputStream;)Ljava/security/cert/Certificate;
checkcast java.security.cert.X509Certificate
astore 10
start local 10 4: aload 9
invokevirtual java.io.InputStream.close:()V
5: aload 7
aload 10
putfield apple.security.KeychainStore$TrustedCertEntry.cert:Ljava/security/cert/Certificate;
6: aload 7
lload 2
putfield apple.security.KeychainStore$TrustedCertEntry.certRef:J
7: lload 4
lconst_0
lcmp
ifeq 9
8: aload 7
new java.util.Date
dup
lload 4
invokespecial java.util.Date.<init>:(J)V
putfield apple.security.KeychainStore$TrustedCertEntry.date:Ljava/util/Date;
goto 10
9: StackMap locals: apple.security.KeychainStore java.lang.String long long byte[] apple.security.KeychainStore$TrustedCertEntry java.security.cert.CertificateFactory java.io.InputStream java.security.cert.X509Certificate
StackMap stack:
aload 7
new java.util.Date
dup
invokespecial java.util.Date.<init>:()V
putfield apple.security.KeychainStore$TrustedCertEntry.date:Ljava/util/Date;
10: StackMap locals:
StackMap stack:
iconst_1
istore 11
start local 11 11: aload 1
astore 12
start local 12 12: goto 15
13: StackMap locals: int java.lang.String
StackMap stack:
new java.lang.StringBuilder
dup
aload 12
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;
iload 11
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 1
14: iinc 11 1
15: StackMap locals:
StackMap stack:
aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
aload 1
invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
invokevirtual java.util.Hashtable.containsKey:(Ljava/lang/Object;)Z
ifne 13
16: aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
aload 1
invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
aload 7
invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 12 end local 11 end local 10 end local 9 end local 8 17: goto 20
StackMap locals: apple.security.KeychainStore java.lang.String long long byte[] apple.security.KeychainStore$TrustedCertEntry
StackMap stack: java.lang.Exception
18: astore 8
start local 8 19: getstatic java.lang.System.err:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "KeychainStore Ignored Exception: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 8
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
end local 8 20: StackMap locals:
StackMap stack:
return
end local 7 end local 6 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 this Lapple/security/KeychainStore;
0 21 1 alias Ljava/lang/String;
0 21 2 keychainItemRef J
0 21 4 creationDate J
0 21 6 derStream [B
1 21 7 tce Lapple/security/KeychainStore$TrustedCertEntry;
2 17 8 cf Ljava/security/cert/CertificateFactory;
3 17 9 input Ljava/io/InputStream;
4 17 10 cert Ljava/security/cert/X509Certificate;
11 17 11 uniqueVal I
12 17 12 originalAlias Ljava/lang/String;
19 20 8 e Ljava/lang/Exception;
Exception table:
from to target type
1 17 18 Class java.lang.Exception
MethodParameters:
Name Flags
alias
keychainItemRef
creationDate
derStream
private void createKeyEntry(java.lang.String, long, long, long[], byte[][]);
descriptor: (Ljava/lang/String;JJ[J[[B)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=15, args_size=6
start local 0 start local 1 start local 2 start local 4 start local 6 start local 7 0: new apple.security.KeychainStore$KeyEntry
dup
aload 0
invokespecial apple.security.KeychainStore$KeyEntry.<init>:(Lapple/security/KeychainStore;)V
astore 8
start local 8 1: aload 8
aconst_null
putfield apple.security.KeychainStore$KeyEntry.protectedPrivKey:[B
2: aload 8
lload 4
putfield apple.security.KeychainStore$KeyEntry.keyRef:J
3: lload 2
lconst_0
lcmp
ifeq 5
4: aload 8
new java.util.Date
dup
lload 2
invokespecial java.util.Date.<init>:(J)V
putfield apple.security.KeychainStore$KeyEntry.date:Ljava/util/Date;
goto 6
5: StackMap locals: apple.security.KeychainStore$KeyEntry
StackMap stack:
aload 8
new java.util.Date
dup
invokespecial java.util.Date.<init>:()V
putfield apple.security.KeychainStore$KeyEntry.date:Ljava/util/Date;
6: StackMap locals:
StackMap stack:
new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 9
start local 9 7: ldc "X.509"
invokestatic java.security.cert.CertificateFactory.getInstance:(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
astore 10
start local 10 8: iconst_0
istore 11
start local 11 9: goto 18
10: StackMap locals: java.util.List java.security.cert.CertificateFactory int
StackMap stack:
new java.io.ByteArrayInputStream
dup
aload 7
iload 11
aaload
invokespecial java.io.ByteArrayInputStream.<init>:([B)V
astore 12
start local 12 11: aload 10
aload 12
invokevirtual java.security.cert.CertificateFactory.generateCertificate:(Ljava/io/InputStream;)Ljava/security/cert/Certificate;
checkcast java.security.cert.X509Certificate
astore 13
start local 13 12: aload 12
invokevirtual java.io.InputStream.close:()V
13: aload 9
new apple.security.KeychainStore$CertKeychainItemPair
dup
aload 0
aload 6
iload 11
laload
aload 13
invokespecial apple.security.KeychainStore$CertKeychainItemPair.<init>:(Lapple/security/KeychainStore;JLjava/security/cert/Certificate;)V
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 13 end local 12 14: goto 17
StackMap locals:
StackMap stack: java.security.cert.CertificateException
15: astore 12
start local 12 16: getstatic java.lang.System.err:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "KeychainStore Ignored Exception: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 12
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
end local 12 17: StackMap locals:
StackMap stack:
iinc 11 1
StackMap locals:
StackMap stack:
18: iload 11
aload 7
arraylength
if_icmplt 10
end local 11 end local 10 19: goto 25
StackMap locals: apple.security.KeychainStore java.lang.String long long long[] byte[][] apple.security.KeychainStore$KeyEntry java.util.List
StackMap stack: java.security.cert.CertificateException
20: astore 10
start local 10 21: aload 10
invokevirtual java.security.cert.CertificateException.printStackTrace:()V
end local 10 22: goto 25
23: StackMap locals:
StackMap stack: java.io.IOException
astore 10
start local 10 24: aload 10
invokevirtual java.io.IOException.printStackTrace:()V
end local 10 25: StackMap locals:
StackMap stack:
aload 9
iconst_0
anewarray apple.security.KeychainStore$CertKeychainItemPair
invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
checkcast apple.security.KeychainStore$CertKeychainItemPair[]
astore 10
start local 10 26: aload 10
arraylength
anewarray java.security.cert.Certificate
astore 11
start local 11 27: aload 10
arraylength
newarray 11
astore 12
start local 12 28: iconst_0
istore 13
start local 13 29: goto 34
30: StackMap locals: apple.security.KeychainStore java.lang.String long long long[] byte[][] apple.security.KeychainStore$KeyEntry java.util.List apple.security.KeychainStore$CertKeychainItemPair[] java.security.cert.Certificate[] long[] int
StackMap stack:
aload 10
iload 13
aaload
astore 14
start local 14 31: aload 11
iload 13
aload 14
getfield apple.security.KeychainStore$CertKeychainItemPair.mCert:Ljava/security/cert/Certificate;
aastore
32: aload 12
iload 13
aload 14
getfield apple.security.KeychainStore$CertKeychainItemPair.mCertificateRef:J
lastore
end local 14 33: iinc 13 1
StackMap locals:
StackMap stack:
34: iload 13
aload 10
arraylength
if_icmplt 30
end local 13 35: aload 8
aload 11
putfield apple.security.KeychainStore$KeyEntry.chain:[Ljava/security/cert/Certificate;
36: aload 8
aload 12
putfield apple.security.KeychainStore$KeyEntry.chainRefs:[J
37: iconst_1
istore 13
start local 13 38: aload 1
astore 14
start local 14 39: goto 42
40: StackMap locals: java.lang.String
StackMap stack:
new java.lang.StringBuilder
dup
aload 14
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;
iload 13
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 1
41: iinc 13 1
42: StackMap locals:
StackMap stack:
aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
aload 1
invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
invokevirtual java.util.Hashtable.containsKey:(Ljava/lang/Object;)Z
ifne 40
43: aload 0
getfield apple.security.KeychainStore.entries:Ljava/util/Hashtable;
aload 1
invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
aload 8
invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
44: return
end local 14 end local 13 end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 45 0 this Lapple/security/KeychainStore;
0 45 1 alias Ljava/lang/String;
0 45 2 creationDate J
0 45 4 secKeyRef J
0 45 6 secCertificateRefs [J
0 45 7 rawCertData [[B
1 45 8 ke Lapple/security/KeychainStore$KeyEntry;
7 45 9 createdCerts Ljava/util/List<Lapple/security/KeychainStore$CertKeychainItemPair;>;
8 19 10 cf Ljava/security/cert/CertificateFactory;
9 19 11 i I
11 14 12 input Ljava/io/InputStream;
12 14 13 cert Ljava/security/cert/X509Certificate;
16 17 12 e Ljava/security/cert/CertificateException;
21 22 10 e Ljava/security/cert/CertificateException;
24 25 10 ioe Ljava/io/IOException;
26 45 10 objArray [Lapple/security/KeychainStore$CertKeychainItemPair;
27 45 11 certArray [Ljava/security/cert/Certificate;
28 45 12 certRefArray [J
29 35 13 i I
31 33 14 addedItem Lapple/security/KeychainStore$CertKeychainItemPair;
38 45 13 uniqueVal I
39 45 14 originalAlias Ljava/lang/String;
Exception table:
from to target type
10 14 15 Class java.security.cert.CertificateException
7 19 20 Class java.security.cert.CertificateException
7 19 23 Class java.io.IOException
Exceptions:
throws java.io.IOException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException
MethodParameters:
Name Flags
alias
creationDate
secKeyRef
secCertificateRefs
rawCertData
private boolean validateChain(java.security.cert.Certificate[]);
descriptor: ([Ljava/security/cert/Certificate;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=5, args_size=2
start local 0 start local 1 0: iconst_0
istore 2
start local 2 1: goto 9
2: StackMap locals: int
StackMap stack:
aload 1
iload 2
aaload
checkcast java.security.cert.X509Certificate
invokevirtual java.security.cert.X509Certificate.getIssuerX500Principal:()Ljavax/security/auth/x500/X500Principal;
3: astore 3
start local 3 4: aload 1
iload 2
iconst_1
iadd
aaload
checkcast java.security.cert.X509Certificate
invokevirtual java.security.cert.X509Certificate.getSubjectX500Principal:()Ljavax/security/auth/x500/X500Principal;
5: astore 4
start local 4 6: aload 3
aload 4
invokevirtual javax.security.auth.x500.X500Principal.equals:(Ljava/lang/Object;)Z
ifne 8
7: iconst_0
ireturn
end local 4 end local 3 8: StackMap locals:
StackMap stack:
iinc 2 1
StackMap locals:
StackMap stack:
9: iload 2
aload 1
arraylength
iconst_1
isub
if_icmplt 2
end local 2 10: iconst_1
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lapple/security/KeychainStore;
0 11 1 certChain [Ljava/security/cert/Certificate;
1 10 2 i I
4 8 3 issuerDN Ljavax/security/auth/x500/X500Principal;
6 8 4 subjectDN Ljavax/security/auth/x500/X500Principal;
MethodParameters:
Name Flags
certChain
private byte[] fetchPrivateKeyFromBag(byte[]);
descriptor: ([B)[B
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=17, args_size=2
start local 0 start local 1 0: aconst_null
astore 2
start local 2 1: new sun.security.util.DerValue
dup
new java.io.ByteArrayInputStream
dup
aload 1
invokespecial java.io.ByteArrayInputStream.<init>:([B)V
invokespecial sun.security.util.DerValue.<init>:(Ljava/io/InputStream;)V
astore 3
start local 3 2: aload 3
invokevirtual sun.security.util.DerValue.toDerInputStream:()Lsun/security/util/DerInputStream;
astore 4
start local 4 3: aload 4
invokevirtual sun.security.util.DerInputStream.getInteger:()I
istore 5
start local 5 4: iload 5
iconst_3
if_icmpeq 6
5: new java.io.IOException
dup
ldc "PKCS12 keystore not in version 3 format"
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals: apple.security.KeychainStore byte[] byte[] sun.security.util.DerValue sun.security.util.DerInputStream int
StackMap stack:
new sun.security.pkcs.ContentInfo
dup
aload 4
invokespecial sun.security.pkcs.ContentInfo.<init>:(Lsun/security/util/DerInputStream;)V
astore 7
start local 7 7: aload 7
invokevirtual sun.security.pkcs.ContentInfo.getContentType:()Lsun/security/util/ObjectIdentifier;
astore 8
start local 8 8: aload 8
getstatic sun.security.pkcs.ContentInfo.DATA_OID:Lsun/security/util/ObjectIdentifier;
invokevirtual sun.security.util.ObjectIdentifier.equals:(Ljava/lang/Object;)Z
ifeq 11
9: aload 7
invokevirtual sun.security.pkcs.ContentInfo.getData:()[B
astore 6
start local 6 10: goto 12
end local 6 11: StackMap locals: apple.security.KeychainStore byte[] byte[] sun.security.util.DerValue sun.security.util.DerInputStream int top sun.security.pkcs.ContentInfo sun.security.util.ObjectIdentifier
StackMap stack:
new java.io.IOException
dup
ldc "public key protected PKCS12 not supported"
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
start local 6 12: StackMap locals: apple.security.KeychainStore byte[] byte[] sun.security.util.DerValue sun.security.util.DerInputStream int byte[] sun.security.pkcs.ContentInfo sun.security.util.ObjectIdentifier
StackMap stack:
new sun.security.util.DerInputStream
dup
aload 6
invokespecial sun.security.util.DerInputStream.<init>:([B)V
astore 9
start local 9 13: aload 9
iconst_2
invokevirtual sun.security.util.DerInputStream.getSequence:(I)[Lsun/security/util/DerValue;
astore 10
start local 10 14: aload 10
arraylength
istore 11
start local 11 15: iconst_0
istore 12
start local 12 16: goto 30
17: StackMap locals: apple.security.KeychainStore byte[] byte[] sun.security.util.DerValue sun.security.util.DerInputStream int byte[] sun.security.pkcs.ContentInfo sun.security.util.ObjectIdentifier sun.security.util.DerInputStream sun.security.util.DerValue[] int int
StackMap stack:
new sun.security.util.DerInputStream
dup
aload 10
iload 12
aaload
invokevirtual sun.security.util.DerValue.toByteArray:()[B
invokespecial sun.security.util.DerInputStream.<init>:([B)V
astore 15
start local 15 18: new sun.security.pkcs.ContentInfo
dup
aload 15
invokespecial sun.security.pkcs.ContentInfo.<init>:(Lsun/security/util/DerInputStream;)V
astore 14
start local 14 19: aload 14
invokevirtual sun.security.pkcs.ContentInfo.getContentType:()Lsun/security/util/ObjectIdentifier;
astore 8
20: aconst_null
astore 13
start local 13 21: aload 8
getstatic sun.security.pkcs.ContentInfo.DATA_OID:Lsun/security/util/ObjectIdentifier;
invokevirtual sun.security.util.ObjectIdentifier.equals:(Ljava/lang/Object;)Z
ifeq 24
22: aload 14
invokevirtual sun.security.pkcs.ContentInfo.getData:()[B
astore 13
23: goto 27
StackMap locals: byte[] sun.security.pkcs.ContentInfo sun.security.util.DerInputStream
StackMap stack:
24: aload 8
getstatic sun.security.pkcs.ContentInfo.ENCRYPTED_DATA_OID:Lsun/security/util/ObjectIdentifier;
invokevirtual sun.security.util.ObjectIdentifier.equals:(Ljava/lang/Object;)Z
ifeq 26
25: goto 29
26: StackMap locals:
StackMap stack:
new java.io.IOException
dup
ldc "public key protected PKCS12 not supported"
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
27: StackMap locals:
StackMap stack:
new sun.security.util.DerInputStream
dup
aload 13
invokespecial sun.security.util.DerInputStream.<init>:([B)V
astore 16
start local 16 28: aload 0
aload 16
invokevirtual apple.security.KeychainStore.extractKeyData:(Lsun/security/util/DerInputStream;)[B
astore 2
end local 16 end local 15 end local 14 end local 13 29: StackMap locals:
StackMap stack:
iinc 12 1
StackMap locals:
StackMap stack:
30: iload 12
iload 11
if_icmplt 17
end local 12 31: aload 2
areturn
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 32 0 this Lapple/security/KeychainStore;
0 32 1 privateKeyInfo [B
1 32 2 returnValue [B
2 32 3 val Lsun/security/util/DerValue;
3 32 4 s Lsun/security/util/DerInputStream;
4 32 5 version I
10 11 6 authSafeData [B
12 32 6 authSafeData [B
7 32 7 authSafe Lsun/security/pkcs/ContentInfo;
8 32 8 contentType Lsun/security/util/ObjectIdentifier;
13 32 9 as Lsun/security/util/DerInputStream;
14 32 10 safeContentsArray [Lsun/security/util/DerValue;
15 32 11 count I
16 31 12 i I
21 29 13 safeContentsData [B
19 29 14 safeContents Lsun/security/pkcs/ContentInfo;
18 29 15 sci Lsun/security/util/DerInputStream;
28 29 16 sc Lsun/security/util/DerInputStream;
Exceptions:
throws java.io.IOException, java.security.NoSuchAlgorithmException, java.security.cert.CertificateException
MethodParameters:
Name Flags
privateKeyInfo
private byte[] (sun.security.util.DerInputStream);
descriptor: (Lsun/security/util/DerInputStream;)[B
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=9, args_size=2
start local 0 start local 1 0: aconst_null
astore 2
start local 2 1: aload 1
iconst_2
invokevirtual sun.security.util.DerInputStream.getSequence:(I)[Lsun/security/util/DerValue;
astore 3
start local 3 2: aload 3
arraylength
istore 4
start local 4 3: iconst_0
istore 5
start local 5 4: goto 18
5: StackMap locals: apple.security.KeychainStore sun.security.util.DerInputStream byte[] sun.security.util.DerValue[] int int
StackMap stack:
aload 3
iload 5
aaload
invokevirtual sun.security.util.DerValue.toDerInputStream:()Lsun/security/util/DerInputStream;
astore 7
start local 7 6: aload 7
invokevirtual sun.security.util.DerInputStream.getOID:()Lsun/security/util/ObjectIdentifier;
astore 6
start local 6 7: aload 7
invokevirtual sun.security.util.DerInputStream.getDerValue:()Lsun/security/util/DerValue;
astore 8
start local 8 8: aload 8
iconst_0
invokevirtual sun.security.util.DerValue.isContextSpecific:(B)Z
ifne 12
9: new java.io.IOException
dup
new java.lang.StringBuilder
dup
ldc "unsupported PKCS12 bag value type "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
10: aload 8
getfield sun.security.util.DerValue.tag:B
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
11: invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
12: StackMap locals: sun.security.util.ObjectIdentifier sun.security.util.DerInputStream sun.security.util.DerValue
StackMap stack:
aload 8
getfield sun.security.util.DerValue.data:Lsun/security/util/DerInputStream;
invokevirtual sun.security.util.DerInputStream.getDerValue:()Lsun/security/util/DerValue;
astore 8
13: aload 6
getstatic apple.security.KeychainStore.PKCS8ShroudedKeyBag_OID:Lsun/security/util/ObjectIdentifier;
invokevirtual sun.security.util.ObjectIdentifier.equals:(Ljava/lang/Object;)Z
ifeq 16
14: aload 8
invokevirtual sun.security.util.DerValue.toByteArray:()[B
astore 2
15: goto 17
16: StackMap locals:
StackMap stack:
getstatic java.lang.System.out:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "Unsupported bag type '"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 6
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)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
end local 8 end local 7 end local 6 17: StackMap locals:
StackMap stack:
iinc 5 1
StackMap locals:
StackMap stack:
18: iload 5
iload 4
if_icmplt 5
end local 5 19: aload 2
areturn
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 Lapple/security/KeychainStore;
0 20 1 stream Lsun/security/util/DerInputStream;
1 20 2 returnValue [B
2 20 3 safeBags [Lsun/security/util/DerValue;
3 20 4 count I
4 19 5 i I
7 17 6 bagId Lsun/security/util/ObjectIdentifier;
6 17 7 sbi Lsun/security/util/DerInputStream;
8 17 8 bagValue Lsun/security/util/DerValue;
Exceptions:
throws java.io.IOException, java.security.NoSuchAlgorithmException, java.security.cert.CertificateException
MethodParameters:
Name Flags
stream
private java.security.AlgorithmParameters getAlgorithmParameters(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/security/AlgorithmParameters;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=6, args_size=2
start local 0 start local 1 0: aconst_null
astore 2
start local 2 1: new javax.crypto.spec.PBEParameterSpec
dup
aload 0
invokevirtual apple.security.KeychainStore.getSalt:()[B
sipush 1024
invokespecial javax.crypto.spec.PBEParameterSpec.<init>:([BI)V
2: astore 3
start local 3 3: aload 1
invokestatic java.security.AlgorithmParameters.getInstance:(Ljava/lang/String;)Ljava/security/AlgorithmParameters;
astore 2
4: aload 2
aload 3
invokevirtual java.security.AlgorithmParameters.init:(Ljava/security/spec/AlgorithmParameterSpec;)V
5: goto 13
StackMap locals: apple.security.KeychainStore java.lang.String java.security.AlgorithmParameters javax.crypto.spec.PBEParameterSpec
StackMap stack: java.lang.Exception
6: astore 4
start local 4 7: new java.io.IOException
dup
new java.lang.StringBuilder
dup
ldc "getAlgorithmParameters failed: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
8: aload 4
invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
9: invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
10: astore 5
start local 5 11: aload 5
aload 4
invokevirtual java.io.IOException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
pop
12: aload 5
athrow
end local 5 end local 4 13: StackMap locals:
StackMap stack:
aload 2
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lapple/security/KeychainStore;
0 14 1 algorithm Ljava/lang/String;
1 14 2 algParams Ljava/security/AlgorithmParameters;
3 14 3 paramSpec Ljavax/crypto/spec/PBEParameterSpec;
7 13 4 e Ljava/lang/Exception;
11 13 5 ioe Ljava/io/IOException;
Exception table:
from to target type
3 5 6 Class java.lang.Exception
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
algorithm
private byte[] getSalt();
descriptor: ()[B
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=1
start local 0 0: bipush 20
newarray 8
astore 1
start local 1 1: aload 0
getfield apple.security.KeychainStore.random:Ljava/security/SecureRandom;
ifnonnull 3
2: aload 0
new java.security.SecureRandom
dup
invokespecial java.security.SecureRandom.<init>:()V
putfield apple.security.KeychainStore.random:Ljava/security/SecureRandom;
3: StackMap locals: byte[]
StackMap stack:
aload 0
getfield apple.security.KeychainStore.random:Ljava/security/SecureRandom;
bipush 20
invokevirtual java.security.SecureRandom.generateSeed:(I)[B
astore 1
4: aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lapple/security/KeychainStore;
1 5 1 salt [B
private java.security.AlgorithmParameters parseAlgParameters(sun.security.util.DerInputStream);
descriptor: (Lsun/security/util/DerInputStream;)Ljava/security/AlgorithmParameters;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=5, args_size=2
start local 0 start local 1 0: aconst_null
astore 2
start local 2 1: aload 1
invokevirtual sun.security.util.DerInputStream.available:()I
ifne 4
2: aconst_null
astore 3
start local 3 3: goto 7
end local 3 4: StackMap locals: java.security.AlgorithmParameters
StackMap stack:
aload 1
invokevirtual sun.security.util.DerInputStream.getDerValue:()Lsun/security/util/DerValue;
astore 3
start local 3 5: aload 3
getfield sun.security.util.DerValue.tag:B
iconst_5
if_icmpne 7
6: aconst_null
astore 3
7: StackMap locals: sun.security.util.DerValue
StackMap stack:
aload 3
ifnull 18
8: ldc "PBE"
invokestatic java.security.AlgorithmParameters.getInstance:(Ljava/lang/String;)Ljava/security/AlgorithmParameters;
astore 2
9: aload 2
aload 3
invokevirtual sun.security.util.DerValue.toByteArray:()[B
invokevirtual java.security.AlgorithmParameters.init:([B)V
end local 3 10: goto 18
StackMap locals: apple.security.KeychainStore sun.security.util.DerInputStream java.security.AlgorithmParameters
StackMap stack: java.lang.Exception
11: astore 3
start local 3 12: new java.io.IOException
dup
new java.lang.StringBuilder
dup
ldc "parseAlgParameters failed: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
13: aload 3
invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
14: invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
15: astore 4
start local 4 16: aload 4
aload 3
invokevirtual java.io.IOException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
pop
17: aload 4
athrow
end local 4 end local 3 18: StackMap locals:
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Lapple/security/KeychainStore;
0 19 1 in Lsun/security/util/DerInputStream;
1 19 2 algParams Ljava/security/AlgorithmParameters;
3 4 3 params Lsun/security/util/DerValue;
5 10 3 params Lsun/security/util/DerValue;
12 18 3 e Ljava/lang/Exception;
16 18 4 ioe Ljava/io/IOException;
Exception table:
from to target type
1 10 11 Class java.lang.Exception
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
in
private javax.crypto.SecretKey getPBEKey(char[]);
descriptor: ([C)Ljavax/crypto/SecretKey;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=5, args_size=2
start local 0 start local 1 0: aconst_null
astore 2
start local 2 1: new javax.crypto.spec.PBEKeySpec
dup
aload 1
invokespecial javax.crypto.spec.PBEKeySpec.<init>:([C)V
astore 3
start local 3 2: ldc "PBE"
invokestatic javax.crypto.SecretKeyFactory.getInstance:(Ljava/lang/String;)Ljavax/crypto/SecretKeyFactory;
astore 4
start local 4 3: aload 4
aload 3
invokevirtual javax.crypto.SecretKeyFactory.generateSecret:(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;
astore 2
end local 4 end local 3 4: goto 11
StackMap locals: apple.security.KeychainStore char[] javax.crypto.SecretKey
StackMap stack: java.lang.Exception
5: astore 3
start local 3 6: new java.io.IOException
dup
new java.lang.StringBuilder
dup
ldc "getSecretKey failed: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
7: aload 3
invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
8: invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
astore 4
start local 4 9: aload 4
aload 3
invokevirtual java.io.IOException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
pop
10: aload 4
athrow
end local 4 end local 3 11: StackMap locals:
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lapple/security/KeychainStore;
0 12 1 password [C
1 12 2 skey Ljavax/crypto/SecretKey;
2 4 3 keySpec Ljavax/crypto/spec/PBEKeySpec;
3 4 4 skFac Ljavax/crypto/SecretKeyFactory;
6 11 3 e Ljava/lang/Exception;
9 11 4 ioe Ljava/io/IOException;
Exception table:
from to target type
1 4 5 Class java.lang.Exception
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
password
private byte[] encryptPrivateKey(byte[], char[]);
descriptor: ([B[C)[B
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=10, args_size=3
start local 0 start local 1 start local 2 0: aconst_null
astore 3
start local 3 1: aload 0
ldc "PBEWithSHA1AndDESede"
invokevirtual apple.security.KeychainStore.getAlgorithmParameters:(Ljava/lang/String;)Ljava/security/AlgorithmParameters;
2: astore 4
start local 4 3: aload 0
aload 2
invokevirtual apple.security.KeychainStore.getPBEKey:([C)Ljavax/crypto/SecretKey;
astore 5
start local 5 4: ldc "PBEWithSHA1AndDESede"
invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
astore 6
start local 6 5: aload 6
iconst_1
aload 5
aload 4
invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;Ljava/security/AlgorithmParameters;)V
6: aload 6
aload 1
invokevirtual javax.crypto.Cipher.doFinal:([B)[B
astore 7
start local 7 7: new sun.security.x509.AlgorithmId
dup
getstatic apple.security.KeychainStore.pbeWithSHAAnd3KeyTripleDESCBC_OID:Lsun/security/util/ObjectIdentifier;
aload 4
invokespecial sun.security.x509.AlgorithmId.<init>:(Lsun/security/util/ObjectIdentifier;Ljava/security/AlgorithmParameters;)V
8: astore 8
start local 8 9: new sun.security.pkcs.EncryptedPrivateKeyInfo
dup
aload 8
aload 7
invokespecial sun.security.pkcs.EncryptedPrivateKeyInfo.<init>:(Lsun/security/x509/AlgorithmId;[B)V
10: astore 9
start local 9 11: aload 9
invokevirtual sun.security.pkcs.EncryptedPrivateKeyInfo.getEncoded:()[B
astore 3
end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 12: goto 20
StackMap locals: apple.security.KeychainStore byte[] char[] byte[]
StackMap stack: java.lang.Exception
13: astore 4
start local 4 14: new java.security.UnrecoverableKeyException
dup
new java.lang.StringBuilder
dup
ldc "Encrypt Private Key failed: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
15: aload 4
invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
16: invokespecial java.security.UnrecoverableKeyException.<init>:(Ljava/lang/String;)V
17: astore 5
start local 5 18: aload 5
aload 4
invokevirtual java.security.UnrecoverableKeyException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
pop
19: aload 5
athrow
end local 5 end local 4 20: StackMap locals:
StackMap stack:
aload 3
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 this Lapple/security/KeychainStore;
0 21 1 data [B
0 21 2 password [C
1 21 3 key [B
3 12 4 algParams Ljava/security/AlgorithmParameters;
4 12 5 skey Ljavax/crypto/SecretKey;
5 12 6 cipher Ljavax/crypto/Cipher;
7 12 7 encryptedKey [B
9 12 8 algid Lsun/security/x509/AlgorithmId;
11 12 9 encrInfo Lsun/security/pkcs/EncryptedPrivateKeyInfo;
14 20 4 e Ljava/lang/Exception;
18 20 5 uke Ljava/security/UnrecoverableKeyException;
Exception table:
from to target type
1 12 13 Class java.lang.Exception
Exceptions:
throws java.io.IOException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException
MethodParameters:
Name Flags
data
password
}
SourceFile: "KeychainStore.java"
NestMembers:
apple.security.KeychainStore$1 apple.security.KeychainStore$CertKeychainItemPair apple.security.KeychainStore$KeyEntry apple.security.KeychainStore$TrustedCertEntry
InnerClasses:
apple.security.KeychainStore$1
private CertKeychainItemPair = apple.security.KeychainStore$CertKeychainItemPair of apple.security.KeychainStore
KeyEntry = apple.security.KeychainStore$KeyEntry of apple.security.KeychainStore
TrustedCertEntry = apple.security.KeychainStore$TrustedCertEntry of apple.security.KeychainStore