abstract class sun.security.mscapi.CKeyStore extends java.security.KeyStoreSpi
minor version: 0
major version: 59
flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
this_class: sun.security.mscapi.CKeyStore
super_class: java.security.KeyStoreSpi
{
private java.security.cert.CertificateFactory certificateFactory;
descriptor: Ljava/security/cert/CertificateFactory;
flags: (0x0002) ACC_PRIVATE
private static final java.lang.String KEYSTORE_COMPATIBILITY_MODE_PROP;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "sun.security.mscapi.keyStoreCompatibilityMode"
private final boolean keyStoreCompatibilityMode;
descriptor: Z
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private java.util.Map<java.lang.String, sun.security.mscapi.CKeyStore$KeyEntry> entries;
descriptor: Ljava/util/Map;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/Map<Ljava/lang/String;Lsun/security/mscapi/CKeyStore$KeyEntry;>;
private final java.lang.String storeName;
descriptor: Ljava/lang/String;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
void <init>(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0000)
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.security.KeyStoreSpi.<init>:()V
1: aload 0
aconst_null
putfield sun.security.mscapi.CKeyStore.certificateFactory:Ljava/security/cert/CertificateFactory;
2: aload 0
new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
putfield sun.security.mscapi.CKeyStore.entries:Ljava/util/Map;
3: invokedynamic run()Ljava/security/PrivilegedAction;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
()Ljava/lang/Object;
sun/security/mscapi/CKeyStore.lambda$0()Ljava/lang/String; (6)
()Ljava/lang/String;
4: invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
checkcast java.lang.String
astore 2
start local 2 5: ldc "false"
aload 2
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifeq 8
6: aload 0
iconst_0
putfield sun.security.mscapi.CKeyStore.keyStoreCompatibilityMode:Z
7: goto 9
8: StackMap locals: sun.security.mscapi.CKeyStore java.lang.String java.lang.String
StackMap stack:
aload 0
iconst_1
putfield sun.security.mscapi.CKeyStore.keyStoreCompatibilityMode:Z
9: StackMap locals:
StackMap stack:
aload 0
aload 1
putfield sun.security.mscapi.CKeyStore.storeName:Ljava/lang/String;
10: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lsun/security/mscapi/CKeyStore;
0 11 1 storeName Ljava/lang/String;
5 11 2 prop Ljava/lang/String;
MethodParameters:
Name Flags
storeName
public java.security.Key engineGetKey(java.lang.String, char[]);
descriptor: (Ljava/lang/String;[C)Ljava/security/Key;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 1
ifnonnull 2
1: aconst_null
areturn
2: StackMap locals:
StackMap stack:
aload 2
ifnull 4
aload 0
getfield sun.security.mscapi.CKeyStore.keyStoreCompatibilityMode:Z
ifne 4
3: new java.security.UnrecoverableKeyException
dup
ldc "Password must be null"
invokespecial java.security.UnrecoverableKeyException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual sun.security.mscapi.CKeyStore.engineIsKeyEntry:(Ljava/lang/String;)Z
ifne 6
5: aconst_null
areturn
6: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.mscapi.CKeyStore.entries:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast sun.security.mscapi.CKeyStore$KeyEntry
astore 3
start local 3 7: aload 3
ifnonnull 9
8: aconst_null
goto 10
9: StackMap locals: sun.security.mscapi.CKeyStore$KeyEntry
StackMap stack:
aload 3
invokevirtual sun.security.mscapi.CKeyStore$KeyEntry.getPrivateKey:()Lsun/security/mscapi/CKey;
10: StackMap locals:
StackMap stack: sun.security.mscapi.CKey
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lsun/security/mscapi/CKeyStore;
0 11 1 alias Ljava/lang/String;
0 11 2 password [C
7 11 3 entry Lsun/security/mscapi/CKeyStore$KeyEntry;
Exceptions:
throws java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException
MethodParameters:
Name Flags
alias
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=4, args_size=2
start local 0 start local 1 0: aload 1
ifnonnull 2
1: aconst_null
areturn
2: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.mscapi.CKeyStore.entries:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast sun.security.mscapi.CKeyStore$KeyEntry
astore 2
start local 2 3: aload 2
ifnonnull 5
4: aconst_null
goto 6
5: StackMap locals: sun.security.mscapi.CKeyStore$KeyEntry
StackMap stack:
aload 2
invokevirtual sun.security.mscapi.CKeyStore$KeyEntry.getCertificateChain:()[Ljava/security/cert/X509Certificate;
6: StackMap locals:
StackMap stack: java.security.cert.X509Certificate[]
astore 3
start local 3 7: aload 3
ifnonnull 9
8: aconst_null
goto 10
9: StackMap locals: java.security.cert.X509Certificate[]
StackMap stack:
aload 3
invokevirtual java.security.cert.X509Certificate[].clone:()Ljava/lang/Object;
checkcast java.security.cert.Certificate[]
10: StackMap locals:
StackMap stack: java.security.cert.Certificate[]
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lsun/security/mscapi/CKeyStore;
0 11 1 alias Ljava/lang/String;
3 11 2 entry Lsun/security/mscapi/CKeyStore$KeyEntry;
7 11 3 certChain [Ljava/security/cert/X509Certificate;
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: aload 1
ifnonnull 2
1: aconst_null
areturn
2: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.mscapi.CKeyStore.entries:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast sun.security.mscapi.CKeyStore$KeyEntry
astore 2
start local 2 3: aload 2
ifnonnull 5
4: aconst_null
goto 6
5: StackMap locals: sun.security.mscapi.CKeyStore$KeyEntry
StackMap stack:
aload 2
invokevirtual sun.security.mscapi.CKeyStore$KeyEntry.getCertificateChain:()[Ljava/security/cert/X509Certificate;
6: StackMap locals:
StackMap stack: java.security.cert.X509Certificate[]
astore 3
start local 3 7: aload 3
ifnull 8
aload 3
arraylength
ifne 9
8: StackMap locals: java.security.cert.X509Certificate[]
StackMap stack:
aconst_null
goto 10
9: StackMap locals:
StackMap stack:
aload 3
iconst_0
aaload
10: StackMap locals:
StackMap stack: java.security.cert.X509Certificate
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lsun/security/mscapi/CKeyStore;
0 11 1 alias Ljava/lang/String;
3 11 2 entry Lsun/security/mscapi/CKeyStore$KeyEntry;
7 11 3 certChain [Ljava/security/cert/X509Certificate;
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=2, locals=2, args_size=2
start local 0 start local 1 0: aload 1
ifnonnull 2
1: aconst_null
areturn
2: StackMap locals:
StackMap stack:
new java.util.Date
dup
invokespecial java.util.Date.<init>:()V
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/security/mscapi/CKeyStore;
0 3 1 alias Ljava/lang/String;
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=6, locals=8, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 1
ifnonnull 2
1: new java.security.KeyStoreException
dup
ldc "alias must not be null"
invokespecial java.security.KeyStoreException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 3
ifnull 4
aload 0
getfield sun.security.mscapi.CKeyStore.keyStoreCompatibilityMode:Z
ifne 4
3: new java.security.KeyStoreException
dup
ldc "Password must be null"
invokespecial java.security.KeyStoreException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
aload 2
instanceof java.security.interfaces.RSAPrivateCrtKey
ifeq 26
5: aload 0
getfield sun.security.mscapi.CKeyStore.entries:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast sun.security.mscapi.CKeyStore$KeyEntry
astore 5
start local 5 6: aload 4
ifnull 13
7: aload 4
instanceof java.security.cert.X509Certificate[]
ifeq 10
8: aload 4
checkcast java.security.cert.X509Certificate[]
astore 6
start local 6 9: goto 14
end local 6 10: StackMap locals: sun.security.mscapi.CKeyStore$KeyEntry
StackMap stack:
aload 4
arraylength
anewarray java.security.cert.X509Certificate
astore 6
start local 6 11: aload 4
iconst_0
aload 6
iconst_0
aload 4
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
12: goto 14
end local 6 13: StackMap locals:
StackMap stack:
aconst_null
astore 6
start local 6 14: StackMap locals: java.security.cert.X509Certificate[]
StackMap stack:
aload 5
ifnonnull 18
15: new sun.security.mscapi.CKeyStore$KeyEntry
dup
aload 0
aload 1
aconst_null
aload 6
invokespecial sun.security.mscapi.CKeyStore$KeyEntry.<init>:(Lsun/security/mscapi/CKeyStore;Ljava/lang/String;Lsun/security/mscapi/CKey;[Ljava/security/cert/X509Certificate;)V
16: astore 5
17: aload 0
aload 1
aload 5
invokevirtual sun.security.mscapi.CKeyStore.storeWithUniqueAlias:(Ljava/lang/String;Lsun/security/mscapi/CKeyStore$KeyEntry;)V
18: StackMap locals:
StackMap stack:
aload 5
aload 1
invokevirtual sun.security.mscapi.CKeyStore$KeyEntry.setAlias:(Ljava/lang/String;)V
19: aload 5
aload 2
invokevirtual sun.security.mscapi.CKeyStore$KeyEntry.setRSAPrivateKey:(Ljava/security/Key;)V
20: aload 5
aload 6
invokevirtual sun.security.mscapi.CKeyStore$KeyEntry.setCertificateChain:([Ljava/security/cert/X509Certificate;)V
21: goto 29
StackMap locals:
StackMap stack: java.security.cert.CertificateException
22: astore 7
start local 7 23: new java.security.KeyStoreException
dup
aload 7
invokespecial java.security.KeyStoreException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 7 24: StackMap locals:
StackMap stack: java.security.InvalidKeyException
astore 7
start local 7 25: new java.security.KeyStoreException
dup
aload 7
invokespecial java.security.KeyStoreException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 7 end local 6 end local 5 26: StackMap locals:
StackMap stack:
new java.lang.UnsupportedOperationException
dup
27: ldc "Cannot assign the key to the given alias."
28: invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
athrow
29: 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 30 0 this Lsun/security/mscapi/CKeyStore;
0 30 1 alias Ljava/lang/String;
0 30 2 key Ljava/security/Key;
0 30 3 password [C
0 30 4 chain [Ljava/security/cert/Certificate;
6 26 5 entry Lsun/security/mscapi/CKeyStore$KeyEntry;
9 10 6 xchain [Ljava/security/cert/X509Certificate;
11 13 6 xchain [Ljava/security/cert/X509Certificate;
14 26 6 xchain [Ljava/security/cert/X509Certificate;
23 24 7 ce Ljava/security/cert/CertificateException;
25 26 7 ike Ljava/security/InvalidKeyException;
Exception table:
from to target type
19 21 22 Class java.security.cert.CertificateException
19 21 24 Class java.security.InvalidKeyException
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=3, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: new java.lang.UnsupportedOperationException
dup
1: ldc "Cannot assign the encoded key to the given alias."
2: invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
athrow
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/security/mscapi/CKeyStore;
0 3 1 alias Ljava/lang/String;
0 3 2 key [B
0 3 3 chain [Ljava/security/cert/Certificate;
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=6, locals=6, args_size=3
start local 0 start local 1 start local 2 0: aload 1
ifnonnull 2
1: new java.security.KeyStoreException
dup
ldc "alias must not be null"
invokespecial java.security.KeyStoreException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 2
instanceof java.security.cert.X509Certificate
ifeq 16
3: iconst_1
anewarray java.security.cert.X509Certificate
dup
iconst_0
aload 2
checkcast java.security.cert.X509Certificate
aastore
4: astore 3
start local 3 5: aload 0
getfield sun.security.mscapi.CKeyStore.entries:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast sun.security.mscapi.CKeyStore$KeyEntry
astore 4
start local 4 6: aload 4
ifnonnull 10
7: new sun.security.mscapi.CKeyStore$KeyEntry
dup
aload 0
aload 1
aconst_null
aload 3
invokespecial sun.security.mscapi.CKeyStore$KeyEntry.<init>:(Lsun/security/mscapi/CKeyStore;Ljava/lang/String;Lsun/security/mscapi/CKey;[Ljava/security/cert/X509Certificate;)V
8: astore 4
9: aload 0
aload 1
aload 4
invokevirtual sun.security.mscapi.CKeyStore.storeWithUniqueAlias:(Ljava/lang/String;Lsun/security/mscapi/CKeyStore$KeyEntry;)V
10: StackMap locals: java.security.cert.X509Certificate[] sun.security.mscapi.CKeyStore$KeyEntry
StackMap stack:
aload 4
invokevirtual sun.security.mscapi.CKeyStore$KeyEntry.getPrivateKey:()Lsun/security/mscapi/CKey;
ifnonnull 19
11: aload 4
aload 1
invokevirtual sun.security.mscapi.CKeyStore$KeyEntry.setAlias:(Ljava/lang/String;)V
12: aload 4
aload 3
invokevirtual sun.security.mscapi.CKeyStore$KeyEntry.setCertificateChain:([Ljava/security/cert/X509Certificate;)V
13: goto 19
StackMap locals:
StackMap stack: java.security.cert.CertificateException
14: astore 5
start local 5 15: new java.security.KeyStoreException
dup
aload 5
invokespecial java.security.KeyStoreException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 5 end local 4 end local 3 16: StackMap locals:
StackMap stack:
new java.lang.UnsupportedOperationException
dup
17: ldc "Cannot assign the certificate to the given alias."
18: invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
athrow
19: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 this Lsun/security/mscapi/CKeyStore;
0 20 1 alias Ljava/lang/String;
0 20 2 cert Ljava/security/cert/Certificate;
5 16 3 chain [Ljava/security/cert/X509Certificate;
6 16 4 entry Lsun/security/mscapi/CKeyStore$KeyEntry;
15 16 5 ce Ljava/security/cert/CertificateException;
Exception table:
from to target type
12 13 14 Class java.security.cert.CertificateException
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=5, locals=5, args_size=2
start local 0 start local 1 0: aload 1
ifnonnull 2
1: new java.security.KeyStoreException
dup
ldc "alias must not be null"
invokespecial java.security.KeyStoreException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.mscapi.CKeyStore.entries:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast sun.security.mscapi.CKeyStore$KeyEntry
astore 2
start local 2 3: aload 2
ifnull 18
4: aload 2
invokevirtual sun.security.mscapi.CKeyStore$KeyEntry.getCertificateChain:()[Ljava/security/cert/X509Certificate;
astore 3
start local 3 5: aload 3
ifnull 13
aload 3
arraylength
ifle 13
6: aload 3
iconst_0
aaload
invokevirtual java.security.cert.X509Certificate.getEncoded:()[B
astore 4
start local 4 7: aload 0
aload 0
invokevirtual sun.security.mscapi.CKeyStore.getName:()Ljava/lang/String;
aload 2
invokevirtual sun.security.mscapi.CKeyStore$KeyEntry.getAlias:()Ljava/lang/String;
aload 4
8: aload 4
arraylength
9: invokevirtual sun.security.mscapi.CKeyStore.removeCertificate:(Ljava/lang/String;Ljava/lang/String;[BI)V
end local 4 10: goto 13
StackMap locals: sun.security.mscapi.CKeyStore java.lang.String sun.security.mscapi.CKeyStore$KeyEntry java.security.cert.X509Certificate[]
StackMap stack: java.security.cert.CertificateException
11: astore 4
start local 4 12: new java.security.KeyStoreException
dup
ldc "Cannot remove entry: "
aload 4
invokespecial java.security.KeyStoreException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 4 13: StackMap locals:
StackMap stack:
aload 2
invokevirtual sun.security.mscapi.CKeyStore$KeyEntry.getPrivateKey:()Lsun/security/mscapi/CKey;
astore 4
start local 4 14: aload 4
ifnull 18
15: aload 0
16: aload 4
invokevirtual sun.security.mscapi.CKey.getHCryptProvider:()J
invokestatic sun.security.mscapi.CKey.getContainerName:(J)Ljava/lang/String;
17: invokevirtual sun.security.mscapi.CKeyStore.destroyKeyContainer:(Ljava/lang/String;)V
end local 4 end local 3 18: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Lsun/security/mscapi/CKeyStore;
0 19 1 alias Ljava/lang/String;
3 19 2 entry Lsun/security/mscapi/CKeyStore$KeyEntry;
5 18 3 certChain [Ljava/security/cert/X509Certificate;
7 10 4 encoding [B
12 13 4 e Ljava/security/cert/CertificateException;
14 18 4 privateKey Lsun/security/mscapi/CKey;
Exception table:
from to target type
6 10 11 Class java.security.cert.CertificateException
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=4, locals=2, args_size=1
start local 0 0: aload 0
getfield sun.security.mscapi.CKeyStore.entries:Ljava/util/Map;
invokeinterface java.util.Map.keySet:()Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 1
start local 1 1: new sun.security.mscapi.CKeyStore$1
dup
aload 0
aload 1
invokespecial sun.security.mscapi.CKeyStore$1.<init>:(Lsun/security/mscapi/CKeyStore;Ljava/util/Iterator;)V
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/mscapi/CKeyStore;
1 2 1 iter Ljava/util/Iterator<Ljava/lang/String;>;
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: aload 0
getfield sun.security.mscapi.CKeyStore.entries:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/mscapi/CKeyStore;
0 1 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: aload 0
getfield sun.security.mscapi.CKeyStore.entries:Ljava/util/Map;
invokeinterface java.util.Map.size:()I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/mscapi/CKeyStore;
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: aload 1
ifnonnull 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.mscapi.CKeyStore.entries:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast sun.security.mscapi.CKeyStore$KeyEntry
astore 2
start local 2 3: aload 2
ifnull 4
aload 2
invokevirtual sun.security.mscapi.CKeyStore$KeyEntry.getPrivateKey:()Lsun/security/mscapi/CKey;
ifnull 4
iconst_1
ireturn
StackMap locals: sun.security.mscapi.CKeyStore$KeyEntry
StackMap stack:
4: iconst_0
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lsun/security/mscapi/CKeyStore;
0 5 1 alias Ljava/lang/String;
3 5 2 entry Lsun/security/mscapi/CKeyStore$KeyEntry;
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: aload 1
ifnonnull 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.mscapi.CKeyStore.entries:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast sun.security.mscapi.CKeyStore$KeyEntry
astore 2
start local 2 3: aload 2
ifnull 4
aload 2
invokevirtual sun.security.mscapi.CKeyStore$KeyEntry.getPrivateKey:()Lsun/security/mscapi/CKey;
ifnonnull 4
iconst_1
ireturn
StackMap locals: sun.security.mscapi.CKeyStore$KeyEntry
StackMap stack:
4: iconst_0
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lsun/security/mscapi/CKeyStore;
0 5 1 alias Ljava/lang/String;
3 5 2 entry Lsun/security/mscapi/CKeyStore$KeyEntry;
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=5, args_size=2
start local 0 start local 1 0: aload 0
getfield sun.security.mscapi.CKeyStore.entries:Ljava/util/Map;
invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 3
goto 7
StackMap locals: sun.security.mscapi.CKeyStore java.security.cert.Certificate top java.util.Iterator
StackMap stack:
1: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.util.Map$Entry
astore 2
start local 2 2: aload 2
invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
checkcast sun.security.mscapi.CKeyStore$KeyEntry
astore 4
start local 4 3: aload 4
getfield sun.security.mscapi.CKeyStore$KeyEntry.certChain:[Ljava/security/cert/X509Certificate;
ifnull 7
4: aload 4
getfield sun.security.mscapi.CKeyStore$KeyEntry.certChain:[Ljava/security/cert/X509Certificate;
arraylength
ifle 7
5: aload 4
getfield sun.security.mscapi.CKeyStore$KeyEntry.certChain:[Ljava/security/cert/X509Certificate;
iconst_0
aaload
aload 1
invokevirtual java.security.cert.X509Certificate.equals:(Ljava/lang/Object;)Z
ifeq 7
6: aload 4
invokevirtual sun.security.mscapi.CKeyStore$KeyEntry.getAlias:()Ljava/lang/String;
areturn
end local 4 end local 2 7: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 1
8: aconst_null
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lsun/security/mscapi/CKeyStore;
0 9 1 cert Ljava/security/cert/Certificate;
2 7 2 mapEntry Ljava/util/Map$Entry<Ljava/lang/String;Lsun/security/mscapi/CKeyStore$KeyEntry;>;
3 7 4 entry Lsun/security/mscapi/CKeyStore$KeyEntry;
MethodParameters:
Name Flags
cert
public void engineStore(java.io.OutputStream, char[]);
descriptor: (Ljava/io/OutputStream;[C)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 1
ifnull 2
aload 0
getfield sun.security.mscapi.CKeyStore.keyStoreCompatibilityMode:Z
ifne 2
1: new java.io.IOException
dup
ldc "Keystore output stream must be null"
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 2
ifnull 4
aload 0
getfield sun.security.mscapi.CKeyStore.keyStoreCompatibilityMode:Z
ifne 4
3: new java.io.IOException
dup
ldc "Keystore password must be null"
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lsun/security/mscapi/CKeyStore;
0 5 1 stream Ljava/io/OutputStream;
0 5 2 password [C
Exceptions:
throws java.io.IOException, java.security.NoSuchAlgorithmException, java.security.cert.CertificateException
MethodParameters:
Name Flags
stream
password
public void engineLoad(java.io.InputStream, char[]);
descriptor: (Ljava/io/InputStream;[C)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 1
ifnull 2
aload 0
getfield sun.security.mscapi.CKeyStore.keyStoreCompatibilityMode:Z
ifne 2
1: new java.io.IOException
dup
ldc "Keystore input stream must be null"
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 2
ifnull 4
aload 0
getfield sun.security.mscapi.CKeyStore.keyStoreCompatibilityMode:Z
ifne 4
3: new java.io.IOException
dup
ldc "Keystore password must be null"
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
astore 3
start local 3 5: aload 3
ifnull 9
6: aload 3
new java.security.SecurityPermission
dup
7: ldc "authProvider.SunMSCAPI"
invokespecial java.security.SecurityPermission.<init>:(Ljava/lang/String;)V
8: invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;)V
9: StackMap locals: java.lang.SecurityManager
StackMap stack:
aload 0
getfield sun.security.mscapi.CKeyStore.entries:Ljava/util/Map;
invokeinterface java.util.Map.clear:()V
10: aload 0
aload 0
invokevirtual sun.security.mscapi.CKeyStore.getName:()Ljava/lang/String;
invokevirtual sun.security.mscapi.CKeyStore.loadKeysOrCertificateChains:(Ljava/lang/String;)V
11: goto 14
StackMap locals:
StackMap stack: java.security.KeyStoreException
12: astore 4
start local 4 13: new java.io.IOException
dup
aload 4
invokespecial java.io.IOException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 4 14: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lsun/security/mscapi/CKeyStore;
0 15 1 stream Ljava/io/InputStream;
0 15 2 password [C
5 15 3 sm Ljava/lang/SecurityManager;
13 14 4 e Ljava/security/KeyStoreException;
Exception table:
from to target type
10 11 12 Class java.security.KeyStoreException
Exceptions:
throws java.io.IOException, java.security.NoSuchAlgorithmException, java.security.cert.CertificateException
MethodParameters:
Name Flags
stream
password
private void storeWithUniqueAlias(java.lang.String, sun.security.mscapi.CKeyStore$KeyEntry);
descriptor: (Ljava/lang/String;Lsun/security/mscapi/CKeyStore$KeyEntry;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 1
astore 3
start local 3 1: iconst_1
istore 4
start local 4 2: StackMap locals: java.lang.String int
StackMap stack:
aload 0
getfield sun.security.mscapi.CKeyStore.entries:Ljava/util/Map;
aload 3
aload 2
invokeinterface java.util.Map.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
ifnonnull 4
3: goto 6
4: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
aload 1
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " ("
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 4
iinc 4 1
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ")"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 3
5: goto 2
6: 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 7 0 this Lsun/security/mscapi/CKeyStore;
0 7 1 alias Ljava/lang/String;
0 7 2 entry Lsun/security/mscapi/CKeyStore$KeyEntry;
1 7 3 uniqAlias Ljava/lang/String;
2 7 4 uniqNum I
MethodParameters:
Name Flags
alias
entry
private void generateCertificateChain(java.lang.String, java.util.Collection<? extends java.security.cert.Certificate>);
descriptor: (Ljava/lang/String;Ljava/util/Collection;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=8, locals=6, args_size=3
start local 0 start local 1 start local 2 0: aload 2
invokeinterface java.util.Collection.size:()I
anewarray java.security.cert.X509Certificate
1: astore 3
start local 3 2: iconst_0
istore 4
start local 4 3: aload 2
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
4: astore 5
start local 5 5: goto 8
6: StackMap locals: java.security.cert.X509Certificate[] int java.util.Iterator
StackMap stack:
aload 3
iload 4
aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.security.cert.X509Certificate
aastore
7: iinc 4 1
StackMap locals:
StackMap stack:
8: aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 6
end local 5 9: aload 0
aload 1
10: new sun.security.mscapi.CKeyStore$KeyEntry
dup
aload 0
aload 1
aconst_null
aload 3
invokespecial sun.security.mscapi.CKeyStore$KeyEntry.<init>:(Lsun/security/mscapi/CKeyStore;Ljava/lang/String;Lsun/security/mscapi/CKey;[Ljava/security/cert/X509Certificate;)V
11: invokevirtual sun.security.mscapi.CKeyStore.storeWithUniqueAlias:(Ljava/lang/String;Lsun/security/mscapi/CKeyStore$KeyEntry;)V
end local 4 end local 3 12: goto 14
StackMap locals: sun.security.mscapi.CKeyStore java.lang.String java.util.Collection
StackMap stack: java.lang.Throwable
13: pop
14: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lsun/security/mscapi/CKeyStore;
0 15 1 alias Ljava/lang/String;
0 15 2 certCollection Ljava/util/Collection<+Ljava/security/cert/Certificate;>;
2 12 3 certChain [Ljava/security/cert/X509Certificate;
3 12 4 i I
5 9 5 iter Ljava/util/Iterator<+Ljava/security/cert/Certificate;>;
Exception table:
from to target type
0 12 13 Class java.lang.Throwable
Signature: (Ljava/lang/String;Ljava/util/Collection<+Ljava/security/cert/Certificate;>;)V
MethodParameters:
Name Flags
alias
certCollection
private void generateKeyAndCertificateChain(boolean, java.lang.String, long, long, int, java.util.Collection<? extends java.security.cert.Certificate>);
descriptor: (ZLjava/lang/String;JJILjava/util/Collection;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=12, locals=12, args_size=7
start local 0 start local 1 start local 2 start local 3 start local 5 start local 7 start local 8 0: aload 8
invokeinterface java.util.Collection.size:()I
anewarray java.security.cert.X509Certificate
1: astore 9
start local 9 2: iconst_0
istore 10
start local 10 3: aload 8
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
4: astore 11
start local 11 5: goto 8
6: StackMap locals: java.security.cert.X509Certificate[] int java.util.Iterator
StackMap stack:
aload 9
iload 10
aload 11
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.security.cert.X509Certificate
aastore
7: iinc 10 1
StackMap locals:
StackMap stack:
8: aload 11
invokeinterface java.util.Iterator.hasNext:()Z
ifne 6
end local 11 9: aload 0
aload 2
10: new sun.security.mscapi.CKeyStore$KeyEntry
dup
aload 0
aload 2
11: iload 1
ifeq 12
ldc "RSA"
goto 13
StackMap locals: sun.security.mscapi.CKeyStore int java.lang.String long long int java.util.Collection java.security.cert.X509Certificate[] int
StackMap stack: sun.security.mscapi.CKeyStore java.lang.String new 10 new 10 sun.security.mscapi.CKeyStore java.lang.String
12: ldc "EC"
StackMap locals: sun.security.mscapi.CKeyStore int java.lang.String long long int java.util.Collection java.security.cert.X509Certificate[] int
StackMap stack: sun.security.mscapi.CKeyStore java.lang.String new 10 new 10 sun.security.mscapi.CKeyStore java.lang.String java.lang.String
13: lload 3
lload 5
iload 7
invokestatic sun.security.mscapi.CPrivateKey.of:(Ljava/lang/String;JJI)Lsun/security/mscapi/CPrivateKey;
14: aload 9
invokespecial sun.security.mscapi.CKeyStore$KeyEntry.<init>:(Lsun/security/mscapi/CKeyStore;Ljava/lang/String;Lsun/security/mscapi/CKey;[Ljava/security/cert/X509Certificate;)V
15: invokevirtual sun.security.mscapi.CKeyStore.storeWithUniqueAlias:(Ljava/lang/String;Lsun/security/mscapi/CKeyStore$KeyEntry;)V
end local 10 end local 9 16: goto 18
StackMap locals: sun.security.mscapi.CKeyStore int java.lang.String long long int java.util.Collection
StackMap stack: java.lang.Throwable
17: pop
18: StackMap locals:
StackMap stack:
return
end local 8 end local 7 end local 5 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Lsun/security/mscapi/CKeyStore;
0 19 1 isRSA Z
0 19 2 alias Ljava/lang/String;
0 19 3 hCryptProv J
0 19 5 hCryptKey J
0 19 7 keyLength I
0 19 8 certCollection Ljava/util/Collection<+Ljava/security/cert/Certificate;>;
2 16 9 certChain [Ljava/security/cert/X509Certificate;
3 16 10 i I
5 9 11 iter Ljava/util/Iterator<+Ljava/security/cert/Certificate;>;
Exception table:
from to target type
0 16 17 Class java.lang.Throwable
Signature: (ZLjava/lang/String;JJILjava/util/Collection<+Ljava/security/cert/Certificate;>;)V
MethodParameters:
Name Flags
isRSA
alias
hCryptProv
hCryptKey
keyLength
certCollection
private void generateCertificate(byte[], java.util.Collection<java.security.cert.Certificate>);
descriptor: ([BLjava/util/Collection;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=5, args_size=3
start local 0 start local 1 start local 2 0: new java.io.ByteArrayInputStream
dup
aload 1
invokespecial java.io.ByteArrayInputStream.<init>:([B)V
astore 3
start local 3 1: aload 0
getfield sun.security.mscapi.CKeyStore.certificateFactory:Ljava/security/cert/CertificateFactory;
ifnonnull 3
2: aload 0
ldc "X.509"
ldc "SUN"
invokestatic java.security.cert.CertificateFactory.getInstance:(Ljava/lang/String;Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
putfield sun.security.mscapi.CKeyStore.certificateFactory:Ljava/security/cert/CertificateFactory;
3: StackMap locals: java.io.ByteArrayInputStream
StackMap stack:
aload 0
getfield sun.security.mscapi.CKeyStore.certificateFactory:Ljava/security/cert/CertificateFactory;
aload 3
invokevirtual java.security.cert.CertificateFactory.generateCertificates:(Ljava/io/InputStream;)Ljava/util/Collection;
4: astore 4
start local 4 5: aload 2
aload 4
invokeinterface java.util.Collection.addAll:(Ljava/util/Collection;)Z
pop
end local 4 end local 3 6: goto 9
StackMap locals: sun.security.mscapi.CKeyStore byte[] java.util.Collection
StackMap stack: java.security.cert.CertificateException
7: pop
goto 9
8: StackMap locals:
StackMap stack: java.lang.Throwable
pop
9: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lsun/security/mscapi/CKeyStore;
0 10 1 data [B
0 10 2 certCollection Ljava/util/Collection<Ljava/security/cert/Certificate;>;
1 6 3 bis Ljava/io/ByteArrayInputStream;
5 6 4 c Ljava/util/Collection<+Ljava/security/cert/Certificate;>;
Exception table:
from to target type
0 6 7 Class java.security.cert.CertificateException
0 6 8 Class java.lang.Throwable
Signature: ([BLjava/util/Collection<Ljava/security/cert/Certificate;>;)V
MethodParameters:
Name Flags
data
certCollection
private java.lang.String getName();
descriptor: ()Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.mscapi.CKeyStore.storeName:Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/mscapi/CKeyStore;
private native void loadKeysOrCertificateChains(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
Exceptions:
throws java.security.KeyStoreException
MethodParameters:
Name Flags
name
private native void storeCertificate(java.lang.String, java.lang.String, byte[], int, long, long);
descriptor: (Ljava/lang/String;Ljava/lang/String;[BIJJ)V
flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
Exceptions:
throws java.security.cert.CertificateException, java.security.KeyStoreException
MethodParameters:
Name Flags
name
alias
encoding
encodingLength
hCryptProvider
hCryptKey
private native void removeCertificate(java.lang.String, java.lang.String, byte[], int);
descriptor: (Ljava/lang/String;Ljava/lang/String;[BI)V
flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
Exceptions:
throws java.security.cert.CertificateException, java.security.KeyStoreException
MethodParameters:
Name Flags
name
alias
encoding
encodingLength
private native void destroyKeyContainer(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
Exceptions:
throws java.security.KeyStoreException
MethodParameters:
Name Flags
keyContainerName
private native byte[] generateRSAPrivateKeyBlob(int, byte[], byte[], byte[], byte[], byte[], byte[], byte[], byte[]);
descriptor: (I[B[B[B[B[B[B[B[B)[B
flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
Exceptions:
throws java.security.InvalidKeyException
MethodParameters:
Name Flags
keyBitLength
modulus
publicExponent
privateExponent
primeP
primeQ
exponentP
exponentQ
crtCoefficient
private native sun.security.mscapi.CPrivateKey storePrivateKey(java.lang.String, byte[], java.lang.String, int);
descriptor: (Ljava/lang/String;[BLjava/lang/String;I)Lsun/security/mscapi/CPrivateKey;
flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
Exceptions:
throws java.security.KeyStoreException
MethodParameters:
Name Flags
alg
keyBlob
keyContainerName
keySize
private static java.lang.String lambda$0();
descriptor: ()Ljava/lang/String;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=1, locals=0, args_size=0
0: ldc "sun.security.mscapi.keyStoreCompatibilityMode"
invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
areturn
LocalVariableTable:
Start End Slot Name Signature
}
SourceFile: "CKeyStore.java"
NestMembers:
sun.security.mscapi.CKeyStore$1 sun.security.mscapi.CKeyStore$KeyEntry sun.security.mscapi.CKeyStore$MY sun.security.mscapi.CKeyStore$ROOT
InnerClasses:
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
public abstract Entry = java.util.Map$Entry of java.util.Map
sun.security.mscapi.CKeyStore$1
KeyEntry = sun.security.mscapi.CKeyStore$KeyEntry of sun.security.mscapi.CKeyStore
public final MY = sun.security.mscapi.CKeyStore$MY of sun.security.mscapi.CKeyStore
public final ROOT = sun.security.mscapi.CKeyStore$ROOT of sun.security.mscapi.CKeyStore