PKIXCertPath.smali
.class public Lorg/spongycastle/jcajce/provider/asymmetric/x509/PKIXCertPath;
.super Ljava/security/cert/CertPath;
.source "PKIXCertPath.java"
# static fields
.field static final certPathEncodings:Ljava/util/List;
# instance fields
.field private certificates:Ljava/util/List;
.field private final helper:Lorg/spongycastle/jcajce/util/JcaJceHelper;
# direct methods
.method static constructor <clinit>()V
.registers 2
.prologue
.line 55
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
.line 56
const-string v1, "PkiPath"
invoke-interface {v0, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 57
const-string v1, "PEM"
invoke-interface {v0, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 58
const-string v1, "PKCS7"
invoke-interface {v0, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 59
invoke-static {v0}, Ljava/util/Collections;->unmodifiableList(Ljava/util/List;)Ljava/util/List;
move-result-object v0
sput-object v0, Lorg/spongycastle/jcajce/provider/asymmetric/x509/PKIXCertPath;->certPathEncodings:Ljava/util/List;
.line 60
return-void
.end method
.method constructor <init>(Ljava/io/InputStream;Ljava/lang/String;)V
.registers 9
.prologue
.line 173
const-string v0, "X.509"
invoke-direct {p0, v0}, Ljava/security/cert/CertPath;-><init>(Ljava/lang/String;)V
.line 49
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/asymmetric/x509/PKIXCertPath;->helper:Lorg/spongycastle/jcajce/util/JcaJceHelper;
.line 176
:try_start_c
const-string v0, "PkiPath"
invoke-virtual {p2, v0}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_98
.line 178
new-instance v0, Lorg/spongycastle/asn1/ASN1InputStream;
invoke-direct {v0, p1}, Lorg/spongycastle/asn1/ASN1InputStream;-><init>(Ljava/io/InputStream;)V
.line 179
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1InputStream;->readObject()Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v0
.line 180
instance-of v1, v0, Lorg/spongycastle/asn1/ASN1Sequence;
if-nez v1, :cond_43
.line 182
new-instance v0, Ljava/security/cert/CertificateException;
const-string v1, "input stream does not contain a ASN1 SEQUENCE while reading PkiPath encoded data to load CertPath"
invoke-direct {v0, v1}, Ljava/security/cert/CertificateException;-><init>(Ljava/lang/String;)V
throw v0
:try_end_29
.catch Ljava/io/IOException; {:try_start_c .. :try_end_29} :catch_29
.catch Ljava/security/NoSuchProviderException; {:try_start_c .. :try_end_29} :catch_7e
.line 211
:catch_29
move-exception v0
.line 213
new-instance v1, Ljava/security/cert/CertificateException;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "IOException throw while decoding CertPath:\n"
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0}, Ljava/io/IOException;->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/security/cert/CertificateException;-><init>(Ljava/lang/String;)V
throw v1
.line 184
:cond_43
:try_start_43
check-cast v0, Lorg/spongycastle/asn1/ASN1Sequence;
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1Sequence;->getObjects()Ljava/util/Enumeration;
move-result-object v1
.line 185
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
iput-object v0, p0, Lorg/spongycastle/jcajce/provider/asymmetric/x509/PKIXCertPath;->certificates:Ljava/util/List;
.line 186
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/asymmetric/x509/PKIXCertPath;->helper:Lorg/spongycastle/jcajce/util/JcaJceHelper;
const-string v2, "X.509"
invoke-interface {v0, v2}, Lorg/spongycastle/jcajce/util/JcaJceHelper;->createCertificateFactory(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
move-result-object v2
.line 187
:goto_58
invoke-interface {v1}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v0
if-eqz v0, :cond_dd
.line 189
invoke-interface {v1}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/spongycastle/asn1/ASN1Encodable;
.line 190
invoke-interface {v0}, Lorg/spongycastle/asn1/ASN1Encodable;->toASN1Primitive()Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v0
const-string v3, "DER"
invoke-virtual {v0, v3}, Lorg/spongycastle/asn1/ASN1Primitive;->getEncoded(Ljava/lang/String;)[B
move-result-object v0
.line 191
iget-object v3, p0, Lorg/spongycastle/jcajce/provider/asymmetric/x509/PKIXCertPath;->certificates:Ljava/util/List;
const/4 v4, 0x0
new-instance v5, Ljava/io/ByteArrayInputStream;
invoke-direct {v5, v0}, Ljava/io/ByteArrayInputStream;-><init>([B)V
invoke-virtual {v2, v5}, Ljava/security/cert/CertificateFactory;->generateCertificate(Ljava/io/InputStream;)Ljava/security/cert/Certificate;
move-result-object v0
invoke-interface {v3, v4, v0}, Ljava/util/List;->add(ILjava/lang/Object;)V
:try_end_7d
.catch Ljava/io/IOException; {:try_start_43 .. :try_end_7d} :catch_29
.catch Ljava/security/NoSuchProviderException; {:try_start_43 .. :try_end_7d} :catch_7e
goto :goto_58
.line 215
:catch_7e
move-exception v0
.line 217
new-instance v1, Ljava/security/cert/CertificateException;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "BouncyCastle provider not found while trying to get a CertificateFactory:\n"
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0}, Ljava/security/NoSuchProviderException;->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/security/cert/CertificateException;-><init>(Ljava/lang/String;)V
throw v1
.line 195
:cond_98
:try_start_98
const-string v0, "PKCS7"
invoke-virtual {p2, v0}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
move-result v0
if-nez v0, :cond_a8
const-string v0, "PEM"
invoke-virtual {p2, v0}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_c8
.line 197
:cond_a8
new-instance v0, Ljava/io/BufferedInputStream;
invoke-direct {v0, p1}, Ljava/io/BufferedInputStream;-><init>(Ljava/io/InputStream;)V
.line 198
new-instance v1, Ljava/util/ArrayList;
invoke-direct {v1}, Ljava/util/ArrayList;-><init>()V
iput-object v1, p0, Lorg/spongycastle/jcajce/provider/asymmetric/x509/PKIXCertPath;->certificates:Ljava/util/List;
.line 199
iget-object v1, p0, Lorg/spongycastle/jcajce/provider/asymmetric/x509/PKIXCertPath;->helper:Lorg/spongycastle/jcajce/util/JcaJceHelper;
const-string v2, "X.509"
invoke-interface {v1, v2}, Lorg/spongycastle/jcajce/util/JcaJceHelper;->createCertificateFactory(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
move-result-object v1
.line 201
:goto_bc
invoke-virtual {v1, v0}, Ljava/security/cert/CertificateFactory;->generateCertificate(Ljava/io/InputStream;)Ljava/security/cert/Certificate;
move-result-object v2
if-eqz v2, :cond_dd
.line 203
iget-object v3, p0, Lorg/spongycastle/jcajce/provider/asymmetric/x509/PKIXCertPath;->certificates:Ljava/util/List;
invoke-interface {v3, v2}, Ljava/util/List;->add(Ljava/lang/Object;)Z
goto :goto_bc
.line 208
:cond_c8
new-instance v0, Ljava/security/cert/CertificateException;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "unsupported encoding: "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v1, p2}, 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/cert/CertificateException;-><init>(Ljava/lang/String;)V
throw v0
:try_end_dd
.catch Ljava/io/IOException; {:try_start_98 .. :try_end_dd} :catch_29
.catch Ljava/security/NoSuchProviderException; {:try_start_98 .. :try_end_dd} :catch_7e
.line 220
:cond_dd
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/asymmetric/x509/PKIXCertPath;->certificates:Ljava/util/List;
invoke-direct {p0, v0}, Lorg/spongycastle/jcajce/provider/asymmetric/x509/PKIXCertPath;->sortCerts(Ljava/util/List;)Ljava/util/List;
move-result-object v0
iput-object v0, p0, Lorg/spongycastle/jcajce/provider/asymmetric/x509/PKIXCertPath;->certificates:Ljava/util/List;
.line 221
return-void
.end method
.method constructor <init>(Ljava/util/List;)V
.registers 3
.prologue
.line 159
const-string v0, "X.509"
invoke-direct {p0, v0}, Ljava/security/cert/CertPath;-><init>(Ljava/lang/String;)V
.line 49
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/asymmetric/x509/PKIXCertPath;->helper:Lorg/spongycastle/jcajce/util/JcaJceHelper;
.line 160
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0, p1}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
invoke-direct {p0, v0}, Lorg/spongycastle/jcajce/provider/asymmetric/x509/PKIXCertPath;->sortCerts(Ljava/util/List;)Ljava/util/List;
move-result-object v0
iput-object v0, p0, Lorg/spongycastle/jcajce/provider/asymmetric/x509/PKIXCertPath;->certificates:Ljava/util/List;
.line 161
return-void
.end method
.method private sortCerts(Ljava/util/List;)Ljava/util/List;
.registers 11
.prologue
const/4 v2, 0x1
const/4 v4, 0x0
.line 70
invoke-interface {p1}, Ljava/util/List;->size()I
move-result v0
const/4 v1, 0x2
if-ge v0, v1, :cond_a
.line 154
:cond_9
:goto_9
return-object p1
.line 75
:cond_a
invoke-interface {p1, v4}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/X509Certificate;
invoke-virtual {v0}, Ljava/security/cert/X509Certificate;->getIssuerX500Principal()Ljavax/security/auth/x500/X500Principal;
move-result-object v0
move v1, v2
move-object v3, v0
.line 78
:goto_16
invoke-interface {p1}, Ljava/util/List;->size()I
move-result v0
if-eq v1, v0, :cond_d1
.line 80
invoke-interface {p1, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/X509Certificate;
.line 82
invoke-virtual {v0}, Ljava/security/cert/X509Certificate;->getSubjectX500Principal()Ljavax/security/auth/x500/X500Principal;
move-result-object v0
invoke-virtual {v3, v0}, Ljavax/security/auth/x500/X500Principal;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_3a
.line 84
invoke-interface {p1, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/X509Certificate;
invoke-virtual {v0}, Ljava/security/cert/X509Certificate;->getIssuerX500Principal()Ljavax/security/auth/x500/X500Principal;
move-result-object v3
.line 78
add-int/lit8 v0, v1, 0x1
move v1, v0
goto :goto_16
:cond_3a
move v0, v4
.line 93
:goto_3b
if-nez v0, :cond_9
.line 99
new-instance v7, Ljava/util/ArrayList;
invoke-interface {p1}, Ljava/util/List;->size()I
move-result v0
invoke-direct {v7, v0}, Ljava/util/ArrayList;-><init>(I)V
.line 100
new-instance v6, Ljava/util/ArrayList;
invoke-direct {v6, p1}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
move v3, v4
.line 102
:goto_4c
invoke-interface {p1}, Ljava/util/List;->size()I
move-result v0
if-ge v3, v0, :cond_84
.line 104
invoke-interface {p1, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/X509Certificate;
.line 107
invoke-virtual {v0}, Ljava/security/cert/X509Certificate;->getSubjectX500Principal()Ljavax/security/auth/x500/X500Principal;
move-result-object v8
move v5, v4
.line 109
:goto_5d
invoke-interface {p1}, Ljava/util/List;->size()I
move-result v1
if-eq v5, v1, :cond_cf
.line 111
invoke-interface {p1, v5}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/security/cert/X509Certificate;
.line 112
invoke-virtual {v1}, Ljava/security/cert/X509Certificate;->getIssuerX500Principal()Ljavax/security/auth/x500/X500Principal;
move-result-object v1
invoke-virtual {v1, v8}, Ljavax/security/auth/x500/X500Principal;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_80
move v1, v2
.line 119
:goto_74
if-nez v1, :cond_7c
.line 121
invoke-interface {v7, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 122
invoke-interface {p1, v3}, Ljava/util/List;->remove(I)Ljava/lang/Object;
.line 102
:cond_7c
add-int/lit8 v0, v3, 0x1
move v3, v0
goto :goto_4c
.line 109
:cond_80
add-int/lit8 v1, v5, 0x1
move v5, v1
goto :goto_5d
.line 127
:cond_84
invoke-interface {v7}, Ljava/util/List;->size()I
move-result v0
if-le v0, v2, :cond_8d
move-object p1, v6
.line 129
goto/16 :goto_9
:cond_8d
move v1, v4
.line 132
:goto_8e
invoke-interface {v7}, Ljava/util/List;->size()I
move-result v0
if-eq v1, v0, :cond_c3
.line 134
invoke-interface {v7, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/X509Certificate;
invoke-virtual {v0}, Ljava/security/cert/X509Certificate;->getIssuerX500Principal()Ljavax/security/auth/x500/X500Principal;
move-result-object v3
move v2, v4
.line 136
:goto_9f
invoke-interface {p1}, Ljava/util/List;->size()I
move-result v0
if-ge v2, v0, :cond_bb
.line 138
invoke-interface {p1, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/X509Certificate;
.line 139
invoke-virtual {v0}, Ljava/security/cert/X509Certificate;->getSubjectX500Principal()Ljavax/security/auth/x500/X500Principal;
move-result-object v5
invoke-virtual {v3, v5}, Ljavax/security/auth/x500/X500Principal;->equals(Ljava/lang/Object;)Z
move-result v5
if-eqz v5, :cond_bf
.line 141
invoke-interface {v7, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 142
invoke-interface {p1, v2}, Ljava/util/List;->remove(I)Ljava/lang/Object;
.line 132
:cond_bb
add-int/lit8 v0, v1, 0x1
move v1, v0
goto :goto_8e
.line 136
:cond_bf
add-int/lit8 v0, v2, 0x1
move v2, v0
goto :goto_9f
.line 149
:cond_c3
invoke-interface {p1}, Ljava/util/List;->size()I
move-result v0
if-lez v0, :cond_cc
move-object p1, v6
.line 151
goto/16 :goto_9
:cond_cc
move-object p1, v7
.line 154
goto/16 :goto_9
:cond_cf
move v1, v4
goto :goto_74
:cond_d1
move v0, v2
goto/16 :goto_3b
.end method
.method private toASN1Object(Ljava/security/cert/X509Certificate;)Lorg/spongycastle/asn1/ASN1Primitive;
.registers 6
.prologue
.line 355
:try_start_0
new-instance v0, Lorg/spongycastle/asn1/ASN1InputStream;
invoke-virtual {p1}, Ljava/security/cert/X509Certificate;->getEncoded()[B
move-result-object v1
invoke-direct {v0, v1}, Lorg/spongycastle/asn1/ASN1InputStream;-><init>([B)V
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1InputStream;->readObject()Lorg/spongycastle/asn1/ASN1Primitive;
:try_end_c
.catch Ljava/lang/Exception; {:try_start_0 .. :try_end_c} :catch_e
move-result-object v0
return-object v0
.line 357
:catch_e
move-exception v0
.line 359
new-instance v1, Ljava/security/cert/CertificateEncodingException;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "Exception while encoding certificate: "
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/security/cert/CertificateEncodingException;-><init>(Ljava/lang/String;)V
throw v1
.end method
.method private toDEREncoded(Lorg/spongycastle/asn1/ASN1Encodable;)[B
.registers 6
.prologue
.line 368
:try_start_0
invoke-interface {p1}, Lorg/spongycastle/asn1/ASN1Encodable;->toASN1Primitive()Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v0
const-string v1, "DER"
invoke-virtual {v0, v1}, Lorg/spongycastle/asn1/ASN1Primitive;->getEncoded(Ljava/lang/String;)[B
:try_end_9
.catch Ljava/io/IOException; {:try_start_0 .. :try_end_9} :catch_b
move-result-object v0
return-object v0
.line 370
:catch_b
move-exception v0
.line 372
new-instance v1, Ljava/security/cert/CertificateEncodingException;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "Exception thrown: "
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/security/cert/CertificateEncodingException;-><init>(Ljava/lang/String;)V
throw v1
.end method
# virtual methods
.method public getCertificates()Ljava/util/List;
.registers 3
.prologue
.line 339
new-instance v0, Ljava/util/ArrayList;
iget-object v1, p0, Lorg/spongycastle/jcajce/provider/asymmetric/x509/PKIXCertPath;->certificates:Ljava/util/List;
invoke-direct {v0, v1}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
invoke-static {v0}, Ljava/util/Collections;->unmodifiableList(Ljava/util/List;)Ljava/util/List;
move-result-object v0
return-object v0
.end method
.method public getEncoded()[B
.registers 3
.prologue
.line 246
invoke-virtual {p0}, Lorg/spongycastle/jcajce/provider/asymmetric/x509/PKIXCertPath;->getEncodings()Ljava/util/Iterator;
move-result-object v0
.line 247
invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_19
.line 249
invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
.line 250
instance-of v1, v0, Ljava/lang/String;
if-eqz v1, :cond_19
.line 252
check-cast v0, Ljava/lang/String;
invoke-virtual {p0, v0}, Lorg/spongycastle/jcajce/provider/asymmetric/x509/PKIXCertPath;->getEncoded(Ljava/lang/String;)[B
move-result-object v0
.line 255
:goto_18
return-object v0
:cond_19
const/4 v0, 0x0
goto :goto_18
.end method
.method public getEncoded(Ljava/lang/String;)[B
.registers 12
.prologue
const/4 v5, 0x0
const/4 v0, 0x0
.line 271
const-string v1, "PkiPath"
invoke-virtual {p1, v1}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_39
.line 273
new-instance v1, Lorg/spongycastle/asn1/ASN1EncodableVector;
invoke-direct {v1}, Lorg/spongycastle/asn1/ASN1EncodableVector;-><init>()V
.line 275
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/asymmetric/x509/PKIXCertPath;->certificates:Ljava/util/List;
iget-object v2, p0, Lorg/spongycastle/jcajce/provider/asymmetric/x509/PKIXCertPath;->certificates:Ljava/util/List;
invoke-interface {v2}, Ljava/util/List;->size()I
move-result v2
invoke-interface {v0, v2}, Ljava/util/List;->listIterator(I)Ljava/util/ListIterator;
move-result-object v2
.line 276
:goto_1b
invoke-interface {v2}, Ljava/util/ListIterator;->hasPrevious()Z
move-result v0
if-eqz v0, :cond_2f
.line 278
invoke-interface {v2}, Ljava/util/ListIterator;->previous()Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/X509Certificate;
invoke-direct {p0, v0}, Lorg/spongycastle/jcajce/provider/asymmetric/x509/PKIXCertPath;->toASN1Object(Ljava/security/cert/X509Certificate;)Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v0
invoke-virtual {v1, v0}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
goto :goto_1b
.line 281
:cond_2f
new-instance v0, Lorg/spongycastle/asn1/DERSequence;
invoke-direct {v0, v1}, Lorg/spongycastle/asn1/DERSequence;-><init>(Lorg/spongycastle/asn1/ASN1EncodableVector;)V
invoke-direct {p0, v0}, Lorg/spongycastle/jcajce/provider/asymmetric/x509/PKIXCertPath;->toDEREncoded(Lorg/spongycastle/asn1/ASN1Encodable;)[B
move-result-object v0
.line 323
:goto_38
return-object v0
.line 283
:cond_39
const-string v1, "PKCS7"
invoke-virtual {p1, v1}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_90
.line 285
new-instance v3, Lorg/spongycastle/asn1/pkcs/ContentInfo;
sget-object v1, Lorg/spongycastle/asn1/pkcs/PKCSObjectIdentifiers;->data:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-direct {v3, v1, v5}, Lorg/spongycastle/asn1/pkcs/ContentInfo;-><init>(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 287
new-instance v6, Lorg/spongycastle/asn1/ASN1EncodableVector;
invoke-direct {v6}, Lorg/spongycastle/asn1/ASN1EncodableVector;-><init>()V
move v1, v0
.line 288
:goto_4e
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/asymmetric/x509/PKIXCertPath;->certificates:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->size()I
move-result v0
if-eq v1, v0, :cond_69
.line 290
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/asymmetric/x509/PKIXCertPath;->certificates:Ljava/util/List;
invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/X509Certificate;
invoke-direct {p0, v0}, Lorg/spongycastle/jcajce/provider/asymmetric/x509/PKIXCertPath;->toASN1Object(Ljava/security/cert/X509Certificate;)Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v0
invoke-virtual {v6, v0}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 288
add-int/lit8 v0, v1, 0x1
move v1, v0
goto :goto_4e
.line 293
:cond_69
new-instance v0, Lorg/spongycastle/asn1/pkcs/SignedData;
new-instance v1, Lorg/spongycastle/asn1/ASN1Integer;
const-wide/16 v8, 0x1
invoke-direct {v1, v8, v9}, Lorg/spongycastle/asn1/ASN1Integer;-><init>(J)V
new-instance v2, Lorg/spongycastle/asn1/DERSet;
invoke-direct {v2}, Lorg/spongycastle/asn1/DERSet;-><init>()V
new-instance v4, Lorg/spongycastle/asn1/DERSet;
invoke-direct {v4, v6}, Lorg/spongycastle/asn1/DERSet;-><init>(Lorg/spongycastle/asn1/ASN1EncodableVector;)V
new-instance v6, Lorg/spongycastle/asn1/DERSet;
invoke-direct {v6}, Lorg/spongycastle/asn1/DERSet;-><init>()V
invoke-direct/range {v0 .. v6}, Lorg/spongycastle/asn1/pkcs/SignedData;-><init>(Lorg/spongycastle/asn1/ASN1Integer;Lorg/spongycastle/asn1/ASN1Set;Lorg/spongycastle/asn1/pkcs/ContentInfo;Lorg/spongycastle/asn1/ASN1Set;Lorg/spongycastle/asn1/ASN1Set;Lorg/spongycastle/asn1/ASN1Set;)V
.line 301
new-instance v1, Lorg/spongycastle/asn1/pkcs/ContentInfo;
sget-object v2, Lorg/spongycastle/asn1/pkcs/PKCSObjectIdentifiers;->signedData:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-direct {v1, v2, v0}, Lorg/spongycastle/asn1/pkcs/ContentInfo;-><init>(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;Lorg/spongycastle/asn1/ASN1Encodable;)V
invoke-direct {p0, v1}, Lorg/spongycastle/jcajce/provider/asymmetric/x509/PKIXCertPath;->toDEREncoded(Lorg/spongycastle/asn1/ASN1Encodable;)[B
move-result-object v0
goto :goto_38
.line 304
:cond_90
const-string v1, "PEM"
invoke-virtual {p1, v1}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_dc
.line 306
new-instance v2, Ljava/io/ByteArrayOutputStream;
invoke-direct {v2}, Ljava/io/ByteArrayOutputStream;-><init>()V
.line 307
new-instance v3, Lorg/spongycastle/util/io/pem/PemWriter;
new-instance v1, Ljava/io/OutputStreamWriter;
invoke-direct {v1, v2}, Ljava/io/OutputStreamWriter;-><init>(Ljava/io/OutputStream;)V
invoke-direct {v3, v1}, Lorg/spongycastle/util/io/pem/PemWriter;-><init>(Ljava/io/Writer;)V
move v1, v0
.line 311
:goto_a8
:try_start_a8
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/asymmetric/x509/PKIXCertPath;->certificates:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->size()I
move-result v0
if-eq v1, v0, :cond_ca
.line 313
new-instance v4, Lorg/spongycastle/util/io/pem/PemObject;
const-string v5, "CERTIFICATE"
iget-object v0, p0, Lorg/spongycastle/jcajce/provider/asymmetric/x509/PKIXCertPath;->certificates:Ljava/util/List;
invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/X509Certificate;
invoke-virtual {v0}, Ljava/security/cert/X509Certificate;->getEncoded()[B
move-result-object v0
invoke-direct {v4, v5, v0}, Lorg/spongycastle/util/io/pem/PemObject;-><init>(Ljava/lang/String;[B)V
invoke-virtual {v3, v4}, Lorg/spongycastle/util/io/pem/PemWriter;->writeObject(Lorg/spongycastle/util/io/pem/PemObjectGenerator;)V
.line 311
add-int/lit8 v0, v1, 0x1
move v1, v0
goto :goto_a8
.line 316
:cond_ca
invoke-virtual {v3}, Lorg/spongycastle/util/io/pem/PemWriter;->close()V
:try_end_cd
.catch Ljava/lang/Exception; {:try_start_a8 .. :try_end_cd} :catch_d3
.line 323
invoke-virtual {v2}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B
move-result-object v0
goto/16 :goto_38
.line 320
:catch_d3
move-exception v0
new-instance v0, Ljava/security/cert/CertificateEncodingException;
const-string v1, "can\'t encode certificate for PEM encoded path"
invoke-direct {v0, v1}, Ljava/security/cert/CertificateEncodingException;-><init>(Ljava/lang/String;)V
throw v0
.line 327
:cond_dc
new-instance v0, Ljava/security/cert/CertificateEncodingException;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "unsupported encoding: "
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
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljava/security/cert/CertificateEncodingException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public getEncodings()Ljava/util/Iterator;
.registers 2
.prologue
.line 233
sget-object v0, Lorg/spongycastle/jcajce/provider/asymmetric/x509/PKIXCertPath;->certPathEncodings:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v0
return-object v0
.end method