ECUtil.smali
.class public Lorg/spongycastle/jcajce/provider/asymmetric/util/ECUtil;
.super Ljava/lang/Object;
.source "ECUtil.java"
# direct methods
.method public constructor <init>()V
.registers 1
.prologue
.line 35
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method static convertMidTerms([I)[I
.registers 7
.prologue
const/4 v2, 0x3
const/4 v5, 0x0
const/4 v4, 0x2
const/4 v3, 0x1
.line 47
new-array v0, v2, [I
.line 49
array-length v1, p0
if-ne v1, v3, :cond_e
.line 51
aget v1, p0, v5
aput v1, v0, v5
.line 104
:goto_d
return-object v0
.line 55
:cond_e
array-length v1, p0
if-eq v1, v2, :cond_19
.line 57
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "Only Trinomials and pentanomials supported"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 60
:cond_19
aget v1, p0, v5
aget v2, p0, v3
if-ge v1, v2, :cond_41
aget v1, p0, v5
aget v2, p0, v4
if-ge v1, v2, :cond_41
.line 62
aget v1, p0, v5
aput v1, v0, v5
.line 63
aget v1, p0, v3
aget v2, p0, v4
if-ge v1, v2, :cond_38
.line 65
aget v1, p0, v3
aput v1, v0, v3
.line 66
aget v1, p0, v4
aput v1, v0, v4
goto :goto_d
.line 70
:cond_38
aget v1, p0, v4
aput v1, v0, v3
.line 71
aget v1, p0, v3
aput v1, v0, v4
goto :goto_d
.line 74
:cond_41
aget v1, p0, v3
aget v2, p0, v4
if-ge v1, v2, :cond_63
.line 76
aget v1, p0, v3
aput v1, v0, v5
.line 77
aget v1, p0, v5
aget v2, p0, v4
if-ge v1, v2, :cond_5a
.line 79
aget v1, p0, v5
aput v1, v0, v3
.line 80
aget v1, p0, v4
aput v1, v0, v4
goto :goto_d
.line 84
:cond_5a
aget v1, p0, v4
aput v1, v0, v3
.line 85
aget v1, p0, v5
aput v1, v0, v4
goto :goto_d
.line 90
:cond_63
aget v1, p0, v4
aput v1, v0, v5
.line 91
aget v1, p0, v5
aget v2, p0, v3
if-ge v1, v2, :cond_76
.line 93
aget v1, p0, v5
aput v1, v0, v3
.line 94
aget v1, p0, v3
aput v1, v0, v4
goto :goto_d
.line 98
:cond_76
aget v1, p0, v3
aput v1, v0, v3
.line 99
aget v1, p0, v5
aput v1, v0, v4
goto :goto_d
.end method
.method public static generatePrivateKeyParameter(Ljava/security/PrivateKey;)Lorg/spongycastle/crypto/params/AsymmetricKeyParameter;
.registers 9
.prologue
.line 171
instance-of v0, p0, Lorg/spongycastle/jce/interfaces/ECPrivateKey;
if-eqz v0, :cond_37
.line 173
check-cast p0, Lorg/spongycastle/jce/interfaces/ECPrivateKey;
.line 174
invoke-interface {p0}, Lorg/spongycastle/jce/interfaces/ECPrivateKey;->getParameters()Lorg/spongycastle/jce/spec/ECParameterSpec;
move-result-object v0
.line 176
if-nez v0, :cond_ab
.line 178
sget-object v0, Lorg/spongycastle/jce/provider/BouncyCastleProvider;->CONFIGURATION:Lorg/spongycastle/jcajce/provider/config/ProviderConfiguration;
invoke-interface {v0}, Lorg/spongycastle/jcajce/provider/config/ProviderConfiguration;->getEcImplicitlyCa()Lorg/spongycastle/jce/spec/ECParameterSpec;
move-result-object v0
move-object v5, v0
.line 181
:goto_13
new-instance v6, Lorg/spongycastle/crypto/params/ECPrivateKeyParameters;
.line 182
invoke-interface {p0}, Lorg/spongycastle/jce/interfaces/ECPrivateKey;->getD()Ljava/math/BigInteger;
move-result-object v7
new-instance v0, Lorg/spongycastle/crypto/params/ECDomainParameters;
.line 183
invoke-virtual {v5}, Lorg/spongycastle/jce/spec/ECParameterSpec;->getCurve()Lorg/spongycastle/math/ec/ECCurve;
move-result-object v1
invoke-virtual {v5}, Lorg/spongycastle/jce/spec/ECParameterSpec;->getG()Lorg/spongycastle/math/ec/ECPoint;
move-result-object v2
invoke-virtual {v5}, Lorg/spongycastle/jce/spec/ECParameterSpec;->getN()Ljava/math/BigInteger;
move-result-object v3
invoke-virtual {v5}, Lorg/spongycastle/jce/spec/ECParameterSpec;->getH()Ljava/math/BigInteger;
move-result-object v4
invoke-virtual {v5}, Lorg/spongycastle/jce/spec/ECParameterSpec;->getSeed()[B
move-result-object v5
invoke-direct/range {v0 .. v5}, Lorg/spongycastle/crypto/params/ECDomainParameters;-><init>(Lorg/spongycastle/math/ec/ECCurve;Lorg/spongycastle/math/ec/ECPoint;Ljava/math/BigInteger;Ljava/math/BigInteger;[B)V
invoke-direct {v6, v7, v0}, Lorg/spongycastle/crypto/params/ECPrivateKeyParameters;-><init>(Ljava/math/BigInteger;Lorg/spongycastle/crypto/params/ECDomainParameters;)V
move-object v0, v6
.line 209
:goto_36
return-object v0
.line 185
:cond_37
instance-of v0, p0, Ljava/security/interfaces/ECPrivateKey;
if-eqz v0, :cond_6a
.line 187
check-cast p0, Ljava/security/interfaces/ECPrivateKey;
.line 188
invoke-interface {p0}, Ljava/security/interfaces/ECPrivateKey;->getParams()Ljava/security/spec/ECParameterSpec;
move-result-object v0
const/4 v1, 0x0
invoke-static {v0, v1}, Lorg/spongycastle/jcajce/provider/asymmetric/util/EC5Util;->convertSpec(Ljava/security/spec/ECParameterSpec;Z)Lorg/spongycastle/jce/spec/ECParameterSpec;
move-result-object v5
.line 189
new-instance v6, Lorg/spongycastle/crypto/params/ECPrivateKeyParameters;
.line 190
invoke-interface {p0}, Ljava/security/interfaces/ECPrivateKey;->getS()Ljava/math/BigInteger;
move-result-object v7
new-instance v0, Lorg/spongycastle/crypto/params/ECDomainParameters;
.line 191
invoke-virtual {v5}, Lorg/spongycastle/jce/spec/ECParameterSpec;->getCurve()Lorg/spongycastle/math/ec/ECCurve;
move-result-object v1
invoke-virtual {v5}, Lorg/spongycastle/jce/spec/ECParameterSpec;->getG()Lorg/spongycastle/math/ec/ECPoint;
move-result-object v2
invoke-virtual {v5}, Lorg/spongycastle/jce/spec/ECParameterSpec;->getN()Ljava/math/BigInteger;
move-result-object v3
invoke-virtual {v5}, Lorg/spongycastle/jce/spec/ECParameterSpec;->getH()Ljava/math/BigInteger;
move-result-object v4
invoke-virtual {v5}, Lorg/spongycastle/jce/spec/ECParameterSpec;->getSeed()[B
move-result-object v5
invoke-direct/range {v0 .. v5}, Lorg/spongycastle/crypto/params/ECDomainParameters;-><init>(Lorg/spongycastle/math/ec/ECCurve;Lorg/spongycastle/math/ec/ECPoint;Ljava/math/BigInteger;Ljava/math/BigInteger;[B)V
invoke-direct {v6, v7, v0}, Lorg/spongycastle/crypto/params/ECPrivateKeyParameters;-><init>(Ljava/math/BigInteger;Lorg/spongycastle/crypto/params/ECDomainParameters;)V
move-object v0, v6
goto :goto_36
.line 198
:cond_6a
:try_start_6a
invoke-interface {p0}, Ljava/security/PrivateKey;->getEncoded()[B
move-result-object v0
.line 200
if-nez v0, :cond_92
.line 202
new-instance v0, Ljava/security/InvalidKeyException;
const-string v1, "no encoding for EC private key"
invoke-direct {v0, v1}, Ljava/security/InvalidKeyException;-><init>(Ljava/lang/String;)V
throw v0
:try_end_78
.catch Ljava/lang/Exception; {:try_start_6a .. :try_end_78} :catch_78
.line 212
:catch_78
move-exception v0
.line 214
new-instance v1, Ljava/security/InvalidKeyException;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "cannot identify EC 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/security/InvalidKeyException;-><init>(Ljava/lang/String;)V
throw v1
.line 205
:cond_92
:try_start_92
invoke-static {v0}, Lorg/spongycastle/asn1/pkcs/PrivateKeyInfo;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/pkcs/PrivateKeyInfo;
move-result-object v0
invoke-static {v0}, Lorg/spongycastle/jce/provider/BouncyCastleProvider;->getPrivateKey(Lorg/spongycastle/asn1/pkcs/PrivateKeyInfo;)Ljava/security/PrivateKey;
move-result-object v0
.line 207
instance-of v1, v0, Ljava/security/interfaces/ECPrivateKey;
if-eqz v1, :cond_a3
.line 209
invoke-static {v0}, Lorg/spongycastle/jcajce/provider/asymmetric/util/ECUtil;->generatePrivateKeyParameter(Ljava/security/PrivateKey;)Lorg/spongycastle/crypto/params/AsymmetricKeyParameter;
:try_end_a1
.catch Ljava/lang/Exception; {:try_start_92 .. :try_end_a1} :catch_78
move-result-object v0
goto :goto_36
.line 218
:cond_a3
new-instance v0, Ljava/security/InvalidKeyException;
const-string v1, "can\'t identify EC private key."
invoke-direct {v0, v1}, Ljava/security/InvalidKeyException;-><init>(Ljava/lang/String;)V
throw v0
:cond_ab
move-object v5, v0
goto/16 :goto_13
.end method
.method public static generatePublicKeyParameter(Ljava/security/PublicKey;)Lorg/spongycastle/crypto/params/AsymmetricKeyParameter;
.registers 9
.prologue
const/4 v2, 0x0
.line 111
instance-of v0, p0, Lorg/spongycastle/jce/interfaces/ECPublicKey;
if-eqz v0, :cond_5d
.line 113
check-cast p0, Lorg/spongycastle/jce/interfaces/ECPublicKey;
.line 114
invoke-interface {p0}, Lorg/spongycastle/jce/interfaces/ECPublicKey;->getParameters()Lorg/spongycastle/jce/spec/ECParameterSpec;
move-result-object v5
.line 116
if-nez v5, :cond_39
.line 118
sget-object v0, Lorg/spongycastle/jce/provider/BouncyCastleProvider;->CONFIGURATION:Lorg/spongycastle/jcajce/provider/config/ProviderConfiguration;
invoke-interface {v0}, Lorg/spongycastle/jcajce/provider/config/ProviderConfiguration;->getEcImplicitlyCa()Lorg/spongycastle/jce/spec/ECParameterSpec;
move-result-object v5
.line 120
new-instance v6, Lorg/spongycastle/crypto/params/ECPublicKeyParameters;
check-cast p0, Lorg/spongycastle/jcajce/provider/asymmetric/ec/BCECPublicKey;
.line 121
invoke-virtual {p0}, Lorg/spongycastle/jcajce/provider/asymmetric/ec/BCECPublicKey;->engineGetQ()Lorg/spongycastle/math/ec/ECPoint;
move-result-object v7
new-instance v0, Lorg/spongycastle/crypto/params/ECDomainParameters;
.line 122
invoke-virtual {v5}, Lorg/spongycastle/jce/spec/ECParameterSpec;->getCurve()Lorg/spongycastle/math/ec/ECCurve;
move-result-object v1
invoke-virtual {v5}, Lorg/spongycastle/jce/spec/ECParameterSpec;->getG()Lorg/spongycastle/math/ec/ECPoint;
move-result-object v2
invoke-virtual {v5}, Lorg/spongycastle/jce/spec/ECParameterSpec;->getN()Ljava/math/BigInteger;
move-result-object v3
invoke-virtual {v5}, Lorg/spongycastle/jce/spec/ECParameterSpec;->getH()Ljava/math/BigInteger;
move-result-object v4
invoke-virtual {v5}, Lorg/spongycastle/jce/spec/ECParameterSpec;->getSeed()[B
move-result-object v5
invoke-direct/range {v0 .. v5}, Lorg/spongycastle/crypto/params/ECDomainParameters;-><init>(Lorg/spongycastle/math/ec/ECCurve;Lorg/spongycastle/math/ec/ECPoint;Ljava/math/BigInteger;Ljava/math/BigInteger;[B)V
invoke-direct {v6, v7, v0}, Lorg/spongycastle/crypto/params/ECPublicKeyParameters;-><init>(Lorg/spongycastle/math/ec/ECPoint;Lorg/spongycastle/crypto/params/ECDomainParameters;)V
move-object v0, v6
.line 155
:goto_38
return-object v0
.line 126
:cond_39
new-instance v6, Lorg/spongycastle/crypto/params/ECPublicKeyParameters;
.line 127
invoke-interface {p0}, Lorg/spongycastle/jce/interfaces/ECPublicKey;->getQ()Lorg/spongycastle/math/ec/ECPoint;
move-result-object v7
new-instance v0, Lorg/spongycastle/crypto/params/ECDomainParameters;
.line 128
invoke-virtual {v5}, Lorg/spongycastle/jce/spec/ECParameterSpec;->getCurve()Lorg/spongycastle/math/ec/ECCurve;
move-result-object v1
invoke-virtual {v5}, Lorg/spongycastle/jce/spec/ECParameterSpec;->getG()Lorg/spongycastle/math/ec/ECPoint;
move-result-object v2
invoke-virtual {v5}, Lorg/spongycastle/jce/spec/ECParameterSpec;->getN()Ljava/math/BigInteger;
move-result-object v3
invoke-virtual {v5}, Lorg/spongycastle/jce/spec/ECParameterSpec;->getH()Ljava/math/BigInteger;
move-result-object v4
invoke-virtual {v5}, Lorg/spongycastle/jce/spec/ECParameterSpec;->getSeed()[B
move-result-object v5
invoke-direct/range {v0 .. v5}, Lorg/spongycastle/crypto/params/ECDomainParameters;-><init>(Lorg/spongycastle/math/ec/ECCurve;Lorg/spongycastle/math/ec/ECPoint;Ljava/math/BigInteger;Ljava/math/BigInteger;[B)V
invoke-direct {v6, v7, v0}, Lorg/spongycastle/crypto/params/ECPublicKeyParameters;-><init>(Lorg/spongycastle/math/ec/ECPoint;Lorg/spongycastle/crypto/params/ECDomainParameters;)V
move-object v0, v6
goto :goto_38
.line 131
:cond_5d
instance-of v0, p0, Ljava/security/interfaces/ECPublicKey;
if-eqz v0, :cond_97
.line 133
check-cast p0, Ljava/security/interfaces/ECPublicKey;
.line 134
invoke-interface {p0}, Ljava/security/interfaces/ECPublicKey;->getParams()Ljava/security/spec/ECParameterSpec;
move-result-object v0
invoke-static {v0, v2}, Lorg/spongycastle/jcajce/provider/asymmetric/util/EC5Util;->convertSpec(Ljava/security/spec/ECParameterSpec;Z)Lorg/spongycastle/jce/spec/ECParameterSpec;
move-result-object v5
.line 135
new-instance v6, Lorg/spongycastle/crypto/params/ECPublicKeyParameters;
.line 136
invoke-interface {p0}, Ljava/security/interfaces/ECPublicKey;->getParams()Ljava/security/spec/ECParameterSpec;
move-result-object v0
invoke-interface {p0}, Ljava/security/interfaces/ECPublicKey;->getW()Ljava/security/spec/ECPoint;
move-result-object v1
invoke-static {v0, v1, v2}, Lorg/spongycastle/jcajce/provider/asymmetric/util/EC5Util;->convertPoint(Ljava/security/spec/ECParameterSpec;Ljava/security/spec/ECPoint;Z)Lorg/spongycastle/math/ec/ECPoint;
move-result-object v7
new-instance v0, Lorg/spongycastle/crypto/params/ECDomainParameters;
.line 137
invoke-virtual {v5}, Lorg/spongycastle/jce/spec/ECParameterSpec;->getCurve()Lorg/spongycastle/math/ec/ECCurve;
move-result-object v1
invoke-virtual {v5}, Lorg/spongycastle/jce/spec/ECParameterSpec;->getG()Lorg/spongycastle/math/ec/ECPoint;
move-result-object v2
invoke-virtual {v5}, Lorg/spongycastle/jce/spec/ECParameterSpec;->getN()Ljava/math/BigInteger;
move-result-object v3
invoke-virtual {v5}, Lorg/spongycastle/jce/spec/ECParameterSpec;->getH()Ljava/math/BigInteger;
move-result-object v4
invoke-virtual {v5}, Lorg/spongycastle/jce/spec/ECParameterSpec;->getSeed()[B
move-result-object v5
invoke-direct/range {v0 .. v5}, Lorg/spongycastle/crypto/params/ECDomainParameters;-><init>(Lorg/spongycastle/math/ec/ECCurve;Lorg/spongycastle/math/ec/ECPoint;Ljava/math/BigInteger;Ljava/math/BigInteger;[B)V
invoke-direct {v6, v7, v0}, Lorg/spongycastle/crypto/params/ECPublicKeyParameters;-><init>(Lorg/spongycastle/math/ec/ECPoint;Lorg/spongycastle/crypto/params/ECDomainParameters;)V
move-object v0, v6
goto :goto_38
.line 144
:cond_97
:try_start_97
invoke-interface {p0}, Ljava/security/PublicKey;->getEncoded()[B
move-result-object v0
.line 146
if-nez v0, :cond_bf
.line 148
new-instance v0, Ljava/security/InvalidKeyException;
const-string v1, "no encoding for EC public key"
invoke-direct {v0, v1}, Ljava/security/InvalidKeyException;-><init>(Ljava/lang/String;)V
throw v0
:try_end_a5
.catch Ljava/lang/Exception; {:try_start_97 .. :try_end_a5} :catch_a5
.line 158
:catch_a5
move-exception v0
.line 160
new-instance v1, Ljava/security/InvalidKeyException;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "cannot identify EC public 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/security/InvalidKeyException;-><init>(Ljava/lang/String;)V
throw v1
.line 151
:cond_bf
:try_start_bf
invoke-static {v0}, Lorg/spongycastle/asn1/x509/SubjectPublicKeyInfo;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/x509/SubjectPublicKeyInfo;
move-result-object v0
invoke-static {v0}, Lorg/spongycastle/jce/provider/BouncyCastleProvider;->getPublicKey(Lorg/spongycastle/asn1/x509/SubjectPublicKeyInfo;)Ljava/security/PublicKey;
move-result-object v0
.line 153
instance-of v1, v0, Ljava/security/interfaces/ECPublicKey;
if-eqz v1, :cond_d1
.line 155
invoke-static {v0}, Lorg/spongycastle/jcajce/provider/asymmetric/util/ECUtil;->generatePublicKeyParameter(Ljava/security/PublicKey;)Lorg/spongycastle/crypto/params/AsymmetricKeyParameter;
:try_end_ce
.catch Ljava/lang/Exception; {:try_start_bf .. :try_end_ce} :catch_a5
move-result-object v0
goto/16 :goto_38
.line 164
:cond_d1
new-instance v0, Ljava/security/InvalidKeyException;
const-string v1, "cannot identify EC public key."
invoke-direct {v0, v1}, Ljava/security/InvalidKeyException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static getCurveName(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;)Ljava/lang/String;
.registers 2
.prologue
.line 373
invoke-static {p0}, Lorg/spongycastle/asn1/x9/X962NamedCurves;->getName(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;)Ljava/lang/String;
move-result-object v0
.line 375
if-nez v0, :cond_1c
.line 377
invoke-static {p0}, Lorg/spongycastle/asn1/sec/SECNamedCurves;->getName(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;)Ljava/lang/String;
move-result-object v0
.line 378
if-nez v0, :cond_10
.line 380
invoke-static {p0}, Lorg/spongycastle/asn1/nist/NISTNamedCurves;->getName(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;)Ljava/lang/String;
move-result-object v0
.line 382
:cond_10
if-nez v0, :cond_16
.line 384
invoke-static {p0}, Lorg/spongycastle/asn1/teletrust/TeleTrusTNamedCurves;->getName(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;)Ljava/lang/String;
move-result-object v0
.line 386
:cond_16
if-nez v0, :cond_1c
.line 388
invoke-static {p0}, Lorg/spongycastle/asn1/cryptopro/ECGOST3410NamedCurves;->getName(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;)Ljava/lang/String;
move-result-object v0
.line 392
:cond_1c
return-object v0
.end method
.method public static getNamedCurveByName(Ljava/lang/String;)Lorg/spongycastle/asn1/x9/X9ECParameters;
.registers 2
.prologue
.line 348
invoke-static {p0}, Lorg/spongycastle/crypto/ec/CustomNamedCurves;->getByName(Ljava/lang/String;)Lorg/spongycastle/asn1/x9/X9ECParameters;
move-result-object v0
.line 350
if-nez v0, :cond_1c
.line 352
invoke-static {p0}, Lorg/spongycastle/asn1/x9/X962NamedCurves;->getByName(Ljava/lang/String;)Lorg/spongycastle/asn1/x9/X9ECParameters;
move-result-object v0
.line 353
if-nez v0, :cond_10
.line 355
invoke-static {p0}, Lorg/spongycastle/asn1/sec/SECNamedCurves;->getByName(Ljava/lang/String;)Lorg/spongycastle/asn1/x9/X9ECParameters;
move-result-object v0
.line 357
:cond_10
if-nez v0, :cond_16
.line 359
invoke-static {p0}, Lorg/spongycastle/asn1/nist/NISTNamedCurves;->getByName(Ljava/lang/String;)Lorg/spongycastle/asn1/x9/X9ECParameters;
move-result-object v0
.line 361
:cond_16
if-nez v0, :cond_1c
.line 363
invoke-static {p0}, Lorg/spongycastle/asn1/teletrust/TeleTrusTNamedCurves;->getByName(Ljava/lang/String;)Lorg/spongycastle/asn1/x9/X9ECParameters;
move-result-object v0
.line 367
:cond_1c
return-object v0
.end method
.method public static getNamedCurveByOid(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;)Lorg/spongycastle/asn1/x9/X9ECParameters;
.registers 2
.prologue
.line 323
invoke-static {p0}, Lorg/spongycastle/crypto/ec/CustomNamedCurves;->getByOID(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;)Lorg/spongycastle/asn1/x9/X9ECParameters;
move-result-object v0
.line 325
if-nez v0, :cond_1c
.line 327
invoke-static {p0}, Lorg/spongycastle/asn1/x9/X962NamedCurves;->getByOID(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;)Lorg/spongycastle/asn1/x9/X9ECParameters;
move-result-object v0
.line 328
if-nez v0, :cond_10
.line 330
invoke-static {p0}, Lorg/spongycastle/asn1/sec/SECNamedCurves;->getByOID(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;)Lorg/spongycastle/asn1/x9/X9ECParameters;
move-result-object v0
.line 332
:cond_10
if-nez v0, :cond_16
.line 334
invoke-static {p0}, Lorg/spongycastle/asn1/nist/NISTNamedCurves;->getByOID(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;)Lorg/spongycastle/asn1/x9/X9ECParameters;
move-result-object v0
.line 336
:cond_16
if-nez v0, :cond_1c
.line 338
invoke-static {p0}, Lorg/spongycastle/asn1/teletrust/TeleTrusTNamedCurves;->getByOID(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;)Lorg/spongycastle/asn1/x9/X9ECParameters;
move-result-object v0
.line 342
:cond_1c
return-object v0
.end method
.method public static getNamedCurveOid(Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
.registers 3
.prologue
const/16 v1, 0x20
.line 245
invoke-virtual {p0, v1}, Ljava/lang/String;->indexOf(I)I
move-result v0
if-lez v0, :cond_12
.line 247
invoke-virtual {p0, v1}, Ljava/lang/String;->indexOf(I)I
move-result v0
add-int/lit8 v0, v0, 0x1
invoke-virtual {p0, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object p0
.line 256
:cond_12
const/4 v0, 0x0
:try_start_13
invoke-virtual {p0, v0}, Ljava/lang/String;->charAt(I)C
move-result v0
const/16 v1, 0x30
if-lt v0, v1, :cond_2a
const/4 v0, 0x0
invoke-virtual {p0, v0}, Ljava/lang/String;->charAt(I)C
move-result v0
const/16 v1, 0x32
if-gt v0, v1, :cond_2a
.line 258
new-instance v0, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-direct {v0, p0}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;-><init>(Ljava/lang/String;)V
.line 267
:goto_29
return-object v0
.line 262
:cond_2a
invoke-static {p0}, Lorg/spongycastle/jcajce/provider/asymmetric/util/ECUtil;->lookupOidByName(Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
:try_end_2d
.catch Ljava/lang/IllegalArgumentException; {:try_start_13 .. :try_end_2d} :catch_2f
move-result-object v0
goto :goto_29
.line 267
:catch_2f
move-exception v0
invoke-static {p0}, Lorg/spongycastle/jcajce/provider/asymmetric/util/ECUtil;->lookupOidByName(Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v0
goto :goto_29
.end method
.method public static getNamedCurveOid(Lorg/spongycastle/jce/spec/ECParameterSpec;)Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
.registers 6
.prologue
.line 302
invoke-static {}, Lorg/spongycastle/asn1/x9/ECNamedCurveTable;->getNames()Ljava/util/Enumeration;
move-result-object v1
:cond_4
invoke-interface {v1}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v0
if-eqz v0, :cond_51
.line 304
invoke-interface {v1}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/String;
.line 306
invoke-static {v0}, Lorg/spongycastle/asn1/x9/ECNamedCurveTable;->getByName(Ljava/lang/String;)Lorg/spongycastle/asn1/x9/X9ECParameters;
move-result-object v2
.line 308
invoke-virtual {v2}, Lorg/spongycastle/asn1/x9/X9ECParameters;->getN()Ljava/math/BigInteger;
move-result-object v3
invoke-virtual {p0}, Lorg/spongycastle/jce/spec/ECParameterSpec;->getN()Ljava/math/BigInteger;
move-result-object v4
invoke-virtual {v3, v4}, Ljava/math/BigInteger;->equals(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_4
.line 309
invoke-virtual {v2}, Lorg/spongycastle/asn1/x9/X9ECParameters;->getH()Ljava/math/BigInteger;
move-result-object v3
invoke-virtual {p0}, Lorg/spongycastle/jce/spec/ECParameterSpec;->getH()Ljava/math/BigInteger;
move-result-object v4
invoke-virtual {v3, v4}, Ljava/math/BigInteger;->equals(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_4
.line 310
invoke-virtual {v2}, Lorg/spongycastle/asn1/x9/X9ECParameters;->getCurve()Lorg/spongycastle/math/ec/ECCurve;
move-result-object v3
invoke-virtual {p0}, Lorg/spongycastle/jce/spec/ECParameterSpec;->getCurve()Lorg/spongycastle/math/ec/ECCurve;
move-result-object v4
invoke-virtual {v3, v4}, Lorg/spongycastle/math/ec/ECCurve;->equals(Lorg/spongycastle/math/ec/ECCurve;)Z
move-result v3
if-eqz v3, :cond_4
.line 311
invoke-virtual {v2}, Lorg/spongycastle/asn1/x9/X9ECParameters;->getG()Lorg/spongycastle/math/ec/ECPoint;
move-result-object v2
invoke-virtual {p0}, Lorg/spongycastle/jce/spec/ECParameterSpec;->getG()Lorg/spongycastle/math/ec/ECPoint;
move-result-object v3
invoke-virtual {v2, v3}, Lorg/spongycastle/math/ec/ECPoint;->equals(Lorg/spongycastle/math/ec/ECPoint;)Z
move-result v2
if-eqz v2, :cond_4
.line 313
invoke-static {v0}, Lorg/spongycastle/asn1/x9/ECNamedCurveTable;->getOID(Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v0
.line 317
:goto_50
return-object v0
:cond_51
const/4 v0, 0x0
goto :goto_50
.end method
.method public static getOrderBitLength(Ljava/math/BigInteger;Ljava/math/BigInteger;)I
.registers 3
.prologue
.line 223
if-nez p0, :cond_18
.line 225
sget-object v0, Lorg/spongycastle/jce/provider/BouncyCastleProvider;->CONFIGURATION:Lorg/spongycastle/jcajce/provider/config/ProviderConfiguration;
invoke-interface {v0}, Lorg/spongycastle/jcajce/provider/config/ProviderConfiguration;->getEcImplicitlyCa()Lorg/spongycastle/jce/spec/ECParameterSpec;
move-result-object v0
.line 227
if-nez v0, :cond_f
.line 229
invoke-virtual {p1}, Ljava/math/BigInteger;->bitLength()I
move-result v0
.line 236
:goto_e
return v0
.line 232
:cond_f
invoke-virtual {v0}, Lorg/spongycastle/jce/spec/ECParameterSpec;->getN()Ljava/math/BigInteger;
move-result-object v0
invoke-virtual {v0}, Ljava/math/BigInteger;->bitLength()I
move-result v0
goto :goto_e
.line 236
:cond_18
invoke-virtual {p0}, Ljava/math/BigInteger;->bitLength()I
move-result v0
goto :goto_e
.end method
.method private static lookupOidByName(Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
.registers 2
.prologue
.line 273
invoke-static {p0}, Lorg/spongycastle/asn1/x9/X962NamedCurves;->getOID(Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v0
.line 275
if-nez v0, :cond_22
.line 277
invoke-static {p0}, Lorg/spongycastle/asn1/sec/SECNamedCurves;->getOID(Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v0
.line 278
if-nez v0, :cond_10
.line 280
invoke-static {p0}, Lorg/spongycastle/asn1/nist/NISTNamedCurves;->getOID(Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v0
.line 282
:cond_10
if-nez v0, :cond_16
.line 284
invoke-static {p0}, Lorg/spongycastle/asn1/teletrust/TeleTrusTNamedCurves;->getOID(Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v0
.line 286
:cond_16
if-nez v0, :cond_1c
.line 288
invoke-static {p0}, Lorg/spongycastle/asn1/cryptopro/ECGOST3410NamedCurves;->getOID(Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v0
.line 290
:cond_1c
if-nez v0, :cond_22
.line 292
invoke-static {p0}, Lorg/spongycastle/asn1/anssi/ANSSINamedCurves;->getOID(Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v0
.line 296
:cond_22
return-object v0
.end method