X509V2AttributeCertificate.smali
.class public Lorg/spongycastle/x509/X509V2AttributeCertificate;
.super Ljava/lang/Object;
.source "X509V2AttributeCertificate.java"
# interfaces
.implements Lorg/spongycastle/x509/X509AttributeCertificate;
# instance fields
.field private cert:Lorg/spongycastle/asn1/x509/AttributeCertificate;
.field private notAfter:Ljava/util/Date;
.field private notBefore:Ljava/util/Date;
# direct methods
.method public constructor <init>(Ljava/io/InputStream;)V
.registers 3
.prologue
.line 67
invoke-static {p1}, Lorg/spongycastle/x509/X509V2AttributeCertificate;->getObject(Ljava/io/InputStream;)Lorg/spongycastle/asn1/x509/AttributeCertificate;
move-result-object v0
invoke-direct {p0, v0}, Lorg/spongycastle/x509/X509V2AttributeCertificate;-><init>(Lorg/spongycastle/asn1/x509/AttributeCertificate;)V
.line 68
return-void
.end method
.method constructor <init>(Lorg/spongycastle/asn1/x509/AttributeCertificate;)V
.registers 4
.prologue
.line 80
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 81
iput-object p1, p0, Lorg/spongycastle/x509/X509V2AttributeCertificate;->cert:Lorg/spongycastle/asn1/x509/AttributeCertificate;
.line 85
:try_start_5
invoke-virtual {p1}, Lorg/spongycastle/asn1/x509/AttributeCertificate;->getAcinfo()Lorg/spongycastle/asn1/x509/AttributeCertificateInfo;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/asn1/x509/AttributeCertificateInfo;->getAttrCertValidityPeriod()Lorg/spongycastle/asn1/x509/AttCertValidityPeriod;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/asn1/x509/AttCertValidityPeriod;->getNotAfterTime()Lorg/spongycastle/asn1/ASN1GeneralizedTime;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1GeneralizedTime;->getDate()Ljava/util/Date;
move-result-object v0
iput-object v0, p0, Lorg/spongycastle/x509/X509V2AttributeCertificate;->notAfter:Ljava/util/Date;
.line 86
invoke-virtual {p1}, Lorg/spongycastle/asn1/x509/AttributeCertificate;->getAcinfo()Lorg/spongycastle/asn1/x509/AttributeCertificateInfo;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/asn1/x509/AttributeCertificateInfo;->getAttrCertValidityPeriod()Lorg/spongycastle/asn1/x509/AttCertValidityPeriod;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/asn1/x509/AttCertValidityPeriod;->getNotBeforeTime()Lorg/spongycastle/asn1/ASN1GeneralizedTime;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1GeneralizedTime;->getDate()Ljava/util/Date;
move-result-object v0
iput-object v0, p0, Lorg/spongycastle/x509/X509V2AttributeCertificate;->notBefore:Ljava/util/Date;
:try_end_29
.catch Ljava/text/ParseException; {:try_start_5 .. :try_end_29} :catch_2a
.line 91
return-void
.line 90
:catch_2a
move-exception v0
new-instance v0, Ljava/io/IOException;
const-string v1, "invalid data structure in certificate!"
invoke-direct {v0, v1}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public constructor <init>([B)V
.registers 3
.prologue
.line 74
new-instance v0, Ljava/io/ByteArrayInputStream;
invoke-direct {v0, p1}, Ljava/io/ByteArrayInputStream;-><init>([B)V
invoke-direct {p0, v0}, Lorg/spongycastle/x509/X509V2AttributeCertificate;-><init>(Ljava/io/InputStream;)V
.line 75
return-void
.end method
.method private getExtensionOIDs(Z)Ljava/util/Set;
.registers 7
.prologue
.line 235
iget-object v0, p0, Lorg/spongycastle/x509/X509V2AttributeCertificate;->cert:Lorg/spongycastle/asn1/x509/AttributeCertificate;
invoke-virtual {v0}, Lorg/spongycastle/asn1/x509/AttributeCertificate;->getAcinfo()Lorg/spongycastle/asn1/x509/AttributeCertificateInfo;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/asn1/x509/AttributeCertificateInfo;->getExtensions()Lorg/spongycastle/asn1/x509/Extensions;
move-result-object v2
.line 237
if-eqz v2, :cond_35
.line 239
new-instance v1, Ljava/util/HashSet;
invoke-direct {v1}, Ljava/util/HashSet;-><init>()V
.line 240
invoke-virtual {v2}, Lorg/spongycastle/asn1/x509/Extensions;->oids()Ljava/util/Enumeration;
move-result-object v3
.line 242
:cond_15
:goto_15
invoke-interface {v3}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v0
if-eqz v0, :cond_33
.line 244
invoke-interface {v3}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
.line 245
invoke-virtual {v2, v0}, Lorg/spongycastle/asn1/x509/Extensions;->getExtension(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;)Lorg/spongycastle/asn1/x509/Extension;
move-result-object v4
.line 247
invoke-virtual {v4}, Lorg/spongycastle/asn1/x509/Extension;->isCritical()Z
move-result v4
if-ne v4, p1, :cond_15
.line 249
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v0
invoke-interface {v1, v0}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
goto :goto_15
:cond_33
move-object v0, v1
.line 256
:goto_34
return-object v0
:cond_35
const/4 v0, 0x0
goto :goto_34
.end method
.method private static getObject(Ljava/io/InputStream;)Lorg/spongycastle/asn1/x509/AttributeCertificate;
.registers 5
.prologue
.line 51
:try_start_0
new-instance v0, Lorg/spongycastle/asn1/ASN1InputStream;
invoke-direct {v0, p0}, Lorg/spongycastle/asn1/ASN1InputStream;-><init>(Ljava/io/InputStream;)V
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1InputStream;->readObject()Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v0
invoke-static {v0}, Lorg/spongycastle/asn1/x509/AttributeCertificate;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/x509/AttributeCertificate;
:try_end_c
.catch Ljava/io/IOException; {:try_start_0 .. :try_end_c} :catch_e
.catch Ljava/lang/Exception; {:try_start_0 .. :try_end_c} :catch_10
move-result-object v0
return-object v0
.line 55
:catch_e
move-exception v0
throw v0
.line 57
:catch_10
move-exception v0
.line 59
new-instance v1, Ljava/io/IOException;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "exception decoding certificate structure: "
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
# virtual methods
.method public checkValidity()V
.registers 2
.prologue
.line 147
new-instance v0, Ljava/util/Date;
invoke-direct {v0}, Ljava/util/Date;-><init>()V
invoke-virtual {p0, v0}, Lorg/spongycastle/x509/X509V2AttributeCertificate;->checkValidity(Ljava/util/Date;)V
.line 148
return-void
.end method
.method public checkValidity(Ljava/util/Date;)V
.registers 5
.prologue
.line 154
invoke-virtual {p0}, Lorg/spongycastle/x509/X509V2AttributeCertificate;->getNotAfter()Ljava/util/Date;
move-result-object v0
invoke-virtual {p1, v0}, Ljava/util/Date;->after(Ljava/util/Date;)Z
move-result v0
if-eqz v0, :cond_23
.line 156
new-instance v0, Ljava/security/cert/CertificateExpiredException;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "certificate expired on "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {p0}, Lorg/spongycastle/x509/X509V2AttributeCertificate;->getNotAfter()Ljava/util/Date;
move-result-object v2
invoke-virtual {v1, v2}, 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/security/cert/CertificateExpiredException;-><init>(Ljava/lang/String;)V
throw v0
.line 159
:cond_23
invoke-virtual {p0}, Lorg/spongycastle/x509/X509V2AttributeCertificate;->getNotBefore()Ljava/util/Date;
move-result-object v0
invoke-virtual {p1, v0}, Ljava/util/Date;->before(Ljava/util/Date;)Z
move-result v0
if-eqz v0, :cond_46
.line 161
new-instance v0, Ljava/security/cert/CertificateNotYetValidException;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "certificate not valid till "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {p0}, Lorg/spongycastle/x509/X509V2AttributeCertificate;->getNotBefore()Ljava/util/Date;
move-result-object v2
invoke-virtual {v1, v2}, 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/security/cert/CertificateNotYetValidException;-><init>(Ljava/lang/String;)V
throw v0
.line 163
:cond_46
return-void
.end method
.method public equals(Ljava/lang/Object;)Z
.registers 5
.prologue
const/4 v0, 0x0
.line 314
if-ne p1, p0, :cond_5
.line 316
const/4 v0, 0x1
.line 335
:cond_4
:goto_4
return v0
.line 319
:cond_5
instance-of v1, p1, Lorg/spongycastle/x509/X509AttributeCertificate;
if-eqz v1, :cond_4
.line 324
check-cast p1, Lorg/spongycastle/x509/X509AttributeCertificate;
.line 328
:try_start_b
invoke-virtual {p0}, Lorg/spongycastle/x509/X509V2AttributeCertificate;->getEncoded()[B
move-result-object v1
.line 329
invoke-interface {p1}, Lorg/spongycastle/x509/X509AttributeCertificate;->getEncoded()[B
move-result-object v2
.line 331
invoke-static {v1, v2}, Lorg/spongycastle/util/Arrays;->areEqual([B[B)Z
:try_end_16
.catch Ljava/io/IOException; {:try_start_b .. :try_end_16} :catch_18
move-result v0
goto :goto_4
.line 335
:catch_18
move-exception v1
goto :goto_4
.end method
.method public getAttributes()[Lorg/spongycastle/x509/X509Attribute;
.registers 6
.prologue
.line 278
iget-object v0, p0, Lorg/spongycastle/x509/X509V2AttributeCertificate;->cert:Lorg/spongycastle/asn1/x509/AttributeCertificate;
invoke-virtual {v0}, Lorg/spongycastle/asn1/x509/AttributeCertificate;->getAcinfo()Lorg/spongycastle/asn1/x509/AttributeCertificateInfo;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/asn1/x509/AttributeCertificateInfo;->getAttributes()Lorg/spongycastle/asn1/ASN1Sequence;
move-result-object v1
.line 279
invoke-virtual {v1}, Lorg/spongycastle/asn1/ASN1Sequence;->size()I
move-result v0
new-array v2, v0, [Lorg/spongycastle/x509/X509Attribute;
.line 281
const/4 v0, 0x0
:goto_11
invoke-virtual {v1}, Lorg/spongycastle/asn1/ASN1Sequence;->size()I
move-result v3
if-eq v0, v3, :cond_25
.line 283
new-instance v3, Lorg/spongycastle/x509/X509Attribute;
invoke-virtual {v1, v0}, Lorg/spongycastle/asn1/ASN1Sequence;->getObjectAt(I)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v4
invoke-direct {v3, v4}, Lorg/spongycastle/x509/X509Attribute;-><init>(Lorg/spongycastle/asn1/ASN1Encodable;)V
aput-object v3, v2, v0
.line 281
add-int/lit8 v0, v0, 0x1
goto :goto_11
.line 286
:cond_25
return-object v2
.end method
.method public getAttributes(Ljava/lang/String;)[Lorg/spongycastle/x509/X509Attribute;
.registers 7
.prologue
.line 291
iget-object v0, p0, Lorg/spongycastle/x509/X509V2AttributeCertificate;->cert:Lorg/spongycastle/asn1/x509/AttributeCertificate;
invoke-virtual {v0}, Lorg/spongycastle/asn1/x509/AttributeCertificate;->getAcinfo()Lorg/spongycastle/asn1/x509/AttributeCertificateInfo;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/asn1/x509/AttributeCertificateInfo;->getAttributes()Lorg/spongycastle/asn1/ASN1Sequence;
move-result-object v1
.line 292
new-instance v2, Ljava/util/ArrayList;
invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
.line 294
const/4 v0, 0x0
:goto_10
invoke-virtual {v1}, Lorg/spongycastle/asn1/ASN1Sequence;->size()I
move-result v3
if-eq v0, v3, :cond_2f
.line 296
new-instance v3, Lorg/spongycastle/x509/X509Attribute;
invoke-virtual {v1, v0}, Lorg/spongycastle/asn1/ASN1Sequence;->getObjectAt(I)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v4
invoke-direct {v3, v4}, Lorg/spongycastle/x509/X509Attribute;-><init>(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 297
invoke-virtual {v3}, Lorg/spongycastle/x509/X509Attribute;->getOID()Ljava/lang/String;
move-result-object v4
invoke-virtual {v4, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v4
if-eqz v4, :cond_2c
.line 299
invoke-interface {v2, v3}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 294
:cond_2c
add-int/lit8 v0, v0, 0x1
goto :goto_10
.line 303
:cond_2f
invoke-interface {v2}, Ljava/util/List;->size()I
move-result v0
if-nez v0, :cond_37
.line 305
const/4 v0, 0x0
.line 308
:goto_36
return-object v0
:cond_37
invoke-interface {v2}, Ljava/util/List;->size()I
move-result v0
new-array v0, v0, [Lorg/spongycastle/x509/X509Attribute;
invoke-interface {v2, v0}, Ljava/util/List;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
move-result-object v0
check-cast v0, [Lorg/spongycastle/x509/X509Attribute;
goto :goto_36
.end method
.method public getCriticalExtensionOIDs()Ljava/util/Set;
.registers 2
.prologue
.line 266
const/4 v0, 0x1
invoke-direct {p0, v0}, Lorg/spongycastle/x509/X509V2AttributeCertificate;->getExtensionOIDs(Z)Ljava/util/Set;
move-result-object v0
return-object v0
.end method
.method public getEncoded()[B
.registers 2
.prologue
.line 205
iget-object v0, p0, Lorg/spongycastle/x509/X509V2AttributeCertificate;->cert:Lorg/spongycastle/asn1/x509/AttributeCertificate;
invoke-virtual {v0}, Lorg/spongycastle/asn1/x509/AttributeCertificate;->getEncoded()[B
move-result-object v0
return-object v0
.end method
.method public getExtensionValue(Ljava/lang/String;)[B
.registers 6
.prologue
.line 210
iget-object v0, p0, Lorg/spongycastle/x509/X509V2AttributeCertificate;->cert:Lorg/spongycastle/asn1/x509/AttributeCertificate;
invoke-virtual {v0}, Lorg/spongycastle/asn1/x509/AttributeCertificate;->getAcinfo()Lorg/spongycastle/asn1/x509/AttributeCertificateInfo;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/asn1/x509/AttributeCertificateInfo;->getExtensions()Lorg/spongycastle/asn1/x509/Extensions;
move-result-object v0
.line 212
if-eqz v0, :cond_3c
.line 214
new-instance v1, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-direct {v1, p1}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;-><init>(Ljava/lang/String;)V
invoke-virtual {v0, v1}, Lorg/spongycastle/asn1/x509/Extensions;->getExtension(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;)Lorg/spongycastle/asn1/x509/Extension;
move-result-object v0
.line 216
if-eqz v0, :cond_3c
.line 220
:try_start_17
invoke-virtual {v0}, Lorg/spongycastle/asn1/x509/Extension;->getExtnValue()Lorg/spongycastle/asn1/ASN1OctetString;
move-result-object v0
const-string v1, "DER"
invoke-virtual {v0, v1}, Lorg/spongycastle/asn1/ASN1OctetString;->getEncoded(Ljava/lang/String;)[B
:try_end_20
.catch Ljava/lang/Exception; {:try_start_17 .. :try_end_20} :catch_22
move-result-object v0
.line 229
:goto_21
return-object v0
.line 222
:catch_22
move-exception v0
.line 224
new-instance v1, Ljava/lang/RuntimeException;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "error encoding "
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/RuntimeException;-><init>(Ljava/lang/String;)V
throw v1
.line 229
:cond_3c
const/4 v0, 0x0
goto :goto_21
.end method
.method public getHolder()Lorg/spongycastle/x509/AttributeCertificateHolder;
.registers 3
.prologue
.line 106
new-instance v1, Lorg/spongycastle/x509/AttributeCertificateHolder;
iget-object v0, p0, Lorg/spongycastle/x509/X509V2AttributeCertificate;->cert:Lorg/spongycastle/asn1/x509/AttributeCertificate;
invoke-virtual {v0}, Lorg/spongycastle/asn1/x509/AttributeCertificate;->getAcinfo()Lorg/spongycastle/asn1/x509/AttributeCertificateInfo;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/asn1/x509/AttributeCertificateInfo;->getHolder()Lorg/spongycastle/asn1/x509/Holder;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/asn1/x509/Holder;->toASN1Primitive()Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v0
check-cast v0, Lorg/spongycastle/asn1/ASN1Sequence;
invoke-direct {v1, v0}, Lorg/spongycastle/x509/AttributeCertificateHolder;-><init>(Lorg/spongycastle/asn1/ASN1Sequence;)V
return-object v1
.end method
.method public getIssuer()Lorg/spongycastle/x509/AttributeCertificateIssuer;
.registers 3
.prologue
.line 111
new-instance v0, Lorg/spongycastle/x509/AttributeCertificateIssuer;
iget-object v1, p0, Lorg/spongycastle/x509/X509V2AttributeCertificate;->cert:Lorg/spongycastle/asn1/x509/AttributeCertificate;
invoke-virtual {v1}, Lorg/spongycastle/asn1/x509/AttributeCertificate;->getAcinfo()Lorg/spongycastle/asn1/x509/AttributeCertificateInfo;
move-result-object v1
invoke-virtual {v1}, Lorg/spongycastle/asn1/x509/AttributeCertificateInfo;->getIssuer()Lorg/spongycastle/asn1/x509/AttCertIssuer;
move-result-object v1
invoke-direct {v0, v1}, Lorg/spongycastle/x509/AttributeCertificateIssuer;-><init>(Lorg/spongycastle/asn1/x509/AttCertIssuer;)V
return-object v0
.end method
.method public getIssuerUniqueID()[Z
.registers 8
.prologue
const/4 v1, 0x0
.line 126
iget-object v0, p0, Lorg/spongycastle/x509/X509V2AttributeCertificate;->cert:Lorg/spongycastle/asn1/x509/AttributeCertificate;
invoke-virtual {v0}, Lorg/spongycastle/asn1/x509/AttributeCertificate;->getAcinfo()Lorg/spongycastle/asn1/x509/AttributeCertificateInfo;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/asn1/x509/AttributeCertificateInfo;->getIssuerUniqueID()Lorg/spongycastle/asn1/DERBitString;
move-result-object v0
.line 128
if-eqz v0, :cond_36
.line 130
invoke-virtual {v0}, Lorg/spongycastle/asn1/DERBitString;->getBytes()[B
move-result-object v4
.line 131
array-length v2, v4
shl-int/lit8 v2, v2, 0x3
invoke-virtual {v0}, Lorg/spongycastle/asn1/DERBitString;->getPadBits()I
move-result v0
sub-int v0, v2, v0
new-array v3, v0, [Z
move v0, v1
.line 133
:goto_1d
array-length v2, v3
if-eq v0, v2, :cond_34
.line 135
div-int/lit8 v2, v0, 0x8
aget-byte v2, v4, v2
const/16 v5, 0x80
rem-int/lit8 v6, v0, 0x8
ushr-int/2addr v5, v6
and-int/2addr v2, v5
if-eqz v2, :cond_32
const/4 v2, 0x1
:goto_2d
aput-boolean v2, v3, v0
.line 133
add-int/lit8 v0, v0, 0x1
goto :goto_1d
:cond_32
move v2, v1
.line 135
goto :goto_2d
:cond_34
move-object v0, v3
.line 141
:goto_35
return-object v0
:cond_36
const/4 v0, 0x0
goto :goto_35
.end method
.method public getNonCriticalExtensionOIDs()Ljava/util/Set;
.registers 2
.prologue
.line 261
const/4 v0, 0x0
invoke-direct {p0, v0}, Lorg/spongycastle/x509/X509V2AttributeCertificate;->getExtensionOIDs(Z)Ljava/util/Set;
move-result-object v0
return-object v0
.end method
.method public getNotAfter()Ljava/util/Date;
.registers 2
.prologue
.line 121
iget-object v0, p0, Lorg/spongycastle/x509/X509V2AttributeCertificate;->notAfter:Ljava/util/Date;
return-object v0
.end method
.method public getNotBefore()Ljava/util/Date;
.registers 2
.prologue
.line 116
iget-object v0, p0, Lorg/spongycastle/x509/X509V2AttributeCertificate;->notBefore:Ljava/util/Date;
return-object v0
.end method
.method public getSerialNumber()Ljava/math/BigInteger;
.registers 2
.prologue
.line 101
iget-object v0, p0, Lorg/spongycastle/x509/X509V2AttributeCertificate;->cert:Lorg/spongycastle/asn1/x509/AttributeCertificate;
invoke-virtual {v0}, Lorg/spongycastle/asn1/x509/AttributeCertificate;->getAcinfo()Lorg/spongycastle/asn1/x509/AttributeCertificateInfo;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/asn1/x509/AttributeCertificateInfo;->getSerialNumber()Lorg/spongycastle/asn1/ASN1Integer;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1Integer;->getValue()Ljava/math/BigInteger;
move-result-object v0
return-object v0
.end method
.method public getSignature()[B
.registers 2
.prologue
.line 167
iget-object v0, p0, Lorg/spongycastle/x509/X509V2AttributeCertificate;->cert:Lorg/spongycastle/asn1/x509/AttributeCertificate;
invoke-virtual {v0}, Lorg/spongycastle/asn1/x509/AttributeCertificate;->getSignatureValue()Lorg/spongycastle/asn1/DERBitString;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/asn1/DERBitString;->getOctets()[B
move-result-object v0
return-object v0
.end method
.method public getVersion()I
.registers 2
.prologue
.line 96
iget-object v0, p0, Lorg/spongycastle/x509/X509V2AttributeCertificate;->cert:Lorg/spongycastle/asn1/x509/AttributeCertificate;
invoke-virtual {v0}, Lorg/spongycastle/asn1/x509/AttributeCertificate;->getAcinfo()Lorg/spongycastle/asn1/x509/AttributeCertificateInfo;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/asn1/x509/AttributeCertificateInfo;->getVersion()Lorg/spongycastle/asn1/ASN1Integer;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1Integer;->getValue()Ljava/math/BigInteger;
move-result-object v0
invoke-virtual {v0}, Ljava/math/BigInteger;->intValue()I
move-result v0
add-int/lit8 v0, v0, 0x1
return v0
.end method
.method public hasUnsupportedCriticalExtension()Z
.registers 2
.prologue
.line 271
invoke-virtual {p0}, Lorg/spongycastle/x509/X509V2AttributeCertificate;->getCriticalExtensionOIDs()Ljava/util/Set;
move-result-object v0
.line 273
if-eqz v0, :cond_e
invoke-interface {v0}, Ljava/util/Set;->isEmpty()Z
move-result v0
if-nez v0, :cond_e
const/4 v0, 0x1
:goto_d
return v0
:cond_e
const/4 v0, 0x0
goto :goto_d
.end method
.method public hashCode()I
.registers 2
.prologue
.line 343
:try_start_0
invoke-virtual {p0}, Lorg/spongycastle/x509/X509V2AttributeCertificate;->getEncoded()[B
move-result-object v0
invoke-static {v0}, Lorg/spongycastle/util/Arrays;->hashCode([B)I
:try_end_7
.catch Ljava/io/IOException; {:try_start_0 .. :try_end_7} :catch_9
move-result v0
.line 347
:goto_8
return v0
:catch_9
move-exception v0
const/4 v0, 0x0
goto :goto_8
.end method
.method public final verify(Ljava/security/PublicKey;Ljava/lang/String;)V
.registers 5
.prologue
.line 178
iget-object v0, p0, Lorg/spongycastle/x509/X509V2AttributeCertificate;->cert:Lorg/spongycastle/asn1/x509/AttributeCertificate;
invoke-virtual {v0}, Lorg/spongycastle/asn1/x509/AttributeCertificate;->getSignatureAlgorithm()Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;
move-result-object v0
iget-object v1, p0, Lorg/spongycastle/x509/X509V2AttributeCertificate;->cert:Lorg/spongycastle/asn1/x509/AttributeCertificate;
invoke-virtual {v1}, Lorg/spongycastle/asn1/x509/AttributeCertificate;->getAcinfo()Lorg/spongycastle/asn1/x509/AttributeCertificateInfo;
move-result-object v1
invoke-virtual {v1}, Lorg/spongycastle/asn1/x509/AttributeCertificateInfo;->getSignature()Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;
move-result-object v1
invoke-virtual {v0, v1}, Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_1e
.line 180
new-instance v0, Ljava/security/cert/CertificateException;
const-string v1, "Signature algorithm in certificate info not same as outer certificate"
invoke-direct {v0, v1}, Ljava/security/cert/CertificateException;-><init>(Ljava/lang/String;)V
throw v0
.line 183
:cond_1e
iget-object v0, p0, Lorg/spongycastle/x509/X509V2AttributeCertificate;->cert:Lorg/spongycastle/asn1/x509/AttributeCertificate;
invoke-virtual {v0}, Lorg/spongycastle/asn1/x509/AttributeCertificate;->getSignatureAlgorithm()Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;->getAlgorithm()Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v0
invoke-static {v0, p2}, Ljava/security/Signature;->getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/Signature;
move-result-object v0
.line 185
invoke-virtual {v0, p1}, Ljava/security/Signature;->initVerify(Ljava/security/PublicKey;)V
.line 189
:try_start_33
iget-object v1, p0, Lorg/spongycastle/x509/X509V2AttributeCertificate;->cert:Lorg/spongycastle/asn1/x509/AttributeCertificate;
invoke-virtual {v1}, Lorg/spongycastle/asn1/x509/AttributeCertificate;->getAcinfo()Lorg/spongycastle/asn1/x509/AttributeCertificateInfo;
move-result-object v1
invoke-virtual {v1}, Lorg/spongycastle/asn1/x509/AttributeCertificateInfo;->getEncoded()[B
move-result-object v1
invoke-virtual {v0, v1}, Ljava/security/Signature;->update([B)V
:try_end_40
.catch Ljava/io/IOException; {:try_start_33 .. :try_end_40} :catch_52
.line 196
invoke-virtual {p0}, Lorg/spongycastle/x509/X509V2AttributeCertificate;->getSignature()[B
move-result-object v1
invoke-virtual {v0, v1}, Ljava/security/Signature;->verify([B)Z
move-result v0
if-nez v0, :cond_5b
.line 198
new-instance v0, Ljava/security/InvalidKeyException;
const-string v1, "Public key presented not for certificate signature"
invoke-direct {v0, v1}, Ljava/security/InvalidKeyException;-><init>(Ljava/lang/String;)V
throw v0
.line 193
:catch_52
move-exception v0
new-instance v0, Ljava/security/SignatureException;
const-string v1, "Exception encoding certificate info object"
invoke-direct {v0, v1}, Ljava/security/SignatureException;-><init>(Ljava/lang/String;)V
throw v0
.line 200
:cond_5b
return-void
.end method