PKCS12KeyStoreSpi.smali
.class public Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;
.super Ljava/security/KeyStoreSpi;
.source "PKCS12KeyStoreSpi.java"
# interfaces
.implements Lorg/spongycastle/asn1/pkcs/PKCSObjectIdentifiers;
.implements Lorg/spongycastle/asn1/x509/X509ObjectIdentifiers;
.implements Lorg/spongycastle/jce/interfaces/BCKeyStore;
# static fields
.field static final CERTIFICATE:I = 0x1
.field static final KEY:I = 0x2
.field static final KEY_PRIVATE:I = 0x0
.field static final KEY_PUBLIC:I = 0x1
.field static final KEY_SECRET:I = 0x2
.field private static final MIN_ITERATIONS:I = 0x400
.field static final NULL:I = 0x0
.field private static final SALT_SIZE:I = 0x14
.field static final SEALED:I = 0x4
.field static final SECRET:I = 0x3
.field private static final keySizeProvider:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$DefaultSecretKeyProvider;
# instance fields
.field private certAlgorithm:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
.field private certFact:Ljava/security/cert/CertificateFactory;
.field private certs:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
.field private chainCerts:Ljava/util/Hashtable;
.field private final helper:Lorg/spongycastle/jcajce/util/JcaJceHelper;
.field private keyAlgorithm:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
.field private keyCerts:Ljava/util/Hashtable;
.field private keys:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
.field private localIds:Ljava/util/Hashtable;
.field protected random:Ljava/security/SecureRandom;
# direct methods
.method static constructor <clinit>()V
.registers 1
.prologue
.line 116
new-instance v0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$DefaultSecretKeyProvider;
invoke-direct {v0}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$DefaultSecretKeyProvider;-><init>()V
sput-object v0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keySizeProvider:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$DefaultSecretKeyProvider;
return-void
.end method
.method public constructor <init>(Ljava/security/Provider;Lorg/spongycastle/asn1/ASN1ObjectIdentifier;Lorg/spongycastle/asn1/ASN1ObjectIdentifier;)V
.registers 8
.prologue
const/4 v1, 0x0
.line 191
invoke-direct {p0}, Ljava/security/KeyStoreSpi;-><init>()V
.line 111
new-instance v0, Lorg/spongycastle/jcajce/util/BCJcaJceHelper;
invoke-direct {v0}, Lorg/spongycastle/jcajce/util/BCJcaJceHelper;-><init>()V
iput-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->helper:Lorg/spongycastle/jcajce/util/JcaJceHelper;
.line 118
new-instance v0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-direct {v0, v1}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;-><init>(Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$1;)V
iput-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keys:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
.line 119
new-instance v0, Ljava/util/Hashtable;
invoke-direct {v0}, Ljava/util/Hashtable;-><init>()V
iput-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->localIds:Ljava/util/Hashtable;
.line 120
new-instance v0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-direct {v0, v1}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;-><init>(Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$1;)V
iput-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->certs:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
.line 121
new-instance v0, Ljava/util/Hashtable;
invoke-direct {v0}, Ljava/util/Hashtable;-><init>()V
iput-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->chainCerts:Ljava/util/Hashtable;
.line 122
new-instance v0, Ljava/util/Hashtable;
invoke-direct {v0}, Ljava/util/Hashtable;-><init>()V
iput-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keyCerts:Ljava/util/Hashtable;
.line 140
new-instance v0, Ljava/security/SecureRandom;
invoke-direct {v0}, Ljava/security/SecureRandom;-><init>()V
iput-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->random:Ljava/security/SecureRandom;
.line 192
iput-object p2, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keyAlgorithm:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
.line 193
iput-object p3, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->certAlgorithm:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
.line 197
if-eqz p1, :cond_44
.line 199
:try_start_3b
const-string v0, "X.509"
invoke-static {v0, p1}, Ljava/security/cert/CertificateFactory;->getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/cert/CertificateFactory;
move-result-object v0
iput-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->certFact:Ljava/security/cert/CertificateFactory;
.line 209
:goto_43
return-void
.line 203
:cond_44
const-string v0, "X.509"
invoke-static {v0}, Ljava/security/cert/CertificateFactory;->getInstance(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
move-result-object v0
iput-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->certFact:Ljava/security/cert/CertificateFactory;
:try_end_4c
.catch Ljava/lang/Exception; {:try_start_3b .. :try_end_4c} :catch_4d
goto :goto_43
.line 206
:catch_4d
move-exception v0
.line 208
new-instance v1, Ljava/lang/IllegalArgumentException;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "can\'t create cert factory - "
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0}, Ljava/lang/Exception;->toString()Ljava/lang/String;
move-result-object v0
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {v1, v0}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v1
.end method
.method static synthetic access$100(Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;Ljava/security/PublicKey;)Lorg/spongycastle/asn1/x509/SubjectKeyIdentifier;
.registers 3
.prologue
.line 107
invoke-direct {p0, p1}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->createSubjectKeyId(Ljava/security/PublicKey;)Lorg/spongycastle/asn1/x509/SubjectKeyIdentifier;
move-result-object v0
return-object v0
.end method
.method private calculatePbeMac(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;[BI[CZ[B)[B
.registers 10
.prologue
.line 1695
new-instance v0, Ljavax/crypto/spec/PBEParameterSpec;
invoke-direct {v0, p2, p3}, Ljavax/crypto/spec/PBEParameterSpec;-><init>([BI)V
.line 1697
iget-object v1, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->helper:Lorg/spongycastle/jcajce/util/JcaJceHelper;
invoke-virtual {p1}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v2
invoke-interface {v1, v2}, Lorg/spongycastle/jcajce/util/JcaJceHelper;->createMac(Ljava/lang/String;)Ljavax/crypto/Mac;
move-result-object v1
.line 1698
new-instance v2, Lorg/spongycastle/jcajce/PKCS12Key;
invoke-direct {v2, p4, p5}, Lorg/spongycastle/jcajce/PKCS12Key;-><init>([CZ)V
invoke-virtual {v1, v2, v0}, Ljavax/crypto/Mac;->init(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
.line 1699
invoke-virtual {v1, p6}, Ljavax/crypto/Mac;->update([B)V
.line 1701
invoke-virtual {v1}, Ljavax/crypto/Mac;->doFinal()[B
move-result-object v0
return-object v0
.end method
.method private createCipher(I[CLorg/spongycastle/asn1/x509/AlgorithmIdentifier;)Ljavax/crypto/Cipher;
.registers 12
.prologue
.line 729
invoke-virtual {p3}, Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;->getParameters()Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v0
invoke-static {v0}, Lorg/spongycastle/asn1/pkcs/PBES2Parameters;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/pkcs/PBES2Parameters;
move-result-object v6
.line 730
invoke-virtual {v6}, Lorg/spongycastle/asn1/pkcs/PBES2Parameters;->getKeyDerivationFunc()Lorg/spongycastle/asn1/pkcs/KeyDerivationFunc;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/asn1/pkcs/KeyDerivationFunc;->getParameters()Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v0
invoke-static {v0}, Lorg/spongycastle/asn1/pkcs/PBKDF2Params;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/pkcs/PBKDF2Params;
move-result-object v1
.line 731
invoke-virtual {v6}, Lorg/spongycastle/asn1/pkcs/PBES2Parameters;->getEncryptionScheme()Lorg/spongycastle/asn1/pkcs/EncryptionScheme;
move-result-object v0
invoke-static {v0}, Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;
move-result-object v4
.line 733
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->helper:Lorg/spongycastle/jcajce/util/JcaJceHelper;
invoke-virtual {v6}, Lorg/spongycastle/asn1/pkcs/PBES2Parameters;->getKeyDerivationFunc()Lorg/spongycastle/asn1/pkcs/KeyDerivationFunc;
move-result-object v2
invoke-virtual {v2}, Lorg/spongycastle/asn1/pkcs/KeyDerivationFunc;->getAlgorithm()Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v2
invoke-virtual {v2}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v2
invoke-interface {v0, v2}, Lorg/spongycastle/jcajce/util/JcaJceHelper;->createSecretKeyFactory(Ljava/lang/String;)Ljavax/crypto/SecretKeyFactory;
move-result-object v7
.line 736
invoke-virtual {v1}, Lorg/spongycastle/asn1/pkcs/PBKDF2Params;->isDefaultPrf()Z
move-result v0
if-eqz v0, :cond_83
.line 738
new-instance v0, Ljavax/crypto/spec/PBEKeySpec;
invoke-virtual {v1}, Lorg/spongycastle/asn1/pkcs/PBKDF2Params;->getSalt()[B
move-result-object v2
invoke-virtual {v1}, Lorg/spongycastle/asn1/pkcs/PBKDF2Params;->getIterationCount()Ljava/math/BigInteger;
move-result-object v1
invoke-virtual {v1}, Ljava/math/BigInteger;->intValue()I
move-result v1
sget-object v3, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keySizeProvider:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$DefaultSecretKeyProvider;
invoke-virtual {v3, v4}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$DefaultSecretKeyProvider;->getKeySize(Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;)I
move-result v3
invoke-direct {v0, p2, v2, v1, v3}, Ljavax/crypto/spec/PBEKeySpec;-><init>([C[BII)V
invoke-virtual {v7, v0}, Ljavax/crypto/SecretKeyFactory;->generateSecret(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;
move-result-object v0
.line 745
:goto_4f
invoke-virtual {v6}, Lorg/spongycastle/asn1/pkcs/PBES2Parameters;->getEncryptionScheme()Lorg/spongycastle/asn1/pkcs/EncryptionScheme;
move-result-object v1
invoke-virtual {v1}, Lorg/spongycastle/asn1/pkcs/EncryptionScheme;->getAlgorithm()Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v1
invoke-virtual {v1}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v1
invoke-static {v1}, Ljavax/crypto/Cipher;->getInstance(Ljava/lang/String;)Ljavax/crypto/Cipher;
move-result-object v1
.line 747
invoke-virtual {v6}, Lorg/spongycastle/asn1/pkcs/PBES2Parameters;->getEncryptionScheme()Lorg/spongycastle/asn1/pkcs/EncryptionScheme;
move-result-object v2
invoke-static {v2}, Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;
.line 749
invoke-virtual {v6}, Lorg/spongycastle/asn1/pkcs/PBES2Parameters;->getEncryptionScheme()Lorg/spongycastle/asn1/pkcs/EncryptionScheme;
move-result-object v2
invoke-virtual {v2}, Lorg/spongycastle/asn1/pkcs/EncryptionScheme;->getParameters()Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v2
.line 750
instance-of v3, v2, Lorg/spongycastle/asn1/ASN1OctetString;
if-eqz v3, :cond_a4
.line 752
new-instance v3, Ljavax/crypto/spec/IvParameterSpec;
invoke-static {v2}, Lorg/spongycastle/asn1/ASN1OctetString;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/ASN1OctetString;
move-result-object v2
invoke-virtual {v2}, Lorg/spongycastle/asn1/ASN1OctetString;->getOctets()[B
move-result-object v2
invoke-direct {v3, v2}, Ljavax/crypto/spec/IvParameterSpec;-><init>([B)V
invoke-virtual {v1, p1, v0, v3}, Ljavax/crypto/Cipher;->init(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
.line 761
:goto_82
return-object v1
.line 742
:cond_83
new-instance v0, Lorg/spongycastle/jcajce/spec/PBKDF2KeySpec;
invoke-virtual {v1}, Lorg/spongycastle/asn1/pkcs/PBKDF2Params;->getSalt()[B
move-result-object v2
invoke-virtual {v1}, Lorg/spongycastle/asn1/pkcs/PBKDF2Params;->getIterationCount()Ljava/math/BigInteger;
move-result-object v3
invoke-virtual {v3}, Ljava/math/BigInteger;->intValue()I
move-result v3
sget-object v5, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keySizeProvider:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$DefaultSecretKeyProvider;
invoke-virtual {v5, v4}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$DefaultSecretKeyProvider;->getKeySize(Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;)I
move-result v4
invoke-virtual {v1}, Lorg/spongycastle/asn1/pkcs/PBKDF2Params;->getPrf()Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;
move-result-object v5
move-object v1, p2
invoke-direct/range {v0 .. v5}, Lorg/spongycastle/jcajce/spec/PBKDF2KeySpec;-><init>([C[BIILorg/spongycastle/asn1/x509/AlgorithmIdentifier;)V
invoke-virtual {v7, v0}, Ljavax/crypto/SecretKeyFactory;->generateSecret(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;
move-result-object v0
goto :goto_4f
.line 757
:cond_a4
invoke-static {v2}, Lorg/spongycastle/asn1/cryptopro/GOST28147Parameters;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/cryptopro/GOST28147Parameters;
move-result-object v2
.line 759
new-instance v3, Lorg/spongycastle/jcajce/spec/GOST28147ParameterSpec;
invoke-virtual {v2}, Lorg/spongycastle/asn1/cryptopro/GOST28147Parameters;->getEncryptionParamSet()Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v4
invoke-virtual {v2}, Lorg/spongycastle/asn1/cryptopro/GOST28147Parameters;->getIV()[B
move-result-object v2
invoke-direct {v3, v4, v2}, Lorg/spongycastle/jcajce/spec/GOST28147ParameterSpec;-><init>(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;[B)V
invoke-virtual {v1, p1, v0, v3}, Ljavax/crypto/Cipher;->init(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
goto :goto_82
.end method
.method private createSubjectKeyId(Ljava/security/PublicKey;)Lorg/spongycastle/asn1/x509/SubjectKeyIdentifier;
.registers 4
.prologue
.line 217
:try_start_0
invoke-interface {p1}, Ljava/security/PublicKey;->getEncoded()[B
move-result-object v0
invoke-static {v0}, Lorg/spongycastle/asn1/x509/SubjectPublicKeyInfo;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/x509/SubjectPublicKeyInfo;
move-result-object v0
.line 219
new-instance v1, Lorg/spongycastle/asn1/x509/SubjectKeyIdentifier;
invoke-static {v0}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->getDigest(Lorg/spongycastle/asn1/x509/SubjectPublicKeyInfo;)[B
move-result-object v0
invoke-direct {v1, v0}, Lorg/spongycastle/asn1/x509/SubjectKeyIdentifier;-><init>([B)V
:try_end_11
.catch Ljava/lang/Exception; {:try_start_0 .. :try_end_11} :catch_12
return-object v1
.line 223
:catch_12
move-exception v0
new-instance v0, Ljava/lang/RuntimeException;
const-string v1, "error creating key"
invoke-direct {v0, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method private doStore(Ljava/io/OutputStream;[CZ)V
.registers 19
.prologue
.line 1266
if-nez p2, :cond_a
.line 1268
new-instance v1, Ljava/lang/NullPointerException;
const-string v2, "No password supplied for PKCS#12 KeyStore."
invoke-direct {v1, v2}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
throw v1
.line 1274
:cond_a
new-instance v5, Lorg/spongycastle/asn1/ASN1EncodableVector;
invoke-direct {v5}, Lorg/spongycastle/asn1/ASN1EncodableVector;-><init>()V
.line 1276
iget-object v1, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keys:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v1}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->keys()Ljava/util/Enumeration;
move-result-object v6
.line 1278
:goto_15
invoke-interface {v6}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v1
if-eqz v1, :cond_124
.line 1280
const/16 v1, 0x14
new-array v3, v1, [B
.line 1282
iget-object v1, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->random:Ljava/security/SecureRandom;
invoke-virtual {v1, v3}, Ljava/security/SecureRandom;->nextBytes([B)V
.line 1284
invoke-interface {v6}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/lang/String;
.line 1285
iget-object v2, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keys:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v2, v1}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->get(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v2
check-cast v2, Ljava/security/PrivateKey;
.line 1286
new-instance v4, Lorg/spongycastle/asn1/pkcs/PKCS12PBEParams;
const/16 v7, 0x400
invoke-direct {v4, v3, v7}, Lorg/spongycastle/asn1/pkcs/PKCS12PBEParams;-><init>([BI)V
.line 1287
iget-object v3, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keyAlgorithm:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v3}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v3
move-object/from16 v0, p2
invoke-virtual {p0, v3, v2, v4, v0}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->wrapKey(Ljava/lang/String;Ljava/security/Key;Lorg/spongycastle/asn1/pkcs/PKCS12PBEParams;[C)[B
move-result-object v3
.line 1288
new-instance v7, Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;
iget-object v8, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keyAlgorithm:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v4}, Lorg/spongycastle/asn1/pkcs/PKCS12PBEParams;->toASN1Primitive()Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v4
invoke-direct {v7, v8, v4}, Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;-><init>(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1289
new-instance v8, Lorg/spongycastle/asn1/pkcs/EncryptedPrivateKeyInfo;
invoke-direct {v8, v7, v3}, Lorg/spongycastle/asn1/pkcs/EncryptedPrivateKeyInfo;-><init>(Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;[B)V
.line 1290
const/4 v4, 0x0
.line 1291
new-instance v7, Lorg/spongycastle/asn1/ASN1EncodableVector;
invoke-direct {v7}, Lorg/spongycastle/asn1/ASN1EncodableVector;-><init>()V
.line 1293
instance-of v3, v2, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;
if-eqz v3, :cond_c7
.line 1295
check-cast v2, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;
.line 1299
sget-object v3, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->pkcs_9_at_friendlyName:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-interface {v2, v3}, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;->getBagAttribute(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v3
check-cast v3, Lorg/spongycastle/asn1/DERBMPString;
.line 1300
if-eqz v3, :cond_75
invoke-virtual {v3}, Lorg/spongycastle/asn1/DERBMPString;->getString()Ljava/lang/String;
move-result-object v3
invoke-virtual {v3, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v3
if-nez v3, :cond_7f
.line 1302
:cond_75
sget-object v3, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->pkcs_9_at_friendlyName:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
new-instance v9, Lorg/spongycastle/asn1/DERBMPString;
invoke-direct {v9, v1}, Lorg/spongycastle/asn1/DERBMPString;-><init>(Ljava/lang/String;)V
invoke-interface {v2, v3, v9}, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;->setBagAttribute(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1308
:cond_7f
sget-object v3, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->pkcs_9_at_localKeyId:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-interface {v2, v3}, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;->getBagAttribute(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v3
if-nez v3, :cond_98
.line 1310
invoke-virtual {p0, v1}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->engineGetCertificate(Ljava/lang/String;)Ljava/security/cert/Certificate;
move-result-object v3
.line 1312
sget-object v9, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->pkcs_9_at_localKeyId:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v3}, Ljava/security/cert/Certificate;->getPublicKey()Ljava/security/PublicKey;
move-result-object v3
invoke-direct {p0, v3}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->createSubjectKeyId(Ljava/security/PublicKey;)Lorg/spongycastle/asn1/x509/SubjectKeyIdentifier;
move-result-object v3
invoke-interface {v2, v9, v3}, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;->setBagAttribute(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1315
:cond_98
invoke-interface {v2}, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;->getBagAttributeKeys()Ljava/util/Enumeration;
move-result-object v9
move v3, v4
.line 1317
:goto_9d
invoke-interface {v9}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v4
if-eqz v4, :cond_c8
.line 1319
invoke-interface {v9}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v3
check-cast v3, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
.line 1320
new-instance v4, Lorg/spongycastle/asn1/ASN1EncodableVector;
invoke-direct {v4}, Lorg/spongycastle/asn1/ASN1EncodableVector;-><init>()V
.line 1322
invoke-virtual {v4, v3}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1323
new-instance v10, Lorg/spongycastle/asn1/DERSet;
invoke-interface {v2, v3}, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;->getBagAttribute(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v3
invoke-direct {v10, v3}, Lorg/spongycastle/asn1/DERSet;-><init>(Lorg/spongycastle/asn1/ASN1Encodable;)V
invoke-virtual {v4, v10}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1325
const/4 v3, 0x1
.line 1327
new-instance v10, Lorg/spongycastle/asn1/DERSequence;
invoke-direct {v10, v4}, Lorg/spongycastle/asn1/DERSequence;-><init>(Lorg/spongycastle/asn1/ASN1EncodableVector;)V
invoke-virtual {v7, v10}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
goto :goto_9d
:cond_c7
move v3, v4
.line 1331
:cond_c8
if-nez v3, :cond_10f
.line 1336
new-instance v2, Lorg/spongycastle/asn1/ASN1EncodableVector;
invoke-direct {v2}, Lorg/spongycastle/asn1/ASN1EncodableVector;-><init>()V
.line 1337
invoke-virtual {p0, v1}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->engineGetCertificate(Ljava/lang/String;)Ljava/security/cert/Certificate;
move-result-object v3
.line 1339
sget-object v4, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->pkcs_9_at_localKeyId:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v2, v4}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1340
new-instance v4, Lorg/spongycastle/asn1/DERSet;
invoke-virtual {v3}, Ljava/security/cert/Certificate;->getPublicKey()Ljava/security/PublicKey;
move-result-object v3
invoke-direct {p0, v3}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->createSubjectKeyId(Ljava/security/PublicKey;)Lorg/spongycastle/asn1/x509/SubjectKeyIdentifier;
move-result-object v3
invoke-direct {v4, v3}, Lorg/spongycastle/asn1/DERSet;-><init>(Lorg/spongycastle/asn1/ASN1Encodable;)V
invoke-virtual {v2, v4}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1342
new-instance v3, Lorg/spongycastle/asn1/DERSequence;
invoke-direct {v3, v2}, Lorg/spongycastle/asn1/DERSequence;-><init>(Lorg/spongycastle/asn1/ASN1EncodableVector;)V
invoke-virtual {v7, v3}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1344
new-instance v2, Lorg/spongycastle/asn1/ASN1EncodableVector;
invoke-direct {v2}, Lorg/spongycastle/asn1/ASN1EncodableVector;-><init>()V
.line 1346
sget-object v3, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->pkcs_9_at_friendlyName:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v2, v3}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1347
new-instance v3, Lorg/spongycastle/asn1/DERSet;
new-instance v4, Lorg/spongycastle/asn1/DERBMPString;
invoke-direct {v4, v1}, Lorg/spongycastle/asn1/DERBMPString;-><init>(Ljava/lang/String;)V
invoke-direct {v3, v4}, Lorg/spongycastle/asn1/DERSet;-><init>(Lorg/spongycastle/asn1/ASN1Encodable;)V
invoke-virtual {v2, v3}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1349
new-instance v1, Lorg/spongycastle/asn1/DERSequence;
invoke-direct {v1, v2}, Lorg/spongycastle/asn1/DERSequence;-><init>(Lorg/spongycastle/asn1/ASN1EncodableVector;)V
invoke-virtual {v7, v1}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1352
:cond_10f
new-instance v1, Lorg/spongycastle/asn1/pkcs/SafeBag;
sget-object v2, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->pkcs8ShroudedKeyBag:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v8}, Lorg/spongycastle/asn1/pkcs/EncryptedPrivateKeyInfo;->toASN1Primitive()Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v3
new-instance v4, Lorg/spongycastle/asn1/DERSet;
invoke-direct {v4, v7}, Lorg/spongycastle/asn1/DERSet;-><init>(Lorg/spongycastle/asn1/ASN1EncodableVector;)V
invoke-direct {v1, v2, v3, v4}, Lorg/spongycastle/asn1/pkcs/SafeBag;-><init>(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;Lorg/spongycastle/asn1/ASN1Encodable;Lorg/spongycastle/asn1/ASN1Set;)V
.line 1353
invoke-virtual {v5, v1}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
goto/16 :goto_15
.line 1356
:cond_124
new-instance v1, Lorg/spongycastle/asn1/DERSequence;
invoke-direct {v1, v5}, Lorg/spongycastle/asn1/DERSequence;-><init>(Lorg/spongycastle/asn1/ASN1EncodableVector;)V
const-string v2, "DER"
invoke-virtual {v1, v2}, Lorg/spongycastle/asn1/DERSequence;->getEncoded(Ljava/lang/String;)[B
move-result-object v1
.line 1357
new-instance v7, Lorg/spongycastle/asn1/BEROctetString;
invoke-direct {v7, v1}, Lorg/spongycastle/asn1/BEROctetString;-><init>([B)V
.line 1362
const/16 v1, 0x14
new-array v1, v1, [B
.line 1364
iget-object v2, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->random:Ljava/security/SecureRandom;
invoke-virtual {v2, v1}, Ljava/security/SecureRandom;->nextBytes([B)V
.line 1366
new-instance v8, Lorg/spongycastle/asn1/ASN1EncodableVector;
invoke-direct {v8}, Lorg/spongycastle/asn1/ASN1EncodableVector;-><init>()V
.line 1367
new-instance v2, Lorg/spongycastle/asn1/pkcs/PKCS12PBEParams;
const/16 v3, 0x400
invoke-direct {v2, v1, v3}, Lorg/spongycastle/asn1/pkcs/PKCS12PBEParams;-><init>([BI)V
.line 1368
new-instance v3, Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;
iget-object v1, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->certAlgorithm:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v2}, Lorg/spongycastle/asn1/pkcs/PKCS12PBEParams;->toASN1Primitive()Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v2
invoke-direct {v3, v1, v2}, Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;-><init>(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1369
new-instance v9, Ljava/util/Hashtable;
invoke-direct {v9}, Ljava/util/Hashtable;-><init>()V
.line 1371
iget-object v1, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keys:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v1}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->keys()Ljava/util/Enumeration;
move-result-object v10
.line 1372
:goto_15f
invoke-interface {v10}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v1
if-eqz v1, :cond_267
.line 1376
:try_start_165
invoke-interface {v10}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v1
move-object v0, v1
check-cast v0, Ljava/lang/String;
move-object v2, v0
.line 1377
invoke-virtual {p0, v2}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->engineGetCertificate(Ljava/lang/String;)Ljava/security/cert/Certificate;
move-result-object v5
.line 1378
const/4 v6, 0x0
.line 1379
new-instance v11, Lorg/spongycastle/asn1/pkcs/CertBag;
sget-object v1, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->x509Certificate:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
new-instance v4, Lorg/spongycastle/asn1/DEROctetString;
.line 1381
invoke-virtual {v5}, Ljava/security/cert/Certificate;->getEncoded()[B
move-result-object v12
invoke-direct {v4, v12}, Lorg/spongycastle/asn1/DEROctetString;-><init>([B)V
invoke-direct {v11, v1, v4}, Lorg/spongycastle/asn1/pkcs/CertBag;-><init>(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1382
new-instance v12, Lorg/spongycastle/asn1/ASN1EncodableVector;
invoke-direct {v12}, Lorg/spongycastle/asn1/ASN1EncodableVector;-><init>()V
.line 1384
instance-of v1, v5, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;
if-eqz v1, :cond_1f1
.line 1386
move-object v0, v5
check-cast v0, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;
move-object v4, v0
.line 1390
sget-object v1, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->pkcs_9_at_friendlyName:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-interface {v4, v1}, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;->getBagAttribute(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v1
check-cast v1, Lorg/spongycastle/asn1/DERBMPString;
.line 1391
if-eqz v1, :cond_1a3
invoke-virtual {v1}, Lorg/spongycastle/asn1/DERBMPString;->getString()Ljava/lang/String;
move-result-object v1
invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-nez v1, :cond_1ad
.line 1393
:cond_1a3
sget-object v1, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->pkcs_9_at_friendlyName:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
new-instance v13, Lorg/spongycastle/asn1/DERBMPString;
invoke-direct {v13, v2}, Lorg/spongycastle/asn1/DERBMPString;-><init>(Ljava/lang/String;)V
invoke-interface {v4, v1, v13}, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;->setBagAttribute(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1399
:cond_1ad
sget-object v1, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->pkcs_9_at_localKeyId:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-interface {v4, v1}, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;->getBagAttribute(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v1
if-nez v1, :cond_1c2
.line 1401
sget-object v1, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->pkcs_9_at_localKeyId:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v5}, Ljava/security/cert/Certificate;->getPublicKey()Ljava/security/PublicKey;
move-result-object v13
invoke-direct {p0, v13}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->createSubjectKeyId(Ljava/security/PublicKey;)Lorg/spongycastle/asn1/x509/SubjectKeyIdentifier;
move-result-object v13
invoke-interface {v4, v1, v13}, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;->setBagAttribute(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1404
:cond_1c2
invoke-interface {v4}, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;->getBagAttributeKeys()Ljava/util/Enumeration;
move-result-object v13
move v1, v6
.line 1406
:goto_1c7
invoke-interface {v13}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v6
if-eqz v6, :cond_1f2
.line 1408
invoke-interface {v13}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
.line 1409
new-instance v6, Lorg/spongycastle/asn1/ASN1EncodableVector;
invoke-direct {v6}, Lorg/spongycastle/asn1/ASN1EncodableVector;-><init>()V
.line 1411
invoke-virtual {v6, v1}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1412
new-instance v14, Lorg/spongycastle/asn1/DERSet;
invoke-interface {v4, v1}, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;->getBagAttribute(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v1
invoke-direct {v14, v1}, Lorg/spongycastle/asn1/DERSet;-><init>(Lorg/spongycastle/asn1/ASN1Encodable;)V
invoke-virtual {v6, v14}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1413
new-instance v1, Lorg/spongycastle/asn1/DERSequence;
invoke-direct {v1, v6}, Lorg/spongycastle/asn1/DERSequence;-><init>(Lorg/spongycastle/asn1/ASN1EncodableVector;)V
invoke-virtual {v12, v1}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1415
const/4 v1, 0x1
.line 1416
goto :goto_1c7
:cond_1f1
move v1, v6
.line 1419
:cond_1f2
if-nez v1, :cond_235
.line 1421
new-instance v1, Lorg/spongycastle/asn1/ASN1EncodableVector;
invoke-direct {v1}, Lorg/spongycastle/asn1/ASN1EncodableVector;-><init>()V
.line 1423
sget-object v4, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->pkcs_9_at_localKeyId:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v1, v4}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1424
new-instance v4, Lorg/spongycastle/asn1/DERSet;
invoke-virtual {v5}, Ljava/security/cert/Certificate;->getPublicKey()Ljava/security/PublicKey;
move-result-object v6
invoke-direct {p0, v6}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->createSubjectKeyId(Ljava/security/PublicKey;)Lorg/spongycastle/asn1/x509/SubjectKeyIdentifier;
move-result-object v6
invoke-direct {v4, v6}, Lorg/spongycastle/asn1/DERSet;-><init>(Lorg/spongycastle/asn1/ASN1Encodable;)V
invoke-virtual {v1, v4}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1425
new-instance v4, Lorg/spongycastle/asn1/DERSequence;
invoke-direct {v4, v1}, Lorg/spongycastle/asn1/DERSequence;-><init>(Lorg/spongycastle/asn1/ASN1EncodableVector;)V
invoke-virtual {v12, v4}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1427
new-instance v1, Lorg/spongycastle/asn1/ASN1EncodableVector;
invoke-direct {v1}, Lorg/spongycastle/asn1/ASN1EncodableVector;-><init>()V
.line 1429
sget-object v4, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->pkcs_9_at_friendlyName:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v1, v4}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1430
new-instance v4, Lorg/spongycastle/asn1/DERSet;
new-instance v6, Lorg/spongycastle/asn1/DERBMPString;
invoke-direct {v6, v2}, Lorg/spongycastle/asn1/DERBMPString;-><init>(Ljava/lang/String;)V
invoke-direct {v4, v6}, Lorg/spongycastle/asn1/DERSet;-><init>(Lorg/spongycastle/asn1/ASN1Encodable;)V
invoke-virtual {v1, v4}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1432
new-instance v2, Lorg/spongycastle/asn1/DERSequence;
invoke-direct {v2, v1}, Lorg/spongycastle/asn1/DERSequence;-><init>(Lorg/spongycastle/asn1/ASN1EncodableVector;)V
invoke-virtual {v12, v2}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1435
:cond_235
new-instance v1, Lorg/spongycastle/asn1/pkcs/SafeBag;
sget-object v2, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->certBag:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v11}, Lorg/spongycastle/asn1/pkcs/CertBag;->toASN1Primitive()Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v4
new-instance v6, Lorg/spongycastle/asn1/DERSet;
invoke-direct {v6, v12}, Lorg/spongycastle/asn1/DERSet;-><init>(Lorg/spongycastle/asn1/ASN1EncodableVector;)V
invoke-direct {v1, v2, v4, v6}, Lorg/spongycastle/asn1/pkcs/SafeBag;-><init>(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;Lorg/spongycastle/asn1/ASN1Encodable;Lorg/spongycastle/asn1/ASN1Set;)V
.line 1437
invoke-virtual {v8, v1}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1439
invoke-virtual {v9, v5, v5}, Ljava/util/Hashtable;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
:try_end_24b
.catch Ljava/security/cert/CertificateEncodingException; {:try_start_165 .. :try_end_24b} :catch_24d
goto/16 :goto_15f
.line 1441
:catch_24d
move-exception v1
.line 1443
new-instance v2, Ljava/io/IOException;
new-instance v3, Ljava/lang/StringBuilder;
const-string v4, "Error encoding certificate: "
invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v1}, Ljava/security/cert/CertificateEncodingException;->toString()Ljava/lang/String;
move-result-object v1
invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v2, v1}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
throw v2
.line 1447
:cond_267
iget-object v1, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->certs:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v1}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->keys()Ljava/util/Enumeration;
move-result-object v10
.line 1448
:cond_26d
:goto_26d
invoke-interface {v10}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v1
if-eqz v1, :cond_34f
.line 1452
:try_start_273
invoke-interface {v10}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/lang/String;
.line 1453
iget-object v2, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->certs:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v2, v1}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->get(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v2
check-cast v2, Ljava/security/cert/Certificate;
.line 1454
const/4 v6, 0x0
.line 1456
iget-object v4, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keys:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v4, v1}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->get(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v4
if-nez v4, :cond_26d
.line 1461
new-instance v11, Lorg/spongycastle/asn1/pkcs/CertBag;
sget-object v4, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->x509Certificate:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
new-instance v5, Lorg/spongycastle/asn1/DEROctetString;
.line 1463
invoke-virtual {v2}, Ljava/security/cert/Certificate;->getEncoded()[B
move-result-object v12
invoke-direct {v5, v12}, Lorg/spongycastle/asn1/DEROctetString;-><init>([B)V
invoke-direct {v11, v4, v5}, Lorg/spongycastle/asn1/pkcs/CertBag;-><init>(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1464
new-instance v12, Lorg/spongycastle/asn1/ASN1EncodableVector;
invoke-direct {v12}, Lorg/spongycastle/asn1/ASN1EncodableVector;-><init>()V
.line 1466
instance-of v4, v2, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;
if-eqz v4, :cond_2fb
.line 1468
move-object v0, v2
check-cast v0, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;
move-object v4, v0
.line 1472
sget-object v5, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->pkcs_9_at_friendlyName:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-interface {v4, v5}, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;->getBagAttribute(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v5
check-cast v5, Lorg/spongycastle/asn1/DERBMPString;
.line 1473
if-eqz v5, :cond_2bb
invoke-virtual {v5}, Lorg/spongycastle/asn1/DERBMPString;->getString()Ljava/lang/String;
move-result-object v5
invoke-virtual {v5, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v5
if-nez v5, :cond_2c5
.line 1475
:cond_2bb
sget-object v5, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->pkcs_9_at_friendlyName:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
new-instance v13, Lorg/spongycastle/asn1/DERBMPString;
invoke-direct {v13, v1}, Lorg/spongycastle/asn1/DERBMPString;-><init>(Ljava/lang/String;)V
invoke-interface {v4, v5, v13}, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;->setBagAttribute(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1478
:cond_2c5
invoke-interface {v4}, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;->getBagAttributeKeys()Ljava/util/Enumeration;
move-result-object v13
.line 1480
:cond_2c9
:goto_2c9
invoke-interface {v13}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v5
if-eqz v5, :cond_2fb
.line 1482
invoke-interface {v13}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v5
check-cast v5, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
.line 1488
sget-object v14, Lorg/spongycastle/asn1/pkcs/PKCSObjectIdentifiers;->pkcs_9_at_localKeyId:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v5, v14}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->equals(Ljava/lang/Object;)Z
move-result v14
if-nez v14, :cond_2c9
.line 1493
new-instance v6, Lorg/spongycastle/asn1/ASN1EncodableVector;
invoke-direct {v6}, Lorg/spongycastle/asn1/ASN1EncodableVector;-><init>()V
.line 1495
invoke-virtual {v6, v5}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1496
new-instance v14, Lorg/spongycastle/asn1/DERSet;
invoke-interface {v4, v5}, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;->getBagAttribute(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v5
invoke-direct {v14, v5}, Lorg/spongycastle/asn1/DERSet;-><init>(Lorg/spongycastle/asn1/ASN1Encodable;)V
invoke-virtual {v6, v14}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1497
new-instance v5, Lorg/spongycastle/asn1/DERSequence;
invoke-direct {v5, v6}, Lorg/spongycastle/asn1/DERSequence;-><init>(Lorg/spongycastle/asn1/ASN1EncodableVector;)V
invoke-virtual {v12, v5}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1499
const/4 v6, 0x1
.line 1500
goto :goto_2c9
:cond_2fb
move v4, v6
.line 1503
if-nez v4, :cond_31d
.line 1505
new-instance v4, Lorg/spongycastle/asn1/ASN1EncodableVector;
invoke-direct {v4}, Lorg/spongycastle/asn1/ASN1EncodableVector;-><init>()V
.line 1507
sget-object v5, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->pkcs_9_at_friendlyName:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v4, v5}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1508
new-instance v5, Lorg/spongycastle/asn1/DERSet;
new-instance v6, Lorg/spongycastle/asn1/DERBMPString;
invoke-direct {v6, v1}, Lorg/spongycastle/asn1/DERBMPString;-><init>(Ljava/lang/String;)V
invoke-direct {v5, v6}, Lorg/spongycastle/asn1/DERSet;-><init>(Lorg/spongycastle/asn1/ASN1Encodable;)V
invoke-virtual {v4, v5}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1510
new-instance v1, Lorg/spongycastle/asn1/DERSequence;
invoke-direct {v1, v4}, Lorg/spongycastle/asn1/DERSequence;-><init>(Lorg/spongycastle/asn1/ASN1EncodableVector;)V
invoke-virtual {v12, v1}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1513
:cond_31d
new-instance v1, Lorg/spongycastle/asn1/pkcs/SafeBag;
sget-object v4, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->certBag:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v11}, Lorg/spongycastle/asn1/pkcs/CertBag;->toASN1Primitive()Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v5
new-instance v6, Lorg/spongycastle/asn1/DERSet;
invoke-direct {v6, v12}, Lorg/spongycastle/asn1/DERSet;-><init>(Lorg/spongycastle/asn1/ASN1EncodableVector;)V
invoke-direct {v1, v4, v5, v6}, Lorg/spongycastle/asn1/pkcs/SafeBag;-><init>(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;Lorg/spongycastle/asn1/ASN1Encodable;Lorg/spongycastle/asn1/ASN1Set;)V
.line 1515
invoke-virtual {v8, v1}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1517
invoke-virtual {v9, v2, v2}, Ljava/util/Hashtable;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
:try_end_333
.catch Ljava/security/cert/CertificateEncodingException; {:try_start_273 .. :try_end_333} :catch_335
goto/16 :goto_26d
.line 1519
:catch_335
move-exception v1
.line 1521
new-instance v2, Ljava/io/IOException;
new-instance v3, Ljava/lang/StringBuilder;
const-string v4, "Error encoding certificate: "
invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v1}, Ljava/security/cert/CertificateEncodingException;->toString()Ljava/lang/String;
move-result-object v1
invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v2, v1}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
throw v2
.line 1525
:cond_34f
invoke-direct {p0}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->getUsedCertificateSet()Ljava/util/Set;
move-result-object v4
.line 1527
iget-object v1, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->chainCerts:Ljava/util/Hashtable;
invoke-virtual {v1}, Ljava/util/Hashtable;->keys()Ljava/util/Enumeration;
move-result-object v5
.line 1528
:cond_359
:goto_359
invoke-interface {v5}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v1
if-eqz v1, :cond_3fa
.line 1532
:try_start_35f
invoke-interface {v5}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$CertId;
.line 1533
iget-object v2, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->chainCerts:Ljava/util/Hashtable;
invoke-virtual {v2, v1}, Ljava/util/Hashtable;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/security/cert/Certificate;
.line 1535
invoke-interface {v4, v1}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_359
.line 1540
invoke-virtual {v9, v1}, Ljava/util/Hashtable;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v2
if-nez v2, :cond_359
.line 1545
new-instance v6, Lorg/spongycastle/asn1/pkcs/CertBag;
sget-object v2, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->x509Certificate:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
new-instance v10, Lorg/spongycastle/asn1/DEROctetString;
.line 1547
invoke-virtual {v1}, Ljava/security/cert/Certificate;->getEncoded()[B
move-result-object v11
invoke-direct {v10, v11}, Lorg/spongycastle/asn1/DEROctetString;-><init>([B)V
invoke-direct {v6, v2, v10}, Lorg/spongycastle/asn1/pkcs/CertBag;-><init>(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1548
new-instance v10, Lorg/spongycastle/asn1/ASN1EncodableVector;
invoke-direct {v10}, Lorg/spongycastle/asn1/ASN1EncodableVector;-><init>()V
.line 1550
instance-of v2, v1, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;
if-eqz v2, :cond_3e5
.line 1552
move-object v0, v1
check-cast v0, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;
move-object v2, v0
.line 1553
invoke-interface {v2}, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;->getBagAttributeKeys()Ljava/util/Enumeration;
move-result-object v11
.line 1555
:cond_39a
:goto_39a
invoke-interface {v11}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v1
if-eqz v1, :cond_3e5
.line 1557
invoke-interface {v11}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
.line 1563
sget-object v12, Lorg/spongycastle/asn1/pkcs/PKCSObjectIdentifiers;->pkcs_9_at_localKeyId:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v1, v12}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->equals(Ljava/lang/Object;)Z
move-result v12
if-nez v12, :cond_39a
.line 1568
new-instance v12, Lorg/spongycastle/asn1/ASN1EncodableVector;
invoke-direct {v12}, Lorg/spongycastle/asn1/ASN1EncodableVector;-><init>()V
.line 1570
invoke-virtual {v12, v1}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1571
new-instance v13, Lorg/spongycastle/asn1/DERSet;
invoke-interface {v2, v1}, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;->getBagAttribute(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v1
invoke-direct {v13, v1}, Lorg/spongycastle/asn1/DERSet;-><init>(Lorg/spongycastle/asn1/ASN1Encodable;)V
invoke-virtual {v12, v13}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1572
new-instance v1, Lorg/spongycastle/asn1/DERSequence;
invoke-direct {v1, v12}, Lorg/spongycastle/asn1/DERSequence;-><init>(Lorg/spongycastle/asn1/ASN1EncodableVector;)V
invoke-virtual {v10, v1}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
:try_end_3ca
.catch Ljava/security/cert/CertificateEncodingException; {:try_start_35f .. :try_end_3ca} :catch_3cb
goto :goto_39a
.line 1580
:catch_3cb
move-exception v1
.line 1582
new-instance v2, Ljava/io/IOException;
new-instance v3, Ljava/lang/StringBuilder;
const-string v4, "Error encoding certificate: "
invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v1}, Ljava/security/cert/CertificateEncodingException;->toString()Ljava/lang/String;
move-result-object v1
invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v2, v1}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
throw v2
.line 1576
:cond_3e5
:try_start_3e5
new-instance v1, Lorg/spongycastle/asn1/pkcs/SafeBag;
sget-object v2, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->certBag:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v6}, Lorg/spongycastle/asn1/pkcs/CertBag;->toASN1Primitive()Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v6
new-instance v11, Lorg/spongycastle/asn1/DERSet;
invoke-direct {v11, v10}, Lorg/spongycastle/asn1/DERSet;-><init>(Lorg/spongycastle/asn1/ASN1EncodableVector;)V
invoke-direct {v1, v2, v6, v11}, Lorg/spongycastle/asn1/pkcs/SafeBag;-><init>(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;Lorg/spongycastle/asn1/ASN1Encodable;Lorg/spongycastle/asn1/ASN1Set;)V
.line 1578
invoke-virtual {v8, v1}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
:try_end_3f8
.catch Ljava/security/cert/CertificateEncodingException; {:try_start_3e5 .. :try_end_3f8} :catch_3cb
goto/16 :goto_359
.line 1586
:cond_3fa
new-instance v1, Lorg/spongycastle/asn1/DERSequence;
invoke-direct {v1, v8}, Lorg/spongycastle/asn1/DERSequence;-><init>(Lorg/spongycastle/asn1/ASN1EncodableVector;)V
const-string v2, "DER"
invoke-virtual {v1, v2}, Lorg/spongycastle/asn1/DERSequence;->getEncoded(Ljava/lang/String;)[B
move-result-object v6
.line 1587
const/4 v2, 0x1
const/4 v5, 0x0
move-object v1, p0
move-object/from16 v4, p2
invoke-virtual/range {v1 .. v6}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->cryptData(ZLorg/spongycastle/asn1/x509/AlgorithmIdentifier;[CZ[B)[B
move-result-object v1
.line 1588
new-instance v2, Lorg/spongycastle/asn1/pkcs/EncryptedData;
sget-object v4, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->data:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
new-instance v5, Lorg/spongycastle/asn1/BEROctetString;
invoke-direct {v5, v1}, Lorg/spongycastle/asn1/BEROctetString;-><init>([B)V
invoke-direct {v2, v4, v3, v5}, Lorg/spongycastle/asn1/pkcs/EncryptedData;-><init>(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1590
const/4 v1, 0x2
new-array v1, v1, [Lorg/spongycastle/asn1/pkcs/ContentInfo;
const/4 v3, 0x0
new-instance v4, Lorg/spongycastle/asn1/pkcs/ContentInfo;
sget-object v5, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->data:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-direct {v4, v5, v7}, Lorg/spongycastle/asn1/pkcs/ContentInfo;-><init>(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;Lorg/spongycastle/asn1/ASN1Encodable;)V
aput-object v4, v1, v3
const/4 v3, 0x1
new-instance v4, Lorg/spongycastle/asn1/pkcs/ContentInfo;
sget-object v5, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->encryptedData:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
.line 1593
invoke-virtual {v2}, Lorg/spongycastle/asn1/pkcs/EncryptedData;->toASN1Primitive()Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v2
invoke-direct {v4, v5, v2}, Lorg/spongycastle/asn1/pkcs/ContentInfo;-><init>(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;Lorg/spongycastle/asn1/ASN1Encodable;)V
aput-object v4, v1, v3
.line 1596
new-instance v2, Lorg/spongycastle/asn1/pkcs/AuthenticatedSafe;
invoke-direct {v2, v1}, Lorg/spongycastle/asn1/pkcs/AuthenticatedSafe;-><init>([Lorg/spongycastle/asn1/pkcs/ContentInfo;)V
.line 1598
new-instance v3, Ljava/io/ByteArrayOutputStream;
invoke-direct {v3}, Ljava/io/ByteArrayOutputStream;-><init>()V
.line 1600
if-eqz p3, :cond_49f
.line 1602
new-instance v1, Lorg/spongycastle/asn1/DEROutputStream;
invoke-direct {v1, v3}, Lorg/spongycastle/asn1/DEROutputStream;-><init>(Ljava/io/OutputStream;)V
.line 1609
:goto_446
invoke-virtual {v1, v2}, Lorg/spongycastle/asn1/DEROutputStream;->writeObject(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1611
invoke-virtual {v3}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B
move-result-object v1
.line 1613
new-instance v8, Lorg/spongycastle/asn1/pkcs/ContentInfo;
sget-object v2, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->data:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
new-instance v3, Lorg/spongycastle/asn1/BEROctetString;
invoke-direct {v3, v1}, Lorg/spongycastle/asn1/BEROctetString;-><init>([B)V
invoke-direct {v8, v2, v3}, Lorg/spongycastle/asn1/pkcs/ContentInfo;-><init>(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1618
const/16 v1, 0x14
new-array v3, v1, [B
.line 1621
iget-object v1, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->random:Ljava/security/SecureRandom;
invoke-virtual {v1, v3}, Ljava/security/SecureRandom;->nextBytes([B)V
.line 1623
invoke-virtual {v8}, Lorg/spongycastle/asn1/pkcs/ContentInfo;->getContent()Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v1
check-cast v1, Lorg/spongycastle/asn1/ASN1OctetString;
invoke-virtual {v1}, Lorg/spongycastle/asn1/ASN1OctetString;->getOctets()[B
move-result-object v7
.line 1629
:try_start_46c
sget-object v2, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->id_SHA1:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
const/16 v4, 0x400
const/4 v6, 0x0
move-object v1, p0
move-object/from16 v5, p2
invoke-direct/range {v1 .. v7}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->calculatePbeMac(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;[BI[CZ[B)[B
move-result-object v1
.line 1631
new-instance v2, Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;
sget-object v4, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->id_SHA1:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
sget-object v5, Lorg/spongycastle/asn1/DERNull;->INSTANCE:Lorg/spongycastle/asn1/DERNull;
invoke-direct {v2, v4, v5}, Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;-><init>(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1632
new-instance v4, Lorg/spongycastle/asn1/x509/DigestInfo;
invoke-direct {v4, v2, v1}, Lorg/spongycastle/asn1/x509/DigestInfo;-><init>(Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;[B)V
.line 1634
new-instance v1, Lorg/spongycastle/asn1/pkcs/MacData;
const/16 v2, 0x400
invoke-direct {v1, v4, v3, v2}, Lorg/spongycastle/asn1/pkcs/MacData;-><init>(Lorg/spongycastle/asn1/x509/DigestInfo;[BI)V
:try_end_48d
.catch Ljava/lang/Exception; {:try_start_46c .. :try_end_48d} :catch_4a5
.line 1644
new-instance v2, Lorg/spongycastle/asn1/pkcs/Pfx;
invoke-direct {v2, v8, v1}, Lorg/spongycastle/asn1/pkcs/Pfx;-><init>(Lorg/spongycastle/asn1/pkcs/ContentInfo;Lorg/spongycastle/asn1/pkcs/MacData;)V
.line 1646
if-eqz p3, :cond_4bf
.line 1648
new-instance v1, Lorg/spongycastle/asn1/DEROutputStream;
move-object/from16 v0, p1
invoke-direct {v1, v0}, Lorg/spongycastle/asn1/DEROutputStream;-><init>(Ljava/io/OutputStream;)V
.line 1655
:goto_49b
invoke-virtual {v1, v2}, Lorg/spongycastle/asn1/DEROutputStream;->writeObject(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1656
return-void
.line 1606
:cond_49f
new-instance v1, Lorg/spongycastle/asn1/BEROutputStream;
invoke-direct {v1, v3}, Lorg/spongycastle/asn1/BEROutputStream;-><init>(Ljava/io/OutputStream;)V
goto :goto_446
.line 1636
:catch_4a5
move-exception v1
.line 1638
new-instance v2, Ljava/io/IOException;
new-instance v3, Ljava/lang/StringBuilder;
const-string v4, "error constructing MAC: "
invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v1}, Ljava/lang/Exception;->toString()Ljava/lang/String;
move-result-object v1
invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v2, v1}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
throw v2
.line 1652
:cond_4bf
new-instance v1, Lorg/spongycastle/asn1/BEROutputStream;
move-object/from16 v0, p1
invoke-direct {v1, v0}, Lorg/spongycastle/asn1/BEROutputStream;-><init>(Ljava/io/OutputStream;)V
goto :goto_49b
.end method
.method private static getDigest(Lorg/spongycastle/asn1/x509/SubjectPublicKeyInfo;)[B
.registers 6
.prologue
const/4 v4, 0x0
.line 229
new-instance v0, Lorg/spongycastle/crypto/digests/SHA1Digest;
invoke-direct {v0}, Lorg/spongycastle/crypto/digests/SHA1Digest;-><init>()V
.line 230
invoke-interface {v0}, Lorg/spongycastle/crypto/Digest;->getDigestSize()I
move-result v1
new-array v1, v1, [B
.line 232
invoke-virtual {p0}, Lorg/spongycastle/asn1/x509/SubjectPublicKeyInfo;->getPublicKeyData()Lorg/spongycastle/asn1/DERBitString;
move-result-object v2
invoke-virtual {v2}, Lorg/spongycastle/asn1/DERBitString;->getBytes()[B
move-result-object v2
.line 233
array-length v3, v2
invoke-interface {v0, v2, v4, v3}, Lorg/spongycastle/crypto/Digest;->update([BII)V
.line 234
invoke-interface {v0, v1, v4}, Lorg/spongycastle/crypto/Digest;->doFinal([BI)I
.line 235
return-object v1
.end method
.method private getUsedCertificateSet()Ljava/util/Set;
.registers 6
.prologue
.line 1660
new-instance v1, Ljava/util/HashSet;
invoke-direct {v1}, Ljava/util/HashSet;-><init>()V
.line 1662
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keys:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v0}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->keys()Ljava/util/Enumeration;
move-result-object v2
:cond_b
invoke-interface {v2}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v0
if-eqz v0, :cond_27
.line 1664
invoke-interface {v2}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/String;
.line 1666
invoke-virtual {p0, v0}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->engineGetCertificateChain(Ljava/lang/String;)[Ljava/security/cert/Certificate;
move-result-object v3
.line 1668
const/4 v0, 0x0
:goto_1c
array-length v4, v3
if-eq v0, v4, :cond_b
.line 1670
aget-object v4, v3, v0
invoke-interface {v1, v4}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
.line 1668
add-int/lit8 v0, v0, 0x1
goto :goto_1c
.line 1674
:cond_27
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->certs:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v0}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->keys()Ljava/util/Enumeration;
move-result-object v2
:goto_2d
invoke-interface {v2}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v0
if-eqz v0, :cond_41
.line 1676
invoke-interface {v2}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/String;
.line 1678
invoke-virtual {p0, v0}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->engineGetCertificate(Ljava/lang/String;)Ljava/security/cert/Certificate;
move-result-object v0
.line 1680
invoke-interface {v1, v0}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
goto :goto_2d
.line 1683
:cond_41
return-object v1
.end method
# virtual methods
.method protected cryptData(ZLorg/spongycastle/asn1/x509/AlgorithmIdentifier;[CZ[B)[B
.registers 11
.prologue
.line 682
invoke-virtual {p2}, Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;->getAlgorithm()Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v1
.line 683
if-eqz p1, :cond_44
const/4 v0, 0x1
.line 685
:goto_7
sget-object v2, Lorg/spongycastle/asn1/pkcs/PKCSObjectIdentifiers;->pkcs_12PbeIds:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v1, v2}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->on(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;)Z
move-result v2
if-eqz v2, :cond_60
.line 687
invoke-virtual {p2}, Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;->getParameters()Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v2
invoke-static {v2}, Lorg/spongycastle/asn1/pkcs/PKCS12PBEParams;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/pkcs/PKCS12PBEParams;
move-result-object v2
.line 688
new-instance v3, Ljavax/crypto/spec/PBEKeySpec;
invoke-direct {v3, p3}, Ljavax/crypto/spec/PBEKeySpec;-><init>([C)V
.line 692
:try_start_1c
new-instance v3, Ljavax/crypto/spec/PBEParameterSpec;
.line 693
invoke-virtual {v2}, Lorg/spongycastle/asn1/pkcs/PKCS12PBEParams;->getIV()[B
move-result-object v4
.line 694
invoke-virtual {v2}, Lorg/spongycastle/asn1/pkcs/PKCS12PBEParams;->getIterations()Ljava/math/BigInteger;
move-result-object v2
invoke-virtual {v2}, Ljava/math/BigInteger;->intValue()I
move-result v2
invoke-direct {v3, v4, v2}, Ljavax/crypto/spec/PBEParameterSpec;-><init>([BI)V
.line 695
new-instance v2, Lorg/spongycastle/jcajce/PKCS12Key;
invoke-direct {v2, p3, p4}, Lorg/spongycastle/jcajce/PKCS12Key;-><init>([CZ)V
.line 697
iget-object v4, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->helper:Lorg/spongycastle/jcajce/util/JcaJceHelper;
invoke-virtual {v1}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v1
invoke-interface {v4, v1}, Lorg/spongycastle/jcajce/util/JcaJceHelper;->createCipher(Ljava/lang/String;)Ljavax/crypto/Cipher;
move-result-object v1
.line 699
invoke-virtual {v1, v0, v2, v3}, Ljavax/crypto/Cipher;->init(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
.line 700
invoke-virtual {v1, p5}, Ljavax/crypto/Cipher;->doFinal([B)[B
:try_end_42
.catch Ljava/lang/Exception; {:try_start_1c .. :try_end_42} :catch_46
move-result-object v0
.line 713
:goto_43
return-object v0
.line 683
:cond_44
const/4 v0, 0x2
goto :goto_7
.line 702
:catch_46
move-exception v0
.line 704
new-instance v1, Ljava/io/IOException;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "exception decrypting data - "
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0}, Ljava/lang/Exception;->toString()Ljava/lang/String;
move-result-object v0
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {v1, v0}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
throw v1
.line 707
:cond_60
sget-object v2, Lorg/spongycastle/asn1/pkcs/PKCSObjectIdentifiers;->id_PBES2:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v1, v2}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_8b
.line 711
:try_start_68
invoke-direct {p0, v0, p3, p2}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->createCipher(I[CLorg/spongycastle/asn1/x509/AlgorithmIdentifier;)Ljavax/crypto/Cipher;
move-result-object v0
.line 713
invoke-virtual {v0, p5}, Ljavax/crypto/Cipher;->doFinal([B)[B
:try_end_6f
.catch Ljava/lang/Exception; {:try_start_68 .. :try_end_6f} :catch_71
move-result-object v0
goto :goto_43
.line 715
:catch_71
move-exception v0
.line 717
new-instance v1, Ljava/io/IOException;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "exception decrypting data - "
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0}, Ljava/lang/Exception;->toString()Ljava/lang/String;
move-result-object v0
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {v1, v0}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
throw v1
.line 722
:cond_8b
new-instance v0, Ljava/io/IOException;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "unknown PBE algorithm: "
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public engineAliases()Ljava/util/Enumeration;
.registers 5
.prologue
.line 246
new-instance v1, Ljava/util/Hashtable;
invoke-direct {v1}, Ljava/util/Hashtable;-><init>()V
.line 248
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->certs:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v0}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->keys()Ljava/util/Enumeration;
move-result-object v0
.line 249
:goto_b
invoke-interface {v0}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v2
if-eqz v2, :cond_1b
.line 251
invoke-interface {v0}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v2
const-string v3, "cert"
invoke-virtual {v1, v2, v3}, Ljava/util/Hashtable;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
goto :goto_b
.line 254
:cond_1b
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keys:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v0}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->keys()Ljava/util/Enumeration;
move-result-object v2
.line 255
:cond_21
:goto_21
invoke-interface {v2}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v0
if-eqz v0, :cond_39
.line 257
invoke-interface {v2}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/String;
.line 258
invoke-virtual {v1, v0}, Ljava/util/Hashtable;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v3
if-nez v3, :cond_21
.line 260
const-string v3, "key"
invoke-virtual {v1, v0, v3}, Ljava/util/Hashtable;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
goto :goto_21
.line 264
:cond_39
invoke-virtual {v1}, Ljava/util/Hashtable;->keys()Ljava/util/Enumeration;
move-result-object v0
return-object v0
.end method
.method public engineContainsAlias(Ljava/lang/String;)Z
.registers 3
.prologue
.line 270
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->certs:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v0, p1}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->get(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
if-nez v0, :cond_10
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keys:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v0, p1}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->get(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
if-eqz v0, :cond_12
:cond_10
const/4 v0, 0x1
:goto_11
return v0
:cond_12
const/4 v0, 0x0
goto :goto_11
.end method
.method public engineDeleteEntry(Ljava/lang/String;)V
.registers 7
.prologue
.line 282
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keys:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v0, p1}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->remove(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/Key;
.line 284
iget-object v1, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->certs:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v1, p1}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->remove(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/security/cert/Certificate;
.line 286
if-eqz v1, :cond_20
.line 288
iget-object v2, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->chainCerts:Ljava/util/Hashtable;
new-instance v3, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$CertId;
invoke-virtual {v1}, Ljava/security/cert/Certificate;->getPublicKey()Ljava/security/PublicKey;
move-result-object v4
invoke-direct {v3, p0, v4}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$CertId;-><init>(Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;Ljava/security/PublicKey;)V
invoke-virtual {v2, v3}, Ljava/util/Hashtable;->remove(Ljava/lang/Object;)Ljava/lang/Object;
.line 291
:cond_20
if-eqz v0, :cond_44
.line 293
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->localIds:Ljava/util/Hashtable;
invoke-virtual {v0, p1}, Ljava/util/Hashtable;->remove(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/String;
.line 294
if-eqz v0, :cond_45
.line 296
iget-object v1, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keyCerts:Ljava/util/Hashtable;
invoke-virtual {v1, v0}, Ljava/util/Hashtable;->remove(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/Certificate;
.line 298
:goto_34
if-eqz v0, :cond_44
.line 300
iget-object v1, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->chainCerts:Ljava/util/Hashtable;
new-instance v2, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$CertId;
invoke-virtual {v0}, Ljava/security/cert/Certificate;->getPublicKey()Ljava/security/PublicKey;
move-result-object v0
invoke-direct {v2, p0, v0}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$CertId;-><init>(Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;Ljava/security/PublicKey;)V
invoke-virtual {v1, v2}, Ljava/util/Hashtable;->remove(Ljava/lang/Object;)Ljava/lang/Object;
.line 303
:cond_44
return-void
:cond_45
move-object v0, v1
goto :goto_34
.end method
.method public engineGetCertificate(Ljava/lang/String;)Ljava/security/cert/Certificate;
.registers 4
.prologue
.line 311
if-nez p1, :cond_a
.line 313
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "null alias passed to getCertificate."
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 316
:cond_a
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->certs:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v0, p1}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->get(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/Certificate;
.line 321
if-nez v0, :cond_26
.line 323
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->localIds:Ljava/util/Hashtable;
invoke-virtual {v0, p1}, Ljava/util/Hashtable;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/String;
.line 324
if-eqz v0, :cond_27
.line 326
iget-object v1, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keyCerts:Ljava/util/Hashtable;
invoke-virtual {v1, v0}, Ljava/util/Hashtable;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/Certificate;
.line 334
:cond_26
:goto_26
return-object v0
.line 330
:cond_27
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keyCerts:Ljava/util/Hashtable;
invoke-virtual {v0, p1}, Ljava/util/Hashtable;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/Certificate;
goto :goto_26
.end method
.method public engineGetCertificateAlias(Ljava/security/cert/Certificate;)Ljava/lang/String;
.registers 6
.prologue
.line 340
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->certs:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v0}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->elements()Ljava/util/Enumeration;
move-result-object v2
.line 341
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->certs:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v0}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->keys()Ljava/util/Enumeration;
move-result-object v3
.line 343
:cond_c
invoke-interface {v2}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v0
if-eqz v0, :cond_25
.line 345
invoke-interface {v2}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/Certificate;
.line 346
invoke-interface {v3}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/lang/String;
.line 348
invoke-virtual {v0, p1}, Ljava/security/cert/Certificate;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_c
.line 368
:goto_24
return-object v1
.line 354
:cond_25
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keyCerts:Ljava/util/Hashtable;
invoke-virtual {v0}, Ljava/util/Hashtable;->elements()Ljava/util/Enumeration;
move-result-object v2
.line 355
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keyCerts:Ljava/util/Hashtable;
invoke-virtual {v0}, Ljava/util/Hashtable;->keys()Ljava/util/Enumeration;
move-result-object v3
.line 357
:cond_31
invoke-interface {v2}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v0
if-eqz v0, :cond_4a
.line 359
invoke-interface {v2}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/Certificate;
.line 360
invoke-interface {v3}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/lang/String;
.line 362
invoke-virtual {v0, p1}, Ljava/security/cert/Certificate;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_31
goto :goto_24
.line 368
:cond_4a
const/4 v1, 0x0
goto :goto_24
.end method
.method public engineGetCertificateChain(Ljava/lang/String;)[Ljava/security/cert/Certificate;
.registers 11
.prologue
const/4 v3, 0x0
.line 374
if-nez p1, :cond_b
.line 376
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "null alias passed to getCertificateChain."
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 379
:cond_b
invoke-virtual {p0, p1}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->engineIsKeyEntry(Ljava/lang/String;)Z
move-result v0
if-nez v0, :cond_12
.line 479
:cond_11
return-object v3
.line 384
:cond_12
invoke-virtual {p0, p1}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->engineGetCertificate(Ljava/lang/String;)Ljava/security/cert/Certificate;
move-result-object v1
.line 386
if-eqz v1, :cond_11
.line 388
new-instance v5, Ljava/util/Vector;
invoke-direct {v5}, Ljava/util/Vector;-><init>()V
.line 390
:goto_1d
if-eqz v1, :cond_b7
move-object v0, v1
.line 392
check-cast v0, Ljava/security/cert/X509Certificate;
.line 395
sget-object v2, Lorg/spongycastle/asn1/x509/Extension;->authorityKeyIdentifier:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v2}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v2
invoke-virtual {v0, v2}, Ljava/security/cert/X509Certificate;->getExtensionValue(Ljava/lang/String;)[B
move-result-object v2
.line 396
if-eqz v2, :cond_d4
.line 400
:try_start_2e
new-instance v4, Lorg/spongycastle/asn1/ASN1InputStream;
invoke-direct {v4, v2}, Lorg/spongycastle/asn1/ASN1InputStream;-><init>([B)V
.line 402
invoke-virtual {v4}, Lorg/spongycastle/asn1/ASN1InputStream;->readObject()Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v2
check-cast v2, Lorg/spongycastle/asn1/ASN1OctetString;
invoke-virtual {v2}, Lorg/spongycastle/asn1/ASN1OctetString;->getOctets()[B
move-result-object v2
.line 403
new-instance v4, Lorg/spongycastle/asn1/ASN1InputStream;
invoke-direct {v4, v2}, Lorg/spongycastle/asn1/ASN1InputStream;-><init>([B)V
.line 405
invoke-virtual {v4}, Lorg/spongycastle/asn1/ASN1InputStream;->readObject()Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v2
invoke-static {v2}, Lorg/spongycastle/asn1/x509/AuthorityKeyIdentifier;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/x509/AuthorityKeyIdentifier;
move-result-object v2
.line 406
invoke-virtual {v2}, Lorg/spongycastle/asn1/x509/AuthorityKeyIdentifier;->getKeyIdentifier()[B
move-result-object v4
if-eqz v4, :cond_d2
.line 408
iget-object v4, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->chainCerts:Ljava/util/Hashtable;
new-instance v6, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$CertId;
invoke-virtual {v2}, Lorg/spongycastle/asn1/x509/AuthorityKeyIdentifier;->getKeyIdentifier()[B
move-result-object v2
invoke-direct {v6, p0, v2}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$CertId;-><init>(Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;[B)V
invoke-virtual {v4, v6}, Ljava/util/Hashtable;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v2
check-cast v2, Ljava/security/cert/Certificate;
:try_end_61
.catch Ljava/io/IOException; {:try_start_2e .. :try_end_61} :catch_a9
:goto_61
move-object v4, v2
.line 418
:goto_62
if-nez v4, :cond_d0
.line 423
invoke-virtual {v0}, Ljava/security/cert/X509Certificate;->getIssuerDN()Ljava/security/Principal;
move-result-object v6
.line 424
invoke-virtual {v0}, Ljava/security/cert/X509Certificate;->getSubjectDN()Ljava/security/Principal;
move-result-object v2
.line 426
invoke-interface {v6, v2}, Ljava/security/Principal;->equals(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_d0
.line 428
iget-object v2, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->chainCerts:Ljava/util/Hashtable;
invoke-virtual {v2}, Ljava/util/Hashtable;->keys()Ljava/util/Enumeration;
move-result-object v7
.line 430
:cond_78
:goto_78
invoke-interface {v7}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v2
if-eqz v2, :cond_d0
.line 432
iget-object v2, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->chainCerts:Ljava/util/Hashtable;
invoke-interface {v7}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v8
invoke-virtual {v2, v8}, Ljava/util/Hashtable;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v2
check-cast v2, Ljava/security/cert/X509Certificate;
.line 433
invoke-virtual {v2}, Ljava/security/cert/X509Certificate;->getSubjectDN()Ljava/security/Principal;
move-result-object v8
.line 434
invoke-interface {v8, v6}, Ljava/security/Principal;->equals(Ljava/lang/Object;)Z
move-result v8
if-eqz v8, :cond_78
.line 438
:try_start_94
invoke-virtual {v2}, Ljava/security/cert/X509Certificate;->getPublicKey()Ljava/security/PublicKey;
move-result-object v8
invoke-virtual {v0, v8}, Ljava/security/cert/X509Certificate;->verify(Ljava/security/PublicKey;)V
:try_end_9b
.catch Ljava/lang/Exception; {:try_start_94 .. :try_end_9b} :catch_ce
.line 451
:goto_9b
invoke-virtual {v5, v1}, Ljava/util/Vector;->contains(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_b4
.line 457
invoke-virtual {v5, v1}, Ljava/util/Vector;->addElement(Ljava/lang/Object;)V
.line 458
if-eq v2, v1, :cond_b4
move-object v1, v2
.line 460
goto/16 :goto_1d
.line 412
:catch_a9
move-exception v0
.line 414
new-instance v1, Ljava/lang/RuntimeException;
invoke-virtual {v0}, Ljava/io/IOException;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {v1, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v1
:cond_b4
move-object v1, v3
.line 467
goto/16 :goto_1d
.line 469
:cond_b7
invoke-virtual {v5}, Ljava/util/Vector;->size()I
move-result v0
new-array v3, v0, [Ljava/security/cert/Certificate;
.line 471
const/4 v0, 0x0
move v1, v0
:goto_bf
array-length v0, v3
if-eq v1, v0, :cond_11
.line 473
invoke-virtual {v5, v1}, Ljava/util/Vector;->elementAt(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/Certificate;
aput-object v0, v3, v1
.line 471
add-int/lit8 v0, v1, 0x1
move v1, v0
goto :goto_bf
:catch_ce
move-exception v2
goto :goto_78
:cond_d0
move-object v2, v4
goto :goto_9b
:cond_d2
move-object v2, v3
goto :goto_61
:cond_d4
move-object v4, v3
goto :goto_62
.end method
.method public engineGetCreationDate(Ljava/lang/String;)Ljava/util/Date;
.registers 4
.prologue
.line 484
if-nez p1, :cond_a
.line 486
new-instance v0, Ljava/lang/NullPointerException;
const-string v1, "alias == null"
invoke-direct {v0, v1}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
throw v0
.line 488
:cond_a
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keys:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v0, p1}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->get(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
if-nez v0, :cond_1c
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->certs:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v0, p1}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->get(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
if-nez v0, :cond_1c
.line 490
const/4 v0, 0x0
.line 492
:goto_1b
return-object v0
:cond_1c
new-instance v0, Ljava/util/Date;
invoke-direct {v0}, Ljava/util/Date;-><init>()V
goto :goto_1b
.end method
.method public engineGetKey(Ljava/lang/String;[C)Ljava/security/Key;
.registers 5
.prologue
.line 500
if-nez p1, :cond_a
.line 502
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "null alias passed to getKey."
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 505
:cond_a
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keys:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v0, p1}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->get(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/Key;
return-object v0
.end method
.method public engineIsCertificateEntry(Ljava/lang/String;)Z
.registers 3
.prologue
.line 511
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->certs:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v0, p1}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->get(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
if-eqz v0, :cond_12
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keys:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v0, p1}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->get(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
if-nez v0, :cond_12
const/4 v0, 0x1
:goto_11
return v0
:cond_12
const/4 v0, 0x0
goto :goto_11
.end method
.method public engineIsKeyEntry(Ljava/lang/String;)Z
.registers 3
.prologue
.line 517
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keys:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v0, p1}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->get(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
if-eqz v0, :cond_a
const/4 v0, 0x1
:goto_9
return v0
:cond_a
const/4 v0, 0x0
goto :goto_9
.end method
.method public engineLoad(Ljava/io/InputStream;[C)V
.registers 21
.prologue
.line 769
if-nez p1, :cond_3
.line 1209
:cond_2
return-void
.line 774
:cond_3
if-nez p2, :cond_d
.line 776
new-instance v2, Ljava/lang/NullPointerException;
const-string v3, "No password supplied for PKCS#12 KeyStore."
invoke-direct {v2, v3}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
throw v2
.line 779
:cond_d
new-instance v2, Ljava/io/BufferedInputStream;
move-object/from16 v0, p1
invoke-direct {v2, v0}, Ljava/io/BufferedInputStream;-><init>(Ljava/io/InputStream;)V
.line 781
const/16 v3, 0xa
invoke-virtual {v2, v3}, Ljava/io/BufferedInputStream;->mark(I)V
.line 783
invoke-virtual {v2}, Ljava/io/BufferedInputStream;->read()I
move-result v3
.line 785
const/16 v4, 0x30
if-eq v3, v4, :cond_29
.line 787
new-instance v2, Ljava/io/IOException;
const-string v3, "stream does not represent a PKCS12 key store"
invoke-direct {v2, v3}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
throw v2
.line 790
:cond_29
invoke-virtual {v2}, Ljava/io/BufferedInputStream;->reset()V
.line 792
new-instance v3, Lorg/spongycastle/asn1/ASN1InputStream;
invoke-direct {v3, v2}, Lorg/spongycastle/asn1/ASN1InputStream;-><init>(Ljava/io/InputStream;)V
.line 793
invoke-virtual {v3}, Lorg/spongycastle/asn1/ASN1InputStream;->readObject()Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v2
check-cast v2, Lorg/spongycastle/asn1/ASN1Sequence;
.line 794
invoke-static {v2}, Lorg/spongycastle/asn1/pkcs/Pfx;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/pkcs/Pfx;
move-result-object v2
.line 795
invoke-virtual {v2}, Lorg/spongycastle/asn1/pkcs/Pfx;->getAuthSafe()Lorg/spongycastle/asn1/pkcs/ContentInfo;
move-result-object v10
.line 796
new-instance v14, Ljava/util/Vector;
invoke-direct {v14}, Ljava/util/Vector;-><init>()V
.line 797
const/4 v11, 0x0
.line 798
const/4 v9, 0x0
.line 800
invoke-virtual {v2}, Lorg/spongycastle/asn1/pkcs/Pfx;->getMacData()Lorg/spongycastle/asn1/pkcs/MacData;
move-result-object v3
if-eqz v3, :cond_5f4
.line 802
invoke-virtual {v2}, Lorg/spongycastle/asn1/pkcs/Pfx;->getMacData()Lorg/spongycastle/asn1/pkcs/MacData;
move-result-object v2
.line 803
invoke-virtual {v2}, Lorg/spongycastle/asn1/pkcs/MacData;->getMac()Lorg/spongycastle/asn1/x509/DigestInfo;
move-result-object v12
.line 804
invoke-virtual {v12}, Lorg/spongycastle/asn1/x509/DigestInfo;->getAlgorithmId()Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;
move-result-object v13
.line 805
invoke-virtual {v2}, Lorg/spongycastle/asn1/pkcs/MacData;->getSalt()[B
move-result-object v4
.line 806
invoke-virtual {v2}, Lorg/spongycastle/asn1/pkcs/MacData;->getIterationCount()Ljava/math/BigInteger;
move-result-object v2
invoke-virtual {v2}, Ljava/math/BigInteger;->intValue()I
move-result v5
.line 808
invoke-virtual {v10}, Lorg/spongycastle/asn1/pkcs/ContentInfo;->getContent()Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v2
check-cast v2, Lorg/spongycastle/asn1/ASN1OctetString;
invoke-virtual {v2}, Lorg/spongycastle/asn1/ASN1OctetString;->getOctets()[B
move-result-object v8
.line 812
:try_start_6e
invoke-virtual {v13}, Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;->getAlgorithm()Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v3
const/4 v7, 0x0
move-object/from16 v2, p0
move-object/from16 v6, p2
invoke-direct/range {v2 .. v8}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->calculatePbeMac(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;[BI[CZ[B)[B
move-result-object v2
.line 813
invoke-virtual {v12}, Lorg/spongycastle/asn1/x509/DigestInfo;->getDigest()[B
move-result-object v12
.line 815
invoke-static {v2, v12}, Lorg/spongycastle/util/Arrays;->constantTimeAreEqual([B[B)Z
move-result v2
if-nez v2, :cond_5f1
.line 817
move-object/from16 v0, p2
array-length v2, v0
if-lez v2, :cond_94
.line 819
new-instance v2, Ljava/io/IOException;
const-string v3, "PKCS12 key store mac invalid - wrong password or corrupted file."
invoke-direct {v2, v3}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
throw v2
:try_end_92
.catch Ljava/io/IOException; {:try_start_6e .. :try_end_92} :catch_92
.catch Ljava/lang/Exception; {:try_start_6e .. :try_end_92} :catch_af
.line 835
:catch_92
move-exception v2
throw v2
.line 823
:cond_94
:try_start_94
invoke-virtual {v13}, Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;->getAlgorithm()Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v3
const/4 v7, 0x1
move-object/from16 v2, p0
move-object/from16 v6, p2
invoke-direct/range {v2 .. v8}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->calculatePbeMac(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;[BI[CZ[B)[B
move-result-object v2
.line 825
invoke-static {v2, v12}, Lorg/spongycastle/util/Arrays;->constantTimeAreEqual([B[B)Z
move-result v2
if-nez v2, :cond_c9
.line 827
new-instance v2, Ljava/io/IOException;
const-string v3, "PKCS12 key store mac invalid - wrong password or corrupted file."
invoke-direct {v2, v3}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
throw v2
:try_end_af
.catch Ljava/io/IOException; {:try_start_94 .. :try_end_af} :catch_92
.catch Ljava/lang/Exception; {:try_start_94 .. :try_end_af} :catch_af
.line 837
:catch_af
move-exception v2
.line 839
new-instance v3, Ljava/io/IOException;
new-instance v4, Ljava/lang/StringBuilder;
const-string v5, "error constructing MAC: "
invoke-direct {v4, v5}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v2}, Ljava/lang/Exception;->toString()Ljava/lang/String;
move-result-object v2
invoke-virtual {v4, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-direct {v3, v2}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
throw v3
.line 830
:cond_c9
const/4 v2, 0x1
:goto_ca
move v6, v2
.line 843
:goto_cb
new-instance v2, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
const/4 v3, 0x0
invoke-direct {v2, v3}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;-><init>(Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$1;)V
move-object/from16 v0, p0
iput-object v2, v0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keys:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
.line 844
new-instance v2, Ljava/util/Hashtable;
invoke-direct {v2}, Ljava/util/Hashtable;-><init>()V
move-object/from16 v0, p0
iput-object v2, v0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->localIds:Ljava/util/Hashtable;
.line 846
invoke-virtual {v10}, Lorg/spongycastle/asn1/pkcs/ContentInfo;->getContentType()Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v2
sget-object v3, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->data:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v2, v3}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_478
.line 848
new-instance v3, Lorg/spongycastle/asn1/ASN1InputStream;
invoke-virtual {v10}, Lorg/spongycastle/asn1/pkcs/ContentInfo;->getContent()Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v2
check-cast v2, Lorg/spongycastle/asn1/ASN1OctetString;
invoke-virtual {v2}, Lorg/spongycastle/asn1/ASN1OctetString;->getOctets()[B
move-result-object v2
invoke-direct {v3, v2}, Lorg/spongycastle/asn1/ASN1InputStream;-><init>([B)V
.line 850
invoke-virtual {v3}, Lorg/spongycastle/asn1/ASN1InputStream;->readObject()Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v2
invoke-static {v2}, Lorg/spongycastle/asn1/pkcs/AuthenticatedSafe;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/pkcs/AuthenticatedSafe;
move-result-object v2
.line 851
invoke-virtual {v2}, Lorg/spongycastle/asn1/pkcs/AuthenticatedSafe;->getContentInfo()[Lorg/spongycastle/asn1/pkcs/ContentInfo;
move-result-object v15
.line 853
const/4 v2, 0x0
move v13, v2
:goto_107
array-length v2, v15
if-eq v13, v2, :cond_478
.line 855
aget-object v2, v15, v13
invoke-virtual {v2}, Lorg/spongycastle/asn1/pkcs/ContentInfo;->getContentType()Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v2
sget-object v3, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->data:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v2, v3}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_246
.line 857
new-instance v3, Lorg/spongycastle/asn1/ASN1InputStream;
aget-object v2, v15, v13
invoke-virtual {v2}, Lorg/spongycastle/asn1/pkcs/ContentInfo;->getContent()Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v2
check-cast v2, Lorg/spongycastle/asn1/ASN1OctetString;
invoke-virtual {v2}, Lorg/spongycastle/asn1/ASN1OctetString;->getOctets()[B
move-result-object v2
invoke-direct {v3, v2}, Lorg/spongycastle/asn1/ASN1InputStream;-><init>([B)V
.line 858
invoke-virtual {v3}, Lorg/spongycastle/asn1/ASN1InputStream;->readObject()Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v2
move-object v7, v2
check-cast v7, Lorg/spongycastle/asn1/ASN1Sequence;
.line 860
const/4 v2, 0x0
move v12, v2
:goto_132
invoke-virtual {v7}, Lorg/spongycastle/asn1/ASN1Sequence;->size()I
move-result v2
if-eq v12, v2, :cond_473
.line 862
invoke-virtual {v7, v12}, Lorg/spongycastle/asn1/ASN1Sequence;->getObjectAt(I)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v2
invoke-static {v2}, Lorg/spongycastle/asn1/pkcs/SafeBag;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/pkcs/SafeBag;
move-result-object v3
.line 863
invoke-virtual {v3}, Lorg/spongycastle/asn1/pkcs/SafeBag;->getBagId()Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v2
sget-object v4, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->pkcs8ShroudedKeyBag:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v2, v4}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_212
.line 865
invoke-virtual {v3}, Lorg/spongycastle/asn1/pkcs/SafeBag;->getBagValue()Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v2
invoke-static {v2}, Lorg/spongycastle/asn1/pkcs/EncryptedPrivateKeyInfo;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/pkcs/EncryptedPrivateKeyInfo;
move-result-object v2
.line 866
invoke-virtual {v2}, Lorg/spongycastle/asn1/pkcs/EncryptedPrivateKeyInfo;->getEncryptionAlgorithm()Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;
move-result-object v4
invoke-virtual {v2}, Lorg/spongycastle/asn1/pkcs/EncryptedPrivateKeyInfo;->getEncryptedData()[B
move-result-object v2
move-object/from16 v0, p0
move-object/from16 v1, p2
invoke-virtual {v0, v4, v2, v1, v6}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->unwrapKey(Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;[B[CZ)Ljava/security/PrivateKey;
move-result-object v5
move-object v4, v5
.line 871
check-cast v4, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;
.line 872
const/4 v2, 0x0
.line 873
const/4 v8, 0x0
.line 875
invoke-virtual {v3}, Lorg/spongycastle/asn1/pkcs/SafeBag;->getBagAttributes()Lorg/spongycastle/asn1/ASN1Set;
move-result-object v9
if-eqz v9, :cond_1de
.line 877
invoke-virtual {v3}, Lorg/spongycastle/asn1/pkcs/SafeBag;->getBagAttributes()Lorg/spongycastle/asn1/ASN1Set;
move-result-object v3
invoke-virtual {v3}, Lorg/spongycastle/asn1/ASN1Set;->getObjects()Ljava/util/Enumeration;
move-result-object v16
move-object v9, v2
.line 878
:goto_178
invoke-interface/range {v16 .. v16}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v2
if-eqz v2, :cond_1df
.line 880
invoke-interface/range {v16 .. v16}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v2
check-cast v2, Lorg/spongycastle/asn1/ASN1Sequence;
.line 881
const/4 v3, 0x0
invoke-virtual {v2, v3}, Lorg/spongycastle/asn1/ASN1Sequence;->getObjectAt(I)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v3
check-cast v3, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
.line 882
const/4 v10, 0x1
invoke-virtual {v2, v10}, Lorg/spongycastle/asn1/ASN1Sequence;->getObjectAt(I)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v2
check-cast v2, Lorg/spongycastle/asn1/ASN1Set;
.line 883
const/4 v10, 0x0
.line 885
invoke-virtual {v2}, Lorg/spongycastle/asn1/ASN1Set;->size()I
move-result v17
if-lez v17, :cond_5ee
.line 887
const/4 v10, 0x0
invoke-virtual {v2, v10}, Lorg/spongycastle/asn1/ASN1Set;->getObjectAt(I)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v2
check-cast v2, Lorg/spongycastle/asn1/ASN1Primitive;
.line 889
invoke-interface {v4, v3}, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;->getBagAttribute(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v10
.line 890
if-eqz v10, :cond_1b8
.line 893
invoke-interface {v10}, Lorg/spongycastle/asn1/ASN1Encodable;->toASN1Primitive()Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v10
invoke-virtual {v10, v2}, Lorg/spongycastle/asn1/ASN1Primitive;->equals(Ljava/lang/Object;)Z
move-result v10
if-nez v10, :cond_1bb
.line 895
new-instance v2, Ljava/io/IOException;
const-string v3, "attempt to add existing attribute with different value"
invoke-direct {v2, v3}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
throw v2
.line 901
:cond_1b8
invoke-interface {v4, v3, v2}, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;->setBagAttribute(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 905
:cond_1bb
:goto_1bb
sget-object v10, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->pkcs_9_at_friendlyName:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v3, v10}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->equals(Ljava/lang/Object;)Z
move-result v10
if-eqz v10, :cond_1d2
.line 907
check-cast v2, Lorg/spongycastle/asn1/DERBMPString;
invoke-virtual {v2}, Lorg/spongycastle/asn1/DERBMPString;->getString()Ljava/lang/String;
move-result-object v2
.line 908
move-object/from16 v0, p0
iget-object v3, v0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keys:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v3, v2, v5}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->put(Ljava/lang/String;Ljava/lang/Object;)V
move-object v9, v2
goto :goto_178
.line 910
:cond_1d2
sget-object v10, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->pkcs_9_at_localKeyId:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v3, v10}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->equals(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_5eb
.line 912
check-cast v2, Lorg/spongycastle/asn1/ASN1OctetString;
:goto_1dc
move-object v8, v2
.line 914
goto :goto_178
:cond_1de
move-object v9, v2
.line 917
:cond_1df
if-eqz v8, :cond_207
.line 919
new-instance v2, Ljava/lang/String;
invoke-virtual {v8}, Lorg/spongycastle/asn1/ASN1OctetString;->getOctets()[B
move-result-object v3
invoke-static {v3}, Lorg/spongycastle/util/encoders/Hex;->encode([B)[B
move-result-object v3
invoke-direct {v2, v3}, Ljava/lang/String;-><init>([B)V
.line 921
if-nez v9, :cond_1fe
.line 923
move-object/from16 v0, p0
iget-object v3, v0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keys:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v3, v2, v5}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->put(Ljava/lang/String;Ljava/lang/Object;)V
move v2, v11
.line 860
:goto_1f8
add-int/lit8 v3, v12, 0x1
move v12, v3
move v11, v2
goto/16 :goto_132
.line 927
:cond_1fe
move-object/from16 v0, p0
iget-object v3, v0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->localIds:Ljava/util/Hashtable;
invoke-virtual {v3, v9, v2}, Ljava/util/Hashtable;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
move v2, v11
.line 929
goto :goto_1f8
.line 932
:cond_207
const/4 v2, 0x1
.line 933
move-object/from16 v0, p0
iget-object v3, v0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keys:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
const-string v4, "unmarked"
invoke-virtual {v3, v4, v5}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->put(Ljava/lang/String;Ljava/lang/Object;)V
goto :goto_1f8
.line 936
:cond_212
invoke-virtual {v3}, Lorg/spongycastle/asn1/pkcs/SafeBag;->getBagId()Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v2
sget-object v4, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->certBag:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v2, v4}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_223
.line 938
invoke-virtual {v14, v3}, Ljava/util/Vector;->addElement(Ljava/lang/Object;)V
move v2, v11
goto :goto_1f8
.line 942
:cond_223
sget-object v2, Ljava/lang/System;->out:Ljava/io/PrintStream;
new-instance v4, Ljava/lang/StringBuilder;
const-string v5, "extra in data "
invoke-direct {v4, v5}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v3}, Lorg/spongycastle/asn1/pkcs/SafeBag;->getBagId()Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v5
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v4
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v4
invoke-virtual {v2, v4}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
.line 943
sget-object v2, Ljava/lang/System;->out:Ljava/io/PrintStream;
invoke-static {v3}, Lorg/spongycastle/asn1/util/ASN1Dump;->dumpAsString(Ljava/lang/Object;)Ljava/lang/String;
move-result-object v3
invoke-virtual {v2, v3}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
move v2, v11
goto :goto_1f8
.line 947
:cond_246
aget-object v2, v15, v13
invoke-virtual {v2}, Lorg/spongycastle/asn1/pkcs/ContentInfo;->getContentType()Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v2
sget-object v3, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->encryptedData:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v2, v3}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_437
.line 949
aget-object v2, v15, v13
invoke-virtual {v2}, Lorg/spongycastle/asn1/pkcs/ContentInfo;->getContent()Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v2
invoke-static {v2}, Lorg/spongycastle/asn1/pkcs/EncryptedData;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/pkcs/EncryptedData;
move-result-object v2
.line 950
const/4 v3, 0x0
invoke-virtual {v2}, Lorg/spongycastle/asn1/pkcs/EncryptedData;->getEncryptionAlgorithm()Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;
move-result-object v4
.line 951
invoke-virtual {v2}, Lorg/spongycastle/asn1/pkcs/EncryptedData;->getContent()Lorg/spongycastle/asn1/ASN1OctetString;
move-result-object v2
invoke-virtual {v2}, Lorg/spongycastle/asn1/ASN1OctetString;->getOctets()[B
move-result-object v7
move-object/from16 v2, p0
move-object/from16 v5, p2
.line 950
invoke-virtual/range {v2 .. v7}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->cryptData(ZLorg/spongycastle/asn1/x509/AlgorithmIdentifier;[CZ[B)[B
move-result-object v2
.line 952
invoke-static {v2}, Lorg/spongycastle/asn1/ASN1Primitive;->fromByteArray([B)Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v2
move-object v7, v2
check-cast v7, Lorg/spongycastle/asn1/ASN1Sequence;
.line 954
const/4 v2, 0x0
move v12, v2
:goto_27c
invoke-virtual {v7}, Lorg/spongycastle/asn1/ASN1Sequence;->size()I
move-result v2
if-eq v12, v2, :cond_473
.line 956
invoke-virtual {v7, v12}, Lorg/spongycastle/asn1/ASN1Sequence;->getObjectAt(I)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v2
invoke-static {v2}, Lorg/spongycastle/asn1/pkcs/SafeBag;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/pkcs/SafeBag;
move-result-object v9
.line 958
invoke-virtual {v9}, Lorg/spongycastle/asn1/pkcs/SafeBag;->getBagId()Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v2
sget-object v3, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->certBag:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v2, v3}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_29d
.line 960
invoke-virtual {v14, v9}, Ljava/util/Vector;->addElement(Ljava/lang/Object;)V
.line 954
:goto_299
add-int/lit8 v2, v12, 0x1
move v12, v2
goto :goto_27c
.line 962
:cond_29d
invoke-virtual {v9}, Lorg/spongycastle/asn1/pkcs/SafeBag;->getBagId()Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v2
sget-object v3, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->pkcs8ShroudedKeyBag:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v2, v3}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_356
.line 964
invoke-virtual {v9}, Lorg/spongycastle/asn1/pkcs/SafeBag;->getBagValue()Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v2
invoke-static {v2}, Lorg/spongycastle/asn1/pkcs/EncryptedPrivateKeyInfo;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/pkcs/EncryptedPrivateKeyInfo;
move-result-object v2
.line 965
invoke-virtual {v2}, Lorg/spongycastle/asn1/pkcs/EncryptedPrivateKeyInfo;->getEncryptionAlgorithm()Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;
move-result-object v3
invoke-virtual {v2}, Lorg/spongycastle/asn1/pkcs/EncryptedPrivateKeyInfo;->getEncryptedData()[B
move-result-object v2
move-object/from16 v0, p0
move-object/from16 v1, p2
invoke-virtual {v0, v3, v2, v1, v6}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->unwrapKey(Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;[B[CZ)Ljava/security/PrivateKey;
move-result-object v5
move-object v4, v5
.line 970
check-cast v4, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;
.line 971
const/4 v2, 0x0
.line 972
const/4 v8, 0x0
.line 974
invoke-virtual {v9}, Lorg/spongycastle/asn1/pkcs/SafeBag;->getBagAttributes()Lorg/spongycastle/asn1/ASN1Set;
move-result-object v3
invoke-virtual {v3}, Lorg/spongycastle/asn1/ASN1Set;->getObjects()Ljava/util/Enumeration;
move-result-object v16
move-object v9, v2
.line 975
:goto_2cf
invoke-interface/range {v16 .. v16}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v2
if-eqz v2, :cond_335
.line 977
invoke-interface/range {v16 .. v16}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v2
check-cast v2, Lorg/spongycastle/asn1/ASN1Sequence;
.line 978
const/4 v3, 0x0
invoke-virtual {v2, v3}, Lorg/spongycastle/asn1/ASN1Sequence;->getObjectAt(I)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v3
check-cast v3, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
.line 979
const/4 v10, 0x1
invoke-virtual {v2, v10}, Lorg/spongycastle/asn1/ASN1Sequence;->getObjectAt(I)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v2
check-cast v2, Lorg/spongycastle/asn1/ASN1Set;
.line 980
const/4 v10, 0x0
.line 982
invoke-virtual {v2}, Lorg/spongycastle/asn1/ASN1Set;->size()I
move-result v17
if-lez v17, :cond_5e8
.line 984
const/4 v10, 0x0
invoke-virtual {v2, v10}, Lorg/spongycastle/asn1/ASN1Set;->getObjectAt(I)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v2
check-cast v2, Lorg/spongycastle/asn1/ASN1Primitive;
.line 986
invoke-interface {v4, v3}, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;->getBagAttribute(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v10
.line 987
if-eqz v10, :cond_30f
.line 990
invoke-interface {v10}, Lorg/spongycastle/asn1/ASN1Encodable;->toASN1Primitive()Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v10
invoke-virtual {v10, v2}, Lorg/spongycastle/asn1/ASN1Primitive;->equals(Ljava/lang/Object;)Z
move-result v10
if-nez v10, :cond_312
.line 992
new-instance v2, Ljava/io/IOException;
const-string v3, "attempt to add existing attribute with different value"
invoke-direct {v2, v3}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
throw v2
.line 998
:cond_30f
invoke-interface {v4, v3, v2}, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;->setBagAttribute(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1002
:cond_312
:goto_312
sget-object v10, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->pkcs_9_at_friendlyName:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v3, v10}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->equals(Ljava/lang/Object;)Z
move-result v10
if-eqz v10, :cond_329
.line 1004
check-cast v2, Lorg/spongycastle/asn1/DERBMPString;
invoke-virtual {v2}, Lorg/spongycastle/asn1/DERBMPString;->getString()Ljava/lang/String;
move-result-object v2
.line 1005
move-object/from16 v0, p0
iget-object v3, v0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keys:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v3, v2, v5}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->put(Ljava/lang/String;Ljava/lang/Object;)V
move-object v9, v2
goto :goto_2cf
.line 1007
:cond_329
sget-object v10, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->pkcs_9_at_localKeyId:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v3, v10}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->equals(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_5e5
.line 1009
check-cast v2, Lorg/spongycastle/asn1/ASN1OctetString;
:goto_333
move-object v8, v2
.line 1011
goto :goto_2cf
.line 1013
:cond_335
new-instance v2, Ljava/lang/String;
invoke-virtual {v8}, Lorg/spongycastle/asn1/ASN1OctetString;->getOctets()[B
move-result-object v3
invoke-static {v3}, Lorg/spongycastle/util/encoders/Hex;->encode([B)[B
move-result-object v3
invoke-direct {v2, v3}, Ljava/lang/String;-><init>([B)V
.line 1015
if-nez v9, :cond_34d
.line 1017
move-object/from16 v0, p0
iget-object v3, v0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keys:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v3, v2, v5}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->put(Ljava/lang/String;Ljava/lang/Object;)V
goto/16 :goto_299
.line 1021
:cond_34d
move-object/from16 v0, p0
iget-object v3, v0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->localIds:Ljava/util/Hashtable;
invoke-virtual {v3, v9, v2}, Ljava/util/Hashtable;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
goto/16 :goto_299
.line 1024
:cond_356
invoke-virtual {v9}, Lorg/spongycastle/asn1/pkcs/SafeBag;->getBagId()Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v2
sget-object v3, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keyBag:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v2, v3}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_414
.line 1026
invoke-virtual {v9}, Lorg/spongycastle/asn1/pkcs/SafeBag;->getBagValue()Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v2
invoke-static {v2}, Lorg/spongycastle/asn1/pkcs/PrivateKeyInfo;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/pkcs/PrivateKeyInfo;
move-result-object v2
.line 1027
invoke-static {v2}, Lorg/spongycastle/jce/provider/BouncyCastleProvider;->getPrivateKey(Lorg/spongycastle/asn1/pkcs/PrivateKeyInfo;)Ljava/security/PrivateKey;
move-result-object v4
move-object v3, v4
.line 1032
check-cast v3, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;
.line 1033
const/4 v2, 0x0
.line 1034
const/4 v5, 0x0
.line 1036
invoke-virtual {v9}, Lorg/spongycastle/asn1/pkcs/SafeBag;->getBagAttributes()Lorg/spongycastle/asn1/ASN1Set;
move-result-object v8
invoke-virtual {v8}, Lorg/spongycastle/asn1/ASN1Set;->getObjects()Ljava/util/Enumeration;
move-result-object v9
move-object v8, v2
.line 1037
:goto_37c
invoke-interface {v9}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v2
if-eqz v2, :cond_3f3
.line 1039
invoke-interface {v9}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v2
invoke-static {v2}, Lorg/spongycastle/asn1/ASN1Sequence;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/ASN1Sequence;
move-result-object v2
.line 1040
const/4 v10, 0x0
invoke-virtual {v2, v10}, Lorg/spongycastle/asn1/ASN1Sequence;->getObjectAt(I)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v10
invoke-static {v10}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v10
.line 1041
const/16 v16, 0x1
move/from16 v0, v16
invoke-virtual {v2, v0}, Lorg/spongycastle/asn1/ASN1Sequence;->getObjectAt(I)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v2
invoke-static {v2}, Lorg/spongycastle/asn1/ASN1Set;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/ASN1Set;
move-result-object v2
.line 1044
invoke-virtual {v2}, Lorg/spongycastle/asn1/ASN1Set;->size()I
move-result v16
if-lez v16, :cond_5e2
.line 1046
const/16 v16, 0x0
move/from16 v0, v16
invoke-virtual {v2, v0}, Lorg/spongycastle/asn1/ASN1Set;->getObjectAt(I)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v2
check-cast v2, Lorg/spongycastle/asn1/ASN1Primitive;
.line 1048
invoke-interface {v3, v10}, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;->getBagAttribute(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v16
.line 1049
if-eqz v16, :cond_3c9
.line 1052
invoke-interface/range {v16 .. v16}, Lorg/spongycastle/asn1/ASN1Encodable;->toASN1Primitive()Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v16
move-object/from16 v0, v16
invoke-virtual {v0, v2}, Lorg/spongycastle/asn1/ASN1Primitive;->equals(Ljava/lang/Object;)Z
move-result v16
if-nez v16, :cond_3cc
.line 1054
new-instance v2, Ljava/io/IOException;
const-string v3, "attempt to add existing attribute with different value"
invoke-direct {v2, v3}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
throw v2
.line 1060
:cond_3c9
invoke-interface {v3, v10, v2}, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;->setBagAttribute(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1063
:cond_3cc
sget-object v16, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->pkcs_9_at_friendlyName:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-object/from16 v0, v16
invoke-virtual {v10, v0}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->equals(Ljava/lang/Object;)Z
move-result v16
if-eqz v16, :cond_3e5
.line 1065
check-cast v2, Lorg/spongycastle/asn1/DERBMPString;
invoke-virtual {v2}, Lorg/spongycastle/asn1/DERBMPString;->getString()Ljava/lang/String;
move-result-object v2
.line 1066
move-object/from16 v0, p0
iget-object v8, v0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keys:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v8, v2, v4}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->put(Ljava/lang/String;Ljava/lang/Object;)V
move-object v8, v2
goto :goto_37c
.line 1068
:cond_3e5
sget-object v16, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->pkcs_9_at_localKeyId:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-object/from16 v0, v16
invoke-virtual {v10, v0}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->equals(Ljava/lang/Object;)Z
move-result v10
if-eqz v10, :cond_5e2
.line 1070
check-cast v2, Lorg/spongycastle/asn1/ASN1OctetString;
:goto_3f1
move-object v5, v2
.line 1073
goto :goto_37c
.line 1075
:cond_3f3
new-instance v2, Ljava/lang/String;
invoke-virtual {v5}, Lorg/spongycastle/asn1/ASN1OctetString;->getOctets()[B
move-result-object v3
invoke-static {v3}, Lorg/spongycastle/util/encoders/Hex;->encode([B)[B
move-result-object v3
invoke-direct {v2, v3}, Ljava/lang/String;-><init>([B)V
.line 1077
if-nez v8, :cond_40b
.line 1079
move-object/from16 v0, p0
iget-object v3, v0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keys:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v3, v2, v4}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->put(Ljava/lang/String;Ljava/lang/Object;)V
goto/16 :goto_299
.line 1083
:cond_40b
move-object/from16 v0, p0
iget-object v3, v0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->localIds:Ljava/util/Hashtable;
invoke-virtual {v3, v8, v2}, Ljava/util/Hashtable;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
goto/16 :goto_299
.line 1088
:cond_414
sget-object v2, Ljava/lang/System;->out:Ljava/io/PrintStream;
new-instance v3, Ljava/lang/StringBuilder;
const-string v4, "extra in encryptedData "
invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v9}, Lorg/spongycastle/asn1/pkcs/SafeBag;->getBagId()Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v4
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v3
invoke-virtual {v2, v3}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
.line 1089
sget-object v2, Ljava/lang/System;->out:Ljava/io/PrintStream;
invoke-static {v9}, Lorg/spongycastle/asn1/util/ASN1Dump;->dumpAsString(Ljava/lang/Object;)Ljava/lang/String;
move-result-object v3
invoke-virtual {v2, v3}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
goto/16 :goto_299
.line 1095
:cond_437
sget-object v2, Ljava/lang/System;->out:Ljava/io/PrintStream;
new-instance v3, Ljava/lang/StringBuilder;
const-string v4, "extra "
invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
aget-object v4, v15, v13
invoke-virtual {v4}, Lorg/spongycastle/asn1/pkcs/ContentInfo;->getContentType()Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v4
invoke-virtual {v4}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v4
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v3
invoke-virtual {v2, v3}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
.line 1096
sget-object v2, Ljava/lang/System;->out:Ljava/io/PrintStream;
new-instance v3, Ljava/lang/StringBuilder;
const-string v4, "extra "
invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
aget-object v4, v15, v13
invoke-virtual {v4}, Lorg/spongycastle/asn1/pkcs/ContentInfo;->getContent()Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v4
invoke-static {v4}, Lorg/spongycastle/asn1/util/ASN1Dump;->dumpAsString(Ljava/lang/Object;)Ljava/lang/String;
move-result-object v4
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v3
invoke-virtual {v2, v3}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
.line 853
:cond_473
add-int/lit8 v2, v13, 0x1
move v13, v2
goto/16 :goto_107
.line 1101
:cond_478
new-instance v2, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
const/4 v3, 0x0
invoke-direct {v2, v3}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;-><init>(Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$1;)V
move-object/from16 v0, p0
iput-object v2, v0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->certs:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
.line 1102
new-instance v2, Ljava/util/Hashtable;
invoke-direct {v2}, Ljava/util/Hashtable;-><init>()V
move-object/from16 v0, p0
iput-object v2, v0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->chainCerts:Ljava/util/Hashtable;
.line 1103
new-instance v2, Ljava/util/Hashtable;
invoke-direct {v2}, Ljava/util/Hashtable;-><init>()V
move-object/from16 v0, p0
iput-object v2, v0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keyCerts:Ljava/util/Hashtable;
.line 1105
const/4 v2, 0x0
move v5, v2
:goto_496
invoke-virtual {v14}, Ljava/util/Vector;->size()I
move-result v2
if-eq v5, v2, :cond_2
.line 1107
invoke-virtual {v14, v5}, Ljava/util/Vector;->elementAt(I)Ljava/lang/Object;
move-result-object v2
check-cast v2, Lorg/spongycastle/asn1/pkcs/SafeBag;
.line 1108
invoke-virtual {v2}, Lorg/spongycastle/asn1/pkcs/SafeBag;->getBagValue()Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v3
invoke-static {v3}, Lorg/spongycastle/asn1/pkcs/CertBag;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/pkcs/CertBag;
move-result-object v3
.line 1110
invoke-virtual {v3}, Lorg/spongycastle/asn1/pkcs/CertBag;->getCertId()Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v4
sget-object v6, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->x509Certificate:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v4, v6}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->equals(Ljava/lang/Object;)Z
move-result v4
if-nez v4, :cond_4cf
.line 1112
new-instance v2, Ljava/lang/RuntimeException;
new-instance v4, Ljava/lang/StringBuilder;
const-string v5, "Unsupported certificate type: "
invoke-direct {v4, v5}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v3}, Lorg/spongycastle/asn1/pkcs/CertBag;->getCertId()Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v3
invoke-virtual {v4, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v3
invoke-direct {v2, v3}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v2
.line 1119
:cond_4cf
:try_start_4cf
new-instance v4, Ljava/io/ByteArrayInputStream;
.line 1120
invoke-virtual {v3}, Lorg/spongycastle/asn1/pkcs/CertBag;->getCertValue()Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v3
check-cast v3, Lorg/spongycastle/asn1/ASN1OctetString;
invoke-virtual {v3}, Lorg/spongycastle/asn1/ASN1OctetString;->getOctets()[B
move-result-object v3
invoke-direct {v4, v3}, Ljava/io/ByteArrayInputStream;-><init>([B)V
.line 1121
move-object/from16 v0, p0
iget-object v3, v0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->certFact:Ljava/security/cert/CertificateFactory;
invoke-virtual {v3, v4}, Ljava/security/cert/CertificateFactory;->generateCertificate(Ljava/io/InputStream;)Ljava/security/cert/Certificate;
:try_end_4e5
.catch Ljava/lang/Exception; {:try_start_4cf .. :try_end_4e5} :catch_543
move-result-object v4
.line 1131
const/4 v6, 0x0
.line 1132
const/4 v3, 0x0
.line 1134
invoke-virtual {v2}, Lorg/spongycastle/asn1/pkcs/SafeBag;->getBagAttributes()Lorg/spongycastle/asn1/ASN1Set;
move-result-object v7
if-eqz v7, :cond_56d
.line 1136
invoke-virtual {v2}, Lorg/spongycastle/asn1/pkcs/SafeBag;->getBagAttributes()Lorg/spongycastle/asn1/ASN1Set;
move-result-object v2
invoke-virtual {v2}, Lorg/spongycastle/asn1/ASN1Set;->getObjects()Ljava/util/Enumeration;
move-result-object v8
move-object v7, v3
.line 1137
:goto_4f7
invoke-interface {v8}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v2
if-eqz v2, :cond_56e
.line 1139
invoke-interface {v8}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v2
invoke-static {v2}, Lorg/spongycastle/asn1/ASN1Sequence;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/ASN1Sequence;
move-result-object v2
.line 1140
const/4 v3, 0x0
invoke-virtual {v2, v3}, Lorg/spongycastle/asn1/ASN1Sequence;->getObjectAt(I)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v3
invoke-static {v3}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v9
.line 1141
const/4 v3, 0x1
invoke-virtual {v2, v3}, Lorg/spongycastle/asn1/ASN1Sequence;->getObjectAt(I)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v2
invoke-static {v2}, Lorg/spongycastle/asn1/ASN1Set;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/ASN1Set;
move-result-object v2
.line 1143
invoke-virtual {v2}, Lorg/spongycastle/asn1/ASN1Set;->size()I
move-result v3
if-lez v3, :cond_5e0
.line 1145
const/4 v3, 0x0
invoke-virtual {v2, v3}, Lorg/spongycastle/asn1/ASN1Set;->getObjectAt(I)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v2
check-cast v2, Lorg/spongycastle/asn1/ASN1Primitive;
.line 1148
instance-of v3, v4, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;
if-eqz v3, :cond_551
move-object v3, v4
.line 1150
check-cast v3, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;
.line 1152
invoke-interface {v3, v9}, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;->getBagAttribute(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v10
.line 1153
if-eqz v10, :cond_54e
.line 1156
invoke-interface {v10}, Lorg/spongycastle/asn1/ASN1Encodable;->toASN1Primitive()Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v3
invoke-virtual {v3, v2}, Lorg/spongycastle/asn1/ASN1Primitive;->equals(Ljava/lang/Object;)Z
move-result v3
if-nez v3, :cond_551
.line 1158
new-instance v2, Ljava/io/IOException;
const-string v3, "attempt to add existing attribute with different value"
invoke-direct {v2, v3}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
throw v2
.line 1123
:catch_543
move-exception v2
.line 1125
new-instance v3, Ljava/lang/RuntimeException;
invoke-virtual {v2}, Ljava/lang/Exception;->toString()Ljava/lang/String;
move-result-object v2
invoke-direct {v3, v2}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v3
.line 1164
:cond_54e
invoke-interface {v3, v9, v2}, Lorg/spongycastle/jce/interfaces/PKCS12BagAttributeCarrier;->setBagAttribute(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 1168
:cond_551
sget-object v3, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->pkcs_9_at_friendlyName:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v9, v3}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->equals(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_561
.line 1170
check-cast v2, Lorg/spongycastle/asn1/DERBMPString;
invoke-virtual {v2}, Lorg/spongycastle/asn1/DERBMPString;->getString()Ljava/lang/String;
move-result-object v2
move-object v7, v2
goto :goto_4f7
.line 1172
:cond_561
sget-object v3, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->pkcs_9_at_localKeyId:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v9, v3}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->equals(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_5e0
.line 1174
check-cast v2, Lorg/spongycastle/asn1/ASN1OctetString;
:goto_56b
move-object v6, v2
.line 1177
goto :goto_4f7
:cond_56d
move-object v7, v3
.line 1180
:cond_56e
move-object/from16 v0, p0
iget-object v2, v0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->chainCerts:Ljava/util/Hashtable;
new-instance v3, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$CertId;
invoke-virtual {v4}, Ljava/security/cert/Certificate;->getPublicKey()Ljava/security/PublicKey;
move-result-object v8
move-object/from16 v0, p0
invoke-direct {v3, v0, v8}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$CertId;-><init>(Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;Ljava/security/PublicKey;)V
invoke-virtual {v2, v3, v4}, Ljava/util/Hashtable;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 1182
if-eqz v11, :cond_5c0
.line 1184
move-object/from16 v0, p0
iget-object v2, v0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keyCerts:Ljava/util/Hashtable;
invoke-virtual {v2}, Ljava/util/Hashtable;->isEmpty()Z
move-result v2
if-eqz v2, :cond_5bb
.line 1186
new-instance v2, Ljava/lang/String;
invoke-virtual {v4}, Ljava/security/cert/Certificate;->getPublicKey()Ljava/security/PublicKey;
move-result-object v3
move-object/from16 v0, p0
invoke-direct {v0, v3}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->createSubjectKeyId(Ljava/security/PublicKey;)Lorg/spongycastle/asn1/x509/SubjectKeyIdentifier;
move-result-object v3
invoke-virtual {v3}, Lorg/spongycastle/asn1/x509/SubjectKeyIdentifier;->getKeyIdentifier()[B
move-result-object v3
invoke-static {v3}, Lorg/spongycastle/util/encoders/Hex;->encode([B)[B
move-result-object v3
invoke-direct {v2, v3}, Ljava/lang/String;-><init>([B)V
.line 1188
move-object/from16 v0, p0
iget-object v3, v0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keyCerts:Ljava/util/Hashtable;
invoke-virtual {v3, v2, v4}, Ljava/util/Hashtable;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 1189
move-object/from16 v0, p0
iget-object v3, v0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keys:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
move-object/from16 v0, p0
iget-object v4, v0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keys:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
const-string v6, "unmarked"
invoke-virtual {v4, v6}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->remove(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v4
invoke-virtual {v3, v2, v4}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->put(Ljava/lang/String;Ljava/lang/Object;)V
.line 1105
:cond_5bb
:goto_5bb
add-int/lit8 v2, v5, 0x1
move v5, v2
goto/16 :goto_496
.line 1197
:cond_5c0
if-eqz v6, :cond_5d6
.line 1199
new-instance v2, Ljava/lang/String;
invoke-virtual {v6}, Lorg/spongycastle/asn1/ASN1OctetString;->getOctets()[B
move-result-object v3
invoke-static {v3}, Lorg/spongycastle/util/encoders/Hex;->encode([B)[B
move-result-object v3
invoke-direct {v2, v3}, Ljava/lang/String;-><init>([B)V
.line 1201
move-object/from16 v0, p0
iget-object v3, v0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keyCerts:Ljava/util/Hashtable;
invoke-virtual {v3, v2, v4}, Ljava/util/Hashtable;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 1203
:cond_5d6
if-eqz v7, :cond_5bb
.line 1205
move-object/from16 v0, p0
iget-object v2, v0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->certs:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v2, v7, v4}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->put(Ljava/lang/String;Ljava/lang/Object;)V
goto :goto_5bb
:cond_5e0
move-object v2, v6
goto :goto_56b
:cond_5e2
move-object v2, v5
goto/16 :goto_3f1
:cond_5e5
move-object v2, v8
goto/16 :goto_333
:cond_5e8
move-object v2, v10
goto/16 :goto_312
:cond_5eb
move-object v2, v8
goto/16 :goto_1dc
:cond_5ee
move-object v2, v10
goto/16 :goto_1bb
:cond_5f1
move v2, v9
goto/16 :goto_ca
:cond_5f4
move v6, v9
goto/16 :goto_cb
.end method
.method public engineSetCertificateEntry(Ljava/lang/String;Ljava/security/cert/Certificate;)V
.registers 6
.prologue
.line 525
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keys:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v0, p1}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->get(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
if-eqz v0, :cond_23
.line 527
new-instance v0, Ljava/security/KeyStoreException;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "There is a key entry with the name "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, "."
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljava/security/KeyStoreException;-><init>(Ljava/lang/String;)V
throw v0
.line 530
:cond_23
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->certs:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v0, p1, p2}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->put(Ljava/lang/String;Ljava/lang/Object;)V
.line 531
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->chainCerts:Ljava/util/Hashtable;
new-instance v1, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$CertId;
invoke-virtual {p2}, Ljava/security/cert/Certificate;->getPublicKey()Ljava/security/PublicKey;
move-result-object v2
invoke-direct {v1, p0, v2}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$CertId;-><init>(Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;Ljava/security/PublicKey;)V
invoke-virtual {v0, v1, p2}, Ljava/util/Hashtable;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 532
return-void
.end method
.method public engineSetKeyEntry(Ljava/lang/String;Ljava/security/Key;[C[Ljava/security/cert/Certificate;)V
.registers 9
.prologue
const/4 v0, 0x0
.line 550
instance-of v1, p2, Ljava/security/PrivateKey;
if-nez v1, :cond_d
.line 552
new-instance v0, Ljava/security/KeyStoreException;
const-string v1, "PKCS12 does not support non-PrivateKeys"
invoke-direct {v0, v1}, Ljava/security/KeyStoreException;-><init>(Ljava/lang/String;)V
throw v0
.line 555
:cond_d
instance-of v1, p2, Ljava/security/PrivateKey;
if-eqz v1, :cond_1b
if-nez p4, :cond_1b
.line 557
new-instance v0, Ljava/security/KeyStoreException;
const-string v1, "no certificate chain for private key"
invoke-direct {v0, v1}, Ljava/security/KeyStoreException;-><init>(Ljava/lang/String;)V
throw v0
.line 560
:cond_1b
iget-object v1, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keys:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v1, p1}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->get(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v1
if-eqz v1, :cond_26
.line 562
invoke-virtual {p0, p1}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->engineDeleteEntry(Ljava/lang/String;)V
.line 565
:cond_26
iget-object v1, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keys:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v1, p1, p2}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->put(Ljava/lang/String;Ljava/lang/Object;)V
.line 566
if-eqz p4, :cond_4c
.line 568
iget-object v1, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->certs:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
aget-object v2, p4, v0
invoke-virtual {v1, p1, v2}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->put(Ljava/lang/String;Ljava/lang/Object;)V
.line 570
:goto_34
array-length v1, p4
if-eq v0, v1, :cond_4c
.line 572
iget-object v1, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->chainCerts:Ljava/util/Hashtable;
new-instance v2, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$CertId;
aget-object v3, p4, v0
invoke-virtual {v3}, Ljava/security/cert/Certificate;->getPublicKey()Ljava/security/PublicKey;
move-result-object v3
invoke-direct {v2, p0, v3}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$CertId;-><init>(Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;Ljava/security/PublicKey;)V
aget-object v3, p4, v0
invoke-virtual {v1, v2, v3}, Ljava/util/Hashtable;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 570
add-int/lit8 v0, v0, 0x1
goto :goto_34
.line 575
:cond_4c
return-void
.end method
.method public engineSetKeyEntry(Ljava/lang/String;[B[Ljava/security/cert/Certificate;)V
.registers 6
.prologue
.line 540
new-instance v0, Ljava/lang/RuntimeException;
const-string v1, "operation not supported"
invoke-direct {v0, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public engineSize()I
.registers 5
.prologue
.line 579
new-instance v1, Ljava/util/Hashtable;
invoke-direct {v1}, Ljava/util/Hashtable;-><init>()V
.line 581
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->certs:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v0}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->keys()Ljava/util/Enumeration;
move-result-object v0
.line 582
:goto_b
invoke-interface {v0}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v2
if-eqz v2, :cond_1b
.line 584
invoke-interface {v0}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v2
const-string v3, "cert"
invoke-virtual {v1, v2, v3}, Ljava/util/Hashtable;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
goto :goto_b
.line 587
:cond_1b
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->keys:Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;
invoke-virtual {v0}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable;->keys()Ljava/util/Enumeration;
move-result-object v2
.line 588
:cond_21
:goto_21
invoke-interface {v2}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v0
if-eqz v0, :cond_39
.line 590
invoke-interface {v2}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/String;
.line 591
invoke-virtual {v1, v0}, Ljava/util/Hashtable;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v3
if-nez v3, :cond_21
.line 593
const-string v3, "key"
invoke-virtual {v1, v0, v3}, Ljava/util/Hashtable;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
goto :goto_21
.line 597
:cond_39
invoke-virtual {v1}, Ljava/util/Hashtable;->size()I
move-result v0
return v0
.end method
.method public engineStore(Ljava/io/OutputStream;[C)V
.registers 4
.prologue
.line 1260
const/4 v0, 0x0
invoke-direct {p0, p1, p2, v0}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->doStore(Ljava/io/OutputStream;[CZ)V
.line 1261
return-void
.end method
.method public engineStore(Ljava/security/KeyStore$LoadStoreParameter;)V
.registers 6
.prologue
.line 1215
if-nez p1, :cond_a
.line 1217
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "\'param\' arg cannot be null"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 1220
:cond_a
instance-of v0, p1, Lorg/spongycastle/jcajce/PKCS12StoreParameter;
if-nez v0, :cond_2f
instance-of v0, p1, Lorg/spongycastle/jce/provider/JDKPKCS12StoreParameter;
if-nez v0, :cond_2f
.line 1222
new-instance v0, Ljava/lang/IllegalArgumentException;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "No support for \'param\' of type "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
.line 1223
invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 1228
:cond_2f
instance-of v0, p1, Lorg/spongycastle/jcajce/PKCS12StoreParameter;
if-eqz v0, :cond_4a
move-object v0, p1
.line 1230
check-cast v0, Lorg/spongycastle/jcajce/PKCS12StoreParameter;
move-object v1, v0
.line 1239
:goto_37
invoke-interface {p1}, Ljava/security/KeyStore$LoadStoreParameter;->getProtectionParameter()Ljava/security/KeyStore$ProtectionParameter;
move-result-object v0
.line 1240
if-nez v0, :cond_62
.line 1242
const/4 v0, 0x0
.line 1254
:goto_3e
invoke-virtual {v1}, Lorg/spongycastle/jcajce/PKCS12StoreParameter;->getOutputStream()Ljava/io/OutputStream;
move-result-object v2
invoke-virtual {v1}, Lorg/spongycastle/jcajce/PKCS12StoreParameter;->isForDEREncoding()Z
move-result v1
invoke-direct {p0, v2, v0, v1}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->doStore(Ljava/io/OutputStream;[CZ)V
.line 1255
return-void
.line 1234
:cond_4a
new-instance v1, Lorg/spongycastle/jcajce/PKCS12StoreParameter;
move-object v0, p1
check-cast v0, Lorg/spongycastle/jce/provider/JDKPKCS12StoreParameter;
invoke-virtual {v0}, Lorg/spongycastle/jce/provider/JDKPKCS12StoreParameter;->getOutputStream()Ljava/io/OutputStream;
move-result-object v2
.line 1235
invoke-interface {p1}, Ljava/security/KeyStore$LoadStoreParameter;->getProtectionParameter()Ljava/security/KeyStore$ProtectionParameter;
move-result-object v3
move-object v0, p1
check-cast v0, Lorg/spongycastle/jce/provider/JDKPKCS12StoreParameter;
invoke-virtual {v0}, Lorg/spongycastle/jce/provider/JDKPKCS12StoreParameter;->isUseDEREncoding()Z
move-result v0
invoke-direct {v1, v2, v3, v0}, Lorg/spongycastle/jcajce/PKCS12StoreParameter;-><init>(Ljava/io/OutputStream;Ljava/security/KeyStore$ProtectionParameter;Z)V
goto :goto_37
.line 1244
:cond_62
instance-of v2, v0, Ljava/security/KeyStore$PasswordProtection;
if-eqz v2, :cond_6d
.line 1246
check-cast v0, Ljava/security/KeyStore$PasswordProtection;
invoke-virtual {v0}, Ljava/security/KeyStore$PasswordProtection;->getPassword()[C
move-result-object v0
goto :goto_3e
.line 1250
:cond_6d
new-instance v1, Ljava/lang/IllegalArgumentException;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "No support for protection parameter of type "
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
.line 1251
invoke-virtual {v0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v0
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {v1, v0}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v1
.end method
.method public setRandom(Ljava/security/SecureRandom;)V
.registers 2
.prologue
.line 241
iput-object p1, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->random:Ljava/security/SecureRandom;
.line 242
return-void
.end method
.method protected unwrapKey(Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;[B[CZ)Ljava/security/PrivateKey;
.registers 9
.prologue
.line 607
invoke-virtual {p1}, Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;->getAlgorithm()Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v0
.line 610
:try_start_4
sget-object v1, Lorg/spongycastle/asn1/pkcs/PKCSObjectIdentifiers;->pkcs_12PbeIds:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v0, v1}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->on(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;)Z
move-result v1
if-eqz v1, :cond_42
.line 612
invoke-virtual {p1}, Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;->getParameters()Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v1
invoke-static {v1}, Lorg/spongycastle/asn1/pkcs/PKCS12PBEParams;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/pkcs/PKCS12PBEParams;
move-result-object v1
.line 613
new-instance v2, Ljavax/crypto/spec/PBEParameterSpec;
.line 614
invoke-virtual {v1}, Lorg/spongycastle/asn1/pkcs/PKCS12PBEParams;->getIV()[B
move-result-object v3
.line 615
invoke-virtual {v1}, Lorg/spongycastle/asn1/pkcs/PKCS12PBEParams;->getIterations()Ljava/math/BigInteger;
move-result-object v1
invoke-virtual {v1}, Ljava/math/BigInteger;->intValue()I
move-result v1
invoke-direct {v2, v3, v1}, Ljavax/crypto/spec/PBEParameterSpec;-><init>([BI)V
.line 617
iget-object v1, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->helper:Lorg/spongycastle/jcajce/util/JcaJceHelper;
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v0
invoke-interface {v1, v0}, Lorg/spongycastle/jcajce/util/JcaJceHelper;->createCipher(Ljava/lang/String;)Ljavax/crypto/Cipher;
move-result-object v0
.line 619
new-instance v1, Lorg/spongycastle/jcajce/PKCS12Key;
invoke-direct {v1, p3, p4}, Lorg/spongycastle/jcajce/PKCS12Key;-><init>([CZ)V
.line 621
const/4 v3, 0x4
invoke-virtual {v0, v3, v1, v2}, Ljavax/crypto/Cipher;->init(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
.line 624
const-string v1, ""
const/4 v2, 0x2
invoke-virtual {v0, p2, v1, v2}, Ljavax/crypto/Cipher;->unwrap([BLjava/lang/String;I)Ljava/security/Key;
move-result-object v0
check-cast v0, Ljava/security/PrivateKey;
.line 632
:goto_41
return-object v0
.line 626
:cond_42
sget-object v1, Lorg/spongycastle/asn1/pkcs/PKCSObjectIdentifiers;->id_PBES2:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v0, v1}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_73
.line 629
const/4 v0, 0x4
invoke-direct {p0, v0, p3, p1}, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->createCipher(I[CLorg/spongycastle/asn1/x509/AlgorithmIdentifier;)Ljavax/crypto/Cipher;
move-result-object v0
.line 632
const-string v1, ""
const/4 v2, 0x2
invoke-virtual {v0, p2, v1, v2}, Ljavax/crypto/Cipher;->unwrap([BLjava/lang/String;I)Ljava/security/Key;
move-result-object v0
check-cast v0, Ljava/security/PrivateKey;
:try_end_58
.catch Ljava/lang/Exception; {:try_start_4 .. :try_end_58} :catch_59
goto :goto_41
.line 635
:catch_59
move-exception v0
.line 637
new-instance v1, Ljava/io/IOException;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "exception unwrapping private key - "
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0}, Ljava/lang/Exception;->toString()Ljava/lang/String;
move-result-object v0
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {v1, v0}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
throw v1
.line 640
:cond_73
new-instance v1, Ljava/io/IOException;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "exception unwrapping private key - cannot recognise: "
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {v1, v0}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
throw v1
.end method
.method protected wrapKey(Ljava/lang/String;Ljava/security/Key;Lorg/spongycastle/asn1/pkcs/PKCS12PBEParams;[C)[B
.registers 10
.prologue
.line 650
new-instance v0, Ljavax/crypto/spec/PBEKeySpec;
invoke-direct {v0, p4}, Ljavax/crypto/spec/PBEKeySpec;-><init>([C)V
.line 655
:try_start_5
iget-object v1, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->helper:Lorg/spongycastle/jcajce/util/JcaJceHelper;
invoke-interface {v1, p1}, Lorg/spongycastle/jcajce/util/JcaJceHelper;->createSecretKeyFactory(Ljava/lang/String;)Ljavax/crypto/SecretKeyFactory;
move-result-object v1
.line 656
new-instance v2, Ljavax/crypto/spec/PBEParameterSpec;
.line 657
invoke-virtual {p3}, Lorg/spongycastle/asn1/pkcs/PKCS12PBEParams;->getIV()[B
move-result-object v3
.line 658
invoke-virtual {p3}, Lorg/spongycastle/asn1/pkcs/PKCS12PBEParams;->getIterations()Ljava/math/BigInteger;
move-result-object v4
invoke-virtual {v4}, Ljava/math/BigInteger;->intValue()I
move-result v4
invoke-direct {v2, v3, v4}, Ljavax/crypto/spec/PBEParameterSpec;-><init>([BI)V
.line 660
iget-object v3, p0, Lorg/spongycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi;->helper:Lorg/spongycastle/jcajce/util/JcaJceHelper;
invoke-interface {v3, p1}, Lorg/spongycastle/jcajce/util/JcaJceHelper;->createCipher(Ljava/lang/String;)Ljavax/crypto/Cipher;
move-result-object v3
.line 662
const/4 v4, 0x3
invoke-virtual {v1, v0}, Ljavax/crypto/SecretKeyFactory;->generateSecret(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;
move-result-object v0
invoke-virtual {v3, v4, v0, v2}, Ljavax/crypto/Cipher;->init(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
.line 664
invoke-virtual {v3, p2}, Ljavax/crypto/Cipher;->wrap(Ljava/security/Key;)[B
:try_end_2d
.catch Ljava/lang/Exception; {:try_start_5 .. :try_end_2d} :catch_2f
move-result-object v0
.line 671
return-object v0
.line 666
:catch_2f
move-exception v0
.line 668
new-instance v1, Ljava/io/IOException;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "exception encrypting data - "
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0}, Ljava/lang/Exception;->toString()Ljava/lang/String;
move-result-object v0
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {v1, v0}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
throw v1
.end method