DESede$KeyFactory.smali
.class public Lorg/spongycastle/jcajce/provider/symmetric/DESede$KeyFactory;
.super Lorg/spongycastle/jcajce/provider/symmetric/util/BaseSecretKeyFactory;
.source "DESede.java"
# direct methods
.method public constructor <init>()V
.registers 3
.prologue
.line 286
const-string v0, "DESede"
const/4 v1, 0x0
invoke-direct {p0, v0, v1}, Lorg/spongycastle/jcajce/provider/symmetric/util/BaseSecretKeyFactory;-><init>(Ljava/lang/String;Lorg/spongycastle/asn1/ASN1ObjectIdentifier;)V
.line 287
return-void
.end method
# virtual methods
.method protected engineGenerateSecret(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;
.registers 5
.prologue
.line 340
instance-of v0, p1, Ljavax/crypto/spec/DESedeKeySpec;
if-eqz v0, :cond_12
.line 342
check-cast p1, Ljavax/crypto/spec/DESedeKeySpec;
.line 343
new-instance v0, Ljavax/crypto/spec/SecretKeySpec;
invoke-virtual {p1}, Ljavax/crypto/spec/DESedeKeySpec;->getKey()[B
move-result-object v1
const-string v2, "DESede"
invoke-direct {v0, v1, v2}, Ljavax/crypto/spec/SecretKeySpec;-><init>([BLjava/lang/String;)V
.line 346
:goto_11
return-object v0
:cond_12
invoke-super {p0, p1}, Lorg/spongycastle/jcajce/provider/symmetric/util/BaseSecretKeyFactory;->engineGenerateSecret(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;
move-result-object v0
goto :goto_11
.end method
.method protected engineGetKeySpec(Ljavax/crypto/SecretKey;Ljava/lang/Class;)Ljava/security/spec/KeySpec;
.registers 8
.prologue
const/16 v2, 0x10
.line 294
if-nez p2, :cond_c
.line 296
new-instance v0, Ljava/security/spec/InvalidKeySpecException;
const-string v1, "keySpec parameter is null"
invoke-direct {v0, v1}, Ljava/security/spec/InvalidKeySpecException;-><init>(Ljava/lang/String;)V
throw v0
.line 298
:cond_c
if-nez p1, :cond_16
.line 300
new-instance v0, Ljava/security/spec/InvalidKeySpecException;
const-string v1, "key parameter is null"
invoke-direct {v0, v1}, Ljava/security/spec/InvalidKeySpecException;-><init>(Ljava/lang/String;)V
throw v0
.line 303
:cond_16
const-class v0, Ljavax/crypto/spec/SecretKeySpec;
invoke-virtual {v0, p2}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v0
if-eqz v0, :cond_2a
.line 305
new-instance v0, Ljavax/crypto/spec/SecretKeySpec;
invoke-interface {p1}, Ljavax/crypto/SecretKey;->getEncoded()[B
move-result-object v1
iget-object v2, p0, Lorg/spongycastle/jcajce/provider/symmetric/DESede$KeyFactory;->algName:Ljava/lang/String;
invoke-direct {v0, v1, v2}, Ljavax/crypto/spec/SecretKeySpec;-><init>([BLjava/lang/String;)V
.line 324
:goto_29
return-object v0
.line 307
:cond_2a
const-class v0, Ljavax/crypto/spec/DESedeKeySpec;
invoke-virtual {v0, p2}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v0
if-eqz v0, :cond_63
.line 309
invoke-interface {p1}, Ljavax/crypto/SecretKey;->getEncoded()[B
move-result-object v1
.line 313
:try_start_36
array-length v0, v1
if-ne v0, v2, :cond_5d
.line 315
const/16 v0, 0x18
new-array v2, v0, [B
.line 317
const/4 v0, 0x0
const/4 v3, 0x0
const/16 v4, 0x10
invoke-static {v1, v0, v2, v3, v4}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 318
const/4 v0, 0x0
const/16 v3, 0x10
const/16 v4, 0x8
invoke-static {v1, v0, v2, v3, v4}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 320
new-instance v0, Ljavax/crypto/spec/DESedeKeySpec;
invoke-direct {v0, v2}, Ljavax/crypto/spec/DESedeKeySpec;-><init>([B)V
:try_end_51
.catch Ljava/lang/Exception; {:try_start_36 .. :try_end_51} :catch_52
goto :goto_29
.line 327
:catch_52
move-exception v0
.line 329
new-instance v1, Ljava/security/spec/InvalidKeySpecException;
invoke-virtual {v0}, Ljava/lang/Exception;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {v1, v0}, Ljava/security/spec/InvalidKeySpecException;-><init>(Ljava/lang/String;)V
throw v1
.line 324
:cond_5d
:try_start_5d
new-instance v0, Ljavax/crypto/spec/DESedeKeySpec;
invoke-direct {v0, v1}, Ljavax/crypto/spec/DESedeKeySpec;-><init>([B)V
:try_end_62
.catch Ljava/lang/Exception; {:try_start_5d .. :try_end_62} :catch_52
goto :goto_29
.line 333
:cond_63
new-instance v0, Ljava/security/spec/InvalidKeySpecException;
const-string v1, "Invalid KeySpec"
invoke-direct {v0, v1}, Ljava/security/spec/InvalidKeySpecException;-><init>(Ljava/lang/String;)V
throw v0
.end method