OpenSSLECKeyFactory.smali
.class public final Lorg/conscrypt/OpenSSLECKeyFactory;
.super Ljava/security/KeyFactorySpi;
.source ""
# direct methods
.method public constructor <init>()V
.registers 1
invoke-direct {p0}, Ljava/security/KeyFactorySpi;-><init>()V
return-void
.end method
# virtual methods
.method protected engineGeneratePrivate(Ljava/security/spec/KeySpec;)Ljava/security/PrivateKey;
.registers 5
if-eqz p1, :cond_3a
instance-of v0, p1, Ljava/security/spec/ECPrivateKeySpec;
if-eqz v0, :cond_e
new-instance v0, Lorg/conscrypt/OpenSSLECPrivateKey;
check-cast p1, Ljava/security/spec/ECPrivateKeySpec;
invoke-direct {v0, p1}, Lorg/conscrypt/OpenSSLECPrivateKey;-><init>(Ljava/security/spec/ECPrivateKeySpec;)V
return-object v0
:cond_e
instance-of v0, p1, Ljava/security/spec/PKCS8EncodedKeySpec;
if-eqz v0, :cond_1b
check-cast p1, Ljava/security/spec/PKCS8EncodedKeySpec;
const/16 v0, 0x198
invoke-static {p1, v0}, Lorg/conscrypt/OpenSSLKey;->getPrivateKey(Ljava/security/spec/PKCS8EncodedKeySpec;I)Ljava/security/PrivateKey;
move-result-object p1
return-object p1
:cond_1b
new-instance v0, Ljava/security/spec/InvalidKeySpecException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Must use ECPrivateKeySpec or PKCS8EncodedKeySpec; was "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object p1
invoke-virtual {p1}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object p1
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {v0, p1}, Ljava/security/spec/InvalidKeySpecException;-><init>(Ljava/lang/String;)V
throw v0
:cond_3a
new-instance p1, Ljava/security/spec/InvalidKeySpecException;
const-string v0, "keySpec == null"
invoke-direct {p1, v0}, Ljava/security/spec/InvalidKeySpecException;-><init>(Ljava/lang/String;)V
throw p1
.end method
.method protected engineGeneratePublic(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;
.registers 5
if-eqz p1, :cond_3a
instance-of v0, p1, Ljava/security/spec/ECPublicKeySpec;
if-eqz v0, :cond_e
new-instance v0, Lorg/conscrypt/OpenSSLECPublicKey;
check-cast p1, Ljava/security/spec/ECPublicKeySpec;
invoke-direct {v0, p1}, Lorg/conscrypt/OpenSSLECPublicKey;-><init>(Ljava/security/spec/ECPublicKeySpec;)V
return-object v0
:cond_e
instance-of v0, p1, Ljava/security/spec/X509EncodedKeySpec;
if-eqz v0, :cond_1b
check-cast p1, Ljava/security/spec/X509EncodedKeySpec;
const/16 v0, 0x198
invoke-static {p1, v0}, Lorg/conscrypt/OpenSSLKey;->getPublicKey(Ljava/security/spec/X509EncodedKeySpec;I)Ljava/security/PublicKey;
move-result-object p1
return-object p1
:cond_1b
new-instance v0, Ljava/security/spec/InvalidKeySpecException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Must use ECPublicKeySpec or X509EncodedKeySpec; was "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object p1
invoke-virtual {p1}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object p1
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {v0, p1}, Ljava/security/spec/InvalidKeySpecException;-><init>(Ljava/lang/String;)V
throw v0
:cond_3a
new-instance p1, Ljava/security/spec/InvalidKeySpecException;
const-string v0, "keySpec == null"
invoke-direct {p1, v0}, Ljava/security/spec/InvalidKeySpecException;-><init>(Ljava/lang/String;)V
throw p1
.end method
.method protected engineGetKeySpec(Ljava/security/Key;Ljava/lang/Class;)Ljava/security/spec/KeySpec;
.registers 8
.annotation system Ldalvik/annotation/Signature;
value = {
"<T::",
"Ljava/security/spec/KeySpec;",
">(",
"Ljava/security/Key;",
"Ljava/lang/Class<",
"TT;>;)TT;"
}
.end annotation
if-eqz p1, :cond_185
if-eqz p2, :cond_17d
invoke-interface {p1}, Ljava/security/Key;->getAlgorithm()Ljava/lang/String;
move-result-object v0
const-string v1, "EC"
invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_175
instance-of v0, p1, Ljava/security/interfaces/ECPublicKey;
if-eqz v0, :cond_2c
const-class v0, Ljava/security/spec/ECPublicKeySpec;
invoke-virtual {v0, p2}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v0
if-eqz v0, :cond_2c
check-cast p1, Ljava/security/interfaces/ECPublicKey;
new-instance p2, Ljava/security/spec/ECPublicKeySpec;
invoke-interface {p1}, Ljava/security/interfaces/ECPublicKey;->getW()Ljava/security/spec/ECPoint;
move-result-object v0
invoke-interface {p1}, Ljava/security/interfaces/ECPublicKey;->getParams()Ljava/security/spec/ECParameterSpec;
move-result-object p1
invoke-direct {p2, v0, p1}, Ljava/security/spec/ECPublicKeySpec;-><init>(Ljava/security/spec/ECPoint;Ljava/security/spec/ECParameterSpec;)V
return-object p2
:cond_2c
instance-of v0, p1, Ljava/security/PublicKey;
const-string v1, "X.509"
if-eqz v0, :cond_6b
const-class v2, Ljava/security/spec/ECPublicKeySpec;
invoke-virtual {v2, p2}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v2
if-eqz v2, :cond_6b
invoke-interface {p1}, Ljava/security/Key;->getEncoded()[B
move-result-object p2
invoke-interface {p1}, Ljava/security/Key;->getFormat()Ljava/lang/String;
move-result-object p1
invoke-virtual {v1, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p1
if-eqz p1, :cond_63
if-eqz p2, :cond_63
new-instance p1, Ljava/security/spec/X509EncodedKeySpec;
invoke-direct {p1, p2}, Ljava/security/spec/X509EncodedKeySpec;-><init>([B)V
invoke-virtual {p0, p1}, Lorg/conscrypt/OpenSSLECKeyFactory;->engineGeneratePublic(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;
move-result-object p1
check-cast p1, Ljava/security/interfaces/ECPublicKey;
new-instance p2, Ljava/security/spec/ECPublicKeySpec;
invoke-interface {p1}, Ljava/security/interfaces/ECPublicKey;->getW()Ljava/security/spec/ECPoint;
move-result-object v0
invoke-interface {p1}, Ljava/security/interfaces/ECPublicKey;->getParams()Ljava/security/spec/ECParameterSpec;
move-result-object p1
invoke-direct {p2, v0, p1}, Ljava/security/spec/ECPublicKeySpec;-><init>(Ljava/security/spec/ECPoint;Ljava/security/spec/ECParameterSpec;)V
return-object p2
:cond_63
new-instance p1, Ljava/security/spec/InvalidKeySpecException;
const-string p2, "Not a valid X.509 encoding"
invoke-direct {p1, p2}, Ljava/security/spec/InvalidKeySpecException;-><init>(Ljava/lang/String;)V
throw p1
:cond_6b
instance-of v2, p1, Ljava/security/interfaces/ECPrivateKey;
if-eqz v2, :cond_87
const-class v2, Ljava/security/spec/ECPrivateKeySpec;
invoke-virtual {v2, p2}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v2
if-eqz v2, :cond_87
check-cast p1, Ljava/security/interfaces/ECPrivateKey;
new-instance p2, Ljava/security/spec/ECPrivateKeySpec;
invoke-interface {p1}, Ljava/security/interfaces/ECPrivateKey;->getS()Ljava/math/BigInteger;
move-result-object v0
invoke-interface {p1}, Ljava/security/interfaces/ECPrivateKey;->getParams()Ljava/security/spec/ECParameterSpec;
move-result-object p1
invoke-direct {p2, v0, p1}, Ljava/security/spec/ECPrivateKeySpec;-><init>(Ljava/math/BigInteger;Ljava/security/spec/ECParameterSpec;)V
return-object p2
:cond_87
instance-of v2, p1, Ljava/security/PrivateKey;
const-string v3, "PKCS#8"
if-eqz v2, :cond_c6
const-class v4, Ljava/security/spec/ECPrivateKeySpec;
invoke-virtual {v4, p2}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v4
if-eqz v4, :cond_c6
invoke-interface {p1}, Ljava/security/Key;->getEncoded()[B
move-result-object p2
invoke-interface {p1}, Ljava/security/Key;->getFormat()Ljava/lang/String;
move-result-object p1
invoke-virtual {v3, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p1
if-eqz p1, :cond_be
if-eqz p2, :cond_be
new-instance p1, Ljava/security/spec/PKCS8EncodedKeySpec;
invoke-direct {p1, p2}, Ljava/security/spec/PKCS8EncodedKeySpec;-><init>([B)V
invoke-virtual {p0, p1}, Lorg/conscrypt/OpenSSLECKeyFactory;->engineGeneratePrivate(Ljava/security/spec/KeySpec;)Ljava/security/PrivateKey;
move-result-object p1
check-cast p1, Ljava/security/interfaces/ECPrivateKey;
new-instance p2, Ljava/security/spec/ECPrivateKeySpec;
invoke-interface {p1}, Ljava/security/interfaces/ECPrivateKey;->getS()Ljava/math/BigInteger;
move-result-object v0
invoke-interface {p1}, Ljava/security/interfaces/ECPrivateKey;->getParams()Ljava/security/spec/ECParameterSpec;
move-result-object p1
invoke-direct {p2, v0, p1}, Ljava/security/spec/ECPrivateKeySpec;-><init>(Ljava/math/BigInteger;Ljava/security/spec/ECParameterSpec;)V
return-object p2
:cond_be
new-instance p1, Ljava/security/spec/InvalidKeySpecException;
const-string p2, "Not a valid PKCS#8 encoding"
invoke-direct {p1, p2}, Ljava/security/spec/InvalidKeySpecException;-><init>(Ljava/lang/String;)V
throw p1
:cond_c6
const-string v4, "Key is not encodable"
if-eqz v2, :cond_109
const-class v2, Ljava/security/spec/PKCS8EncodedKeySpec;
invoke-virtual {v2, p2}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v2
if-eqz v2, :cond_109
invoke-interface {p1}, Ljava/security/Key;->getEncoded()[B
move-result-object p2
invoke-interface {p1}, Ljava/security/Key;->getFormat()Ljava/lang/String;
move-result-object v0
invoke-virtual {v3, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_ee
if-eqz p2, :cond_e8
new-instance p1, Ljava/security/spec/PKCS8EncodedKeySpec;
invoke-direct {p1, p2}, Ljava/security/spec/PKCS8EncodedKeySpec;-><init>([B)V
return-object p1
:cond_e8
new-instance p1, Ljava/security/spec/InvalidKeySpecException;
invoke-direct {p1, v4}, Ljava/security/spec/InvalidKeySpecException;-><init>(Ljava/lang/String;)V
throw p1
:cond_ee
new-instance p2, Ljava/security/spec/InvalidKeySpecException;
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "Encoding type must be PKCS#8; was "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-interface {p1}, Ljava/security/Key;->getFormat()Ljava/lang/String;
move-result-object p1
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {p2, p1}, Ljava/security/spec/InvalidKeySpecException;-><init>(Ljava/lang/String;)V
throw p2
:cond_109
if-eqz v0, :cond_14a
const-class v0, Ljava/security/spec/X509EncodedKeySpec;
invoke-virtual {v0, p2}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v0
if-eqz v0, :cond_14a
invoke-interface {p1}, Ljava/security/Key;->getEncoded()[B
move-result-object p2
invoke-interface {p1}, Ljava/security/Key;->getFormat()Ljava/lang/String;
move-result-object v0
invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_12f
if-eqz p2, :cond_129
new-instance p1, Ljava/security/spec/X509EncodedKeySpec;
invoke-direct {p1, p2}, Ljava/security/spec/X509EncodedKeySpec;-><init>([B)V
return-object p1
:cond_129
new-instance p1, Ljava/security/spec/InvalidKeySpecException;
invoke-direct {p1, v4}, Ljava/security/spec/InvalidKeySpecException;-><init>(Ljava/lang/String;)V
throw p1
:cond_12f
new-instance p2, Ljava/security/spec/InvalidKeySpecException;
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "Encoding type must be X.509; was "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-interface {p1}, Ljava/security/Key;->getFormat()Ljava/lang/String;
move-result-object p1
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {p2, p1}, Ljava/security/spec/InvalidKeySpecException;-><init>(Ljava/lang/String;)V
throw p2
:cond_14a
new-instance v0, Ljava/security/spec/InvalidKeySpecException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Unsupported key type and key spec combination; key="
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object p1
invoke-virtual {p1}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object p1
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string p1, ", keySpec="
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p2}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object p1
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {v0, p1}, Ljava/security/spec/InvalidKeySpecException;-><init>(Ljava/lang/String;)V
throw v0
:cond_175
new-instance p1, Ljava/security/spec/InvalidKeySpecException;
const-string p2, "Key must be an EC key"
invoke-direct {p1, p2}, Ljava/security/spec/InvalidKeySpecException;-><init>(Ljava/lang/String;)V
throw p1
:cond_17d
new-instance p1, Ljava/security/spec/InvalidKeySpecException;
const-string p2, "keySpec == null"
invoke-direct {p1, p2}, Ljava/security/spec/InvalidKeySpecException;-><init>(Ljava/lang/String;)V
throw p1
:cond_185
new-instance p1, Ljava/security/spec/InvalidKeySpecException;
const-string p2, "key == null"
invoke-direct {p1, p2}, Ljava/security/spec/InvalidKeySpecException;-><init>(Ljava/lang/String;)V
throw p1
.end method
.method protected engineTranslateKey(Ljava/security/Key;)Ljava/security/Key;
.registers 5
if-eqz p1, :cond_c6
instance-of v0, p1, Lorg/conscrypt/OpenSSLECPublicKey;
if-nez v0, :cond_c5
instance-of v0, p1, Lorg/conscrypt/OpenSSLECPrivateKey;
if-eqz v0, :cond_c
goto/16 :goto_c5
:cond_c
instance-of v0, p1, Ljava/security/interfaces/ECPublicKey;
if-eqz v0, :cond_2b
check-cast p1, Ljava/security/interfaces/ECPublicKey;
invoke-interface {p1}, Ljava/security/interfaces/ECPublicKey;->getW()Ljava/security/spec/ECPoint;
move-result-object v0
invoke-interface {p1}, Ljava/security/interfaces/ECPublicKey;->getParams()Ljava/security/spec/ECParameterSpec;
move-result-object p1
:try_start_1a
new-instance v1, Ljava/security/spec/ECPublicKeySpec;
invoke-direct {v1, v0, p1}, Ljava/security/spec/ECPublicKeySpec;-><init>(Ljava/security/spec/ECPoint;Ljava/security/spec/ECParameterSpec;)V
invoke-virtual {p0, v1}, Lorg/conscrypt/OpenSSLECKeyFactory;->engineGeneratePublic(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;
move-result-object p1
:try_end_23
.catch Ljava/security/spec/InvalidKeySpecException; {:try_start_1a .. :try_end_23} :catch_24
return-object p1
:catch_24
move-exception p1
new-instance v0, Ljava/security/InvalidKeyException;
invoke-direct {v0, p1}, Ljava/security/InvalidKeyException;-><init>(Ljava/lang/Throwable;)V
throw v0
:cond_2b
instance-of v0, p1, Ljava/security/interfaces/ECPrivateKey;
if-eqz v0, :cond_4a
check-cast p1, Ljava/security/interfaces/ECPrivateKey;
invoke-interface {p1}, Ljava/security/interfaces/ECPrivateKey;->getS()Ljava/math/BigInteger;
move-result-object v0
invoke-interface {p1}, Ljava/security/interfaces/ECPrivateKey;->getParams()Ljava/security/spec/ECParameterSpec;
move-result-object p1
:try_start_39
new-instance v1, Ljava/security/spec/ECPrivateKeySpec;
invoke-direct {v1, v0, p1}, Ljava/security/spec/ECPrivateKeySpec;-><init>(Ljava/math/BigInteger;Ljava/security/spec/ECParameterSpec;)V
invoke-virtual {p0, v1}, Lorg/conscrypt/OpenSSLECKeyFactory;->engineGeneratePrivate(Ljava/security/spec/KeySpec;)Ljava/security/PrivateKey;
move-result-object p1
:try_end_42
.catch Ljava/security/spec/InvalidKeySpecException; {:try_start_39 .. :try_end_42} :catch_43
return-object p1
:catch_43
move-exception p1
new-instance v0, Ljava/security/InvalidKeyException;
invoke-direct {v0, p1}, Ljava/security/InvalidKeyException;-><init>(Ljava/lang/Throwable;)V
throw v0
:cond_4a
instance-of v0, p1, Ljava/security/PrivateKey;
const-string v1, "Key does not support encoding"
if-eqz v0, :cond_79
invoke-interface {p1}, Ljava/security/Key;->getFormat()Ljava/lang/String;
move-result-object v0
const-string v2, "PKCS#8"
invoke-virtual {v2, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_79
invoke-interface {p1}, Ljava/security/Key;->getEncoded()[B
move-result-object p1
if-eqz p1, :cond_73
:try_start_62
new-instance v0, Ljava/security/spec/PKCS8EncodedKeySpec;
invoke-direct {v0, p1}, Ljava/security/spec/PKCS8EncodedKeySpec;-><init>([B)V
invoke-virtual {p0, v0}, Lorg/conscrypt/OpenSSLECKeyFactory;->engineGeneratePrivate(Ljava/security/spec/KeySpec;)Ljava/security/PrivateKey;
move-result-object p1
:try_end_6b
.catch Ljava/security/spec/InvalidKeySpecException; {:try_start_62 .. :try_end_6b} :catch_6c
return-object p1
:catch_6c
move-exception p1
new-instance v0, Ljava/security/InvalidKeyException;
invoke-direct {v0, p1}, Ljava/security/InvalidKeyException;-><init>(Ljava/lang/Throwable;)V
throw v0
:cond_73
new-instance p1, Ljava/security/InvalidKeyException;
invoke-direct {p1, v1}, Ljava/security/InvalidKeyException;-><init>(Ljava/lang/String;)V
throw p1
:cond_79
instance-of v0, p1, Ljava/security/PublicKey;
if-eqz v0, :cond_a6
invoke-interface {p1}, Ljava/security/Key;->getFormat()Ljava/lang/String;
move-result-object v0
const-string v2, "X.509"
invoke-virtual {v2, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_a6
invoke-interface {p1}, Ljava/security/Key;->getEncoded()[B
move-result-object p1
if-eqz p1, :cond_a0
:try_start_8f
new-instance v0, Ljava/security/spec/X509EncodedKeySpec;
invoke-direct {v0, p1}, Ljava/security/spec/X509EncodedKeySpec;-><init>([B)V
invoke-virtual {p0, v0}, Lorg/conscrypt/OpenSSLECKeyFactory;->engineGeneratePublic(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;
move-result-object p1
:try_end_98
.catch Ljava/security/spec/InvalidKeySpecException; {:try_start_8f .. :try_end_98} :catch_99
return-object p1
:catch_99
move-exception p1
new-instance v0, Ljava/security/InvalidKeyException;
invoke-direct {v0, p1}, Ljava/security/InvalidKeyException;-><init>(Ljava/lang/Throwable;)V
throw v0
:cond_a0
new-instance p1, Ljava/security/InvalidKeyException;
invoke-direct {p1, v1}, Ljava/security/InvalidKeyException;-><init>(Ljava/lang/String;)V
throw p1
:cond_a6
new-instance v0, Ljava/security/InvalidKeyException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Key must be EC public or private key; was "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object p1
invoke-virtual {p1}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object p1
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {v0, p1}, Ljava/security/InvalidKeyException;-><init>(Ljava/lang/String;)V
throw v0
:cond_c5
:goto_c5
return-object p1
:cond_c6
new-instance p1, Ljava/security/InvalidKeyException;
const-string v0, "key == null"
invoke-direct {p1, v0}, Ljava/security/InvalidKeyException;-><init>(Ljava/lang/String;)V
throw p1
.end method