DeterministicKey.smali
.class public Lorg/bitcoinj/crypto/DeterministicKey;
.super Lorg/bitcoinj/core/ECKey;
.source "DeterministicKey.java"
# static fields
.field public static final CHILDNUM_ORDER:Ljava/util/Comparator;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Comparator",
"<",
"Lorg/bitcoinj/core/ECKey;",
">;"
}
.end annotation
.end field
# instance fields
.field private final chainCode:[B
.field private final childNumberPath:Lcom/google/common/collect/ImmutableList;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lcom/google/common/collect/ImmutableList",
"<",
"Lorg/bitcoinj/crypto/ChildNumber;",
">;"
}
.end annotation
.end field
.field private final depth:I
.field private final parent:Lorg/bitcoinj/crypto/DeterministicKey;
.field private parentFingerprint:I
# direct methods
.method static constructor <clinit>()V
.registers 1
.prologue
.line 46
new-instance v0, Lorg/bitcoinj/crypto/DeterministicKey$1;
invoke-direct {v0}, Lorg/bitcoinj/crypto/DeterministicKey$1;-><init>()V
sput-object v0, Lorg/bitcoinj/crypto/DeterministicKey;->CHILDNUM_ORDER:Ljava/util/Comparator;
return-void
.end method
.method public constructor <init>(Lcom/google/common/collect/ImmutableList;[BLjava/math/BigInteger;Lorg/bitcoinj/crypto/DeterministicKey;)V
.registers 8
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/common/collect/ImmutableList",
"<",
"Lorg/bitcoinj/crypto/ChildNumber;",
">;[B",
"Ljava/math/BigInteger;",
"Lorg/bitcoinj/crypto/DeterministicKey;",
")V"
}
.end annotation
.prologue
const/4 v1, 0x0
.line 91
invoke-static {p3}, Lorg/bitcoinj/core/ECKey;->publicPointFromPrivate(Ljava/math/BigInteger;)Lorg/spongycastle/math/ec/ECPoint;
move-result-object v0
invoke-static {v0}, Lorg/bitcoinj/crypto/DeterministicKey;->compressPoint(Lorg/spongycastle/math/ec/ECPoint;)Lorg/spongycastle/math/ec/ECPoint;
move-result-object v0
invoke-direct {p0, p3, v0}, Lorg/bitcoinj/core/ECKey;-><init>(Ljava/math/BigInteger;Lorg/spongycastle/math/ec/ECPoint;)V
.line 92
array-length v0, p2
const/16 v2, 0x20
if-ne v0, v2, :cond_34
const/4 v0, 0x1
:goto_12
invoke-static {v0}, Lcom/google/common/base/n;->checkArgument(Z)V
.line 93
iput-object p4, p0, Lorg/bitcoinj/crypto/DeterministicKey;->parent:Lorg/bitcoinj/crypto/DeterministicKey;
.line 94
invoke-static {p1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/google/common/collect/ImmutableList;
iput-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->childNumberPath:Lcom/google/common/collect/ImmutableList;
.line 95
array-length v0, p2
invoke-static {p2, v0}, Ljava/util/Arrays;->copyOf([BI)[B
move-result-object v0
iput-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->chainCode:[B
.line 96
if-nez p4, :cond_36
move v0, v1
:goto_29
iput v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->depth:I
.line 97
if-eqz p4, :cond_31
invoke-virtual {p4}, Lorg/bitcoinj/crypto/DeterministicKey;->getFingerprint()I
move-result v1
:cond_31
iput v1, p0, Lorg/bitcoinj/crypto/DeterministicKey;->parentFingerprint:I
.line 98
return-void
:cond_34
move v0, v1
.line 92
goto :goto_12
.line 96
:cond_36
iget v0, p4, Lorg/bitcoinj/crypto/DeterministicKey;->depth:I
add-int/lit8 v0, v0, 0x1
goto :goto_29
.end method
.method private constructor <init>(Lcom/google/common/collect/ImmutableList;[BLjava/math/BigInteger;Lorg/bitcoinj/crypto/DeterministicKey;II)V
.registers 9
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/common/collect/ImmutableList",
"<",
"Lorg/bitcoinj/crypto/ChildNumber;",
">;[B",
"Ljava/math/BigInteger;",
"Lorg/bitcoinj/crypto/DeterministicKey;",
"II)V"
}
.end annotation
.prologue
.line 159
invoke-static {p3}, Lorg/bitcoinj/core/ECKey;->publicPointFromPrivate(Ljava/math/BigInteger;)Lorg/spongycastle/math/ec/ECPoint;
move-result-object v0
invoke-static {v0}, Lorg/bitcoinj/crypto/DeterministicKey;->compressPoint(Lorg/spongycastle/math/ec/ECPoint;)Lorg/spongycastle/math/ec/ECPoint;
move-result-object v0
invoke-direct {p0, p3, v0}, Lorg/bitcoinj/core/ECKey;-><init>(Ljava/math/BigInteger;Lorg/spongycastle/math/ec/ECPoint;)V
.line 160
array-length v0, p2
const/16 v1, 0x20
if-ne v0, v1, :cond_2e
const/4 v0, 0x1
:goto_11
invoke-static {v0}, Lcom/google/common/base/n;->checkArgument(Z)V
.line 161
iput-object p4, p0, Lorg/bitcoinj/crypto/DeterministicKey;->parent:Lorg/bitcoinj/crypto/DeterministicKey;
.line 162
invoke-static {p1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/google/common/collect/ImmutableList;
iput-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->childNumberPath:Lcom/google/common/collect/ImmutableList;
.line 163
array-length v0, p2
invoke-static {p2, v0}, Ljava/util/Arrays;->copyOf([BI)[B
move-result-object v0
iput-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->chainCode:[B
.line 164
iput p5, p0, Lorg/bitcoinj/crypto/DeterministicKey;->depth:I
.line 165
invoke-direct {p0, p4, p6}, Lorg/bitcoinj/crypto/DeterministicKey;->ascertainParentFingerprint(Lorg/bitcoinj/crypto/DeterministicKey;I)I
move-result v0
iput v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->parentFingerprint:I
.line 166
return-void
.line 160
:cond_2e
const/4 v0, 0x0
goto :goto_11
.end method
.method public constructor <init>(Lcom/google/common/collect/ImmutableList;[BLorg/bitcoinj/crypto/KeyCrypter;Lorg/bitcoinj/crypto/LazyECPoint;Lorg/bitcoinj/crypto/EncryptedData;Lorg/bitcoinj/crypto/DeterministicKey;)V
.registers 13
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/common/collect/ImmutableList",
"<",
"Lorg/bitcoinj/crypto/ChildNumber;",
">;[B",
"Lorg/bitcoinj/crypto/KeyCrypter;",
"Lorg/bitcoinj/crypto/LazyECPoint;",
"Lorg/bitcoinj/crypto/EncryptedData;",
"Lorg/bitcoinj/crypto/DeterministicKey;",
")V"
}
.end annotation
.prologue
.line 107
const/4 v4, 0x0
move-object v0, p0
move-object v1, p1
move-object v2, p2
move-object v3, p4
move-object v5, p6
invoke-direct/range {v0 .. v5}, Lorg/bitcoinj/crypto/DeterministicKey;-><init>(Lcom/google/common/collect/ImmutableList;[BLorg/bitcoinj/crypto/LazyECPoint;Ljava/math/BigInteger;Lorg/bitcoinj/crypto/DeterministicKey;)V
.line 108
invoke-static {p5}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/crypto/EncryptedData;
iput-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->encryptedPrivateKey:Lorg/bitcoinj/crypto/EncryptedData;
.line 109
invoke-static {p3}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/crypto/KeyCrypter;
iput-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->keyCrypter:Lorg/bitcoinj/crypto/KeyCrypter;
.line 110
return-void
.end method
.method public constructor <init>(Lcom/google/common/collect/ImmutableList;[BLorg/bitcoinj/crypto/LazyECPoint;Ljava/math/BigInteger;Lorg/bitcoinj/crypto/DeterministicKey;)V
.registers 9
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/common/collect/ImmutableList",
"<",
"Lorg/bitcoinj/crypto/ChildNumber;",
">;[B",
"Lorg/bitcoinj/crypto/LazyECPoint;",
"Ljava/math/BigInteger;",
"Lorg/bitcoinj/crypto/DeterministicKey;",
")V"
}
.end annotation
.prologue
const/4 v1, 0x0
.line 69
invoke-static {p3}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/crypto/LazyECPoint;
invoke-static {v0}, Lorg/bitcoinj/crypto/DeterministicKey;->compressPoint(Lorg/bitcoinj/crypto/LazyECPoint;)Lorg/bitcoinj/crypto/LazyECPoint;
move-result-object v0
invoke-direct {p0, p4, v0}, Lorg/bitcoinj/core/ECKey;-><init>(Ljava/math/BigInteger;Lorg/bitcoinj/crypto/LazyECPoint;)V
.line 70
array-length v0, p2
const/16 v2, 0x20
if-ne v0, v2, :cond_36
const/4 v0, 0x1
:goto_14
invoke-static {v0}, Lcom/google/common/base/n;->checkArgument(Z)V
.line 71
iput-object p5, p0, Lorg/bitcoinj/crypto/DeterministicKey;->parent:Lorg/bitcoinj/crypto/DeterministicKey;
.line 72
invoke-static {p1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/google/common/collect/ImmutableList;
iput-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->childNumberPath:Lcom/google/common/collect/ImmutableList;
.line 73
array-length v0, p2
invoke-static {p2, v0}, Ljava/util/Arrays;->copyOf([BI)[B
move-result-object v0
iput-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->chainCode:[B
.line 74
if-nez p5, :cond_38
move v0, v1
:goto_2b
iput v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->depth:I
.line 75
if-eqz p5, :cond_33
invoke-virtual {p5}, Lorg/bitcoinj/crypto/DeterministicKey;->getFingerprint()I
move-result v1
:cond_33
iput v1, p0, Lorg/bitcoinj/crypto/DeterministicKey;->parentFingerprint:I
.line 76
return-void
:cond_36
move v0, v1
.line 70
goto :goto_14
.line 74
:cond_38
iget v0, p5, Lorg/bitcoinj/crypto/DeterministicKey;->depth:I
add-int/lit8 v0, v0, 0x1
goto :goto_2b
.end method
.method private constructor <init>(Lcom/google/common/collect/ImmutableList;[BLorg/bitcoinj/crypto/LazyECPoint;Lorg/bitcoinj/crypto/DeterministicKey;II)V
.registers 9
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/common/collect/ImmutableList",
"<",
"Lorg/bitcoinj/crypto/ChildNumber;",
">;[B",
"Lorg/bitcoinj/crypto/LazyECPoint;",
"Lorg/bitcoinj/crypto/DeterministicKey;",
"II)V"
}
.end annotation
.prologue
.line 139
const/4 v1, 0x0
invoke-static {p3}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/crypto/LazyECPoint;
invoke-static {v0}, Lorg/bitcoinj/crypto/DeterministicKey;->compressPoint(Lorg/bitcoinj/crypto/LazyECPoint;)Lorg/bitcoinj/crypto/LazyECPoint;
move-result-object v0
invoke-direct {p0, v1, v0}, Lorg/bitcoinj/core/ECKey;-><init>(Ljava/math/BigInteger;Lorg/bitcoinj/crypto/LazyECPoint;)V
.line 140
array-length v0, p2
const/16 v1, 0x20
if-ne v0, v1, :cond_31
const/4 v0, 0x1
:goto_14
invoke-static {v0}, Lcom/google/common/base/n;->checkArgument(Z)V
.line 141
iput-object p4, p0, Lorg/bitcoinj/crypto/DeterministicKey;->parent:Lorg/bitcoinj/crypto/DeterministicKey;
.line 142
invoke-static {p1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/google/common/collect/ImmutableList;
iput-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->childNumberPath:Lcom/google/common/collect/ImmutableList;
.line 143
array-length v0, p2
invoke-static {p2, v0}, Ljava/util/Arrays;->copyOf([BI)[B
move-result-object v0
iput-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->chainCode:[B
.line 144
iput p5, p0, Lorg/bitcoinj/crypto/DeterministicKey;->depth:I
.line 145
invoke-direct {p0, p4, p6}, Lorg/bitcoinj/crypto/DeterministicKey;->ascertainParentFingerprint(Lorg/bitcoinj/crypto/DeterministicKey;I)I
move-result v0
iput v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->parentFingerprint:I
.line 146
return-void
.line 140
:cond_31
const/4 v0, 0x0
goto :goto_14
.end method
.method public constructor <init>(Lcom/google/common/collect/ImmutableList;[BLorg/spongycastle/math/ec/ECPoint;Ljava/math/BigInteger;Lorg/bitcoinj/crypto/DeterministicKey;)V
.registers 12
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/common/collect/ImmutableList",
"<",
"Lorg/bitcoinj/crypto/ChildNumber;",
">;[B",
"Lorg/spongycastle/math/ec/ECPoint;",
"Ljava/math/BigInteger;",
"Lorg/bitcoinj/crypto/DeterministicKey;",
")V"
}
.end annotation
.prologue
.line 83
new-instance v3, Lorg/bitcoinj/crypto/LazyECPoint;
invoke-direct {v3, p3}, Lorg/bitcoinj/crypto/LazyECPoint;-><init>(Lorg/spongycastle/math/ec/ECPoint;)V
move-object v0, p0
move-object v1, p1
move-object v2, p2
move-object v4, p4
move-object v5, p5
invoke-direct/range {v0 .. v5}, Lorg/bitcoinj/crypto/DeterministicKey;-><init>(Lcom/google/common/collect/ImmutableList;[BLorg/bitcoinj/crypto/LazyECPoint;Ljava/math/BigInteger;Lorg/bitcoinj/crypto/DeterministicKey;)V
.line 84
return-void
.end method
.method public constructor <init>(Lorg/bitcoinj/crypto/DeterministicKey;Lorg/bitcoinj/crypto/DeterministicKey;)V
.registers 5
.prologue
.line 171
iget-object v0, p1, Lorg/bitcoinj/crypto/DeterministicKey;->priv:Ljava/math/BigInteger;
iget-object v1, p1, Lorg/bitcoinj/crypto/DeterministicKey;->pub:Lorg/bitcoinj/crypto/LazyECPoint;
invoke-virtual {v1}, Lorg/bitcoinj/crypto/LazyECPoint;->get()Lorg/spongycastle/math/ec/ECPoint;
move-result-object v1
invoke-direct {p0, v0, v1}, Lorg/bitcoinj/core/ECKey;-><init>(Ljava/math/BigInteger;Lorg/spongycastle/math/ec/ECPoint;)V
.line 172
iput-object p2, p0, Lorg/bitcoinj/crypto/DeterministicKey;->parent:Lorg/bitcoinj/crypto/DeterministicKey;
.line 173
iget-object v0, p1, Lorg/bitcoinj/crypto/DeterministicKey;->childNumberPath:Lcom/google/common/collect/ImmutableList;
iput-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->childNumberPath:Lcom/google/common/collect/ImmutableList;
.line 174
iget-object v0, p1, Lorg/bitcoinj/crypto/DeterministicKey;->chainCode:[B
iput-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->chainCode:[B
.line 175
iget-object v0, p1, Lorg/bitcoinj/crypto/DeterministicKey;->encryptedPrivateKey:Lorg/bitcoinj/crypto/EncryptedData;
iput-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->encryptedPrivateKey:Lorg/bitcoinj/crypto/EncryptedData;
.line 176
iget-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->childNumberPath:Lcom/google/common/collect/ImmutableList;
invoke-virtual {v0}, Lcom/google/common/collect/ImmutableList;->size()I
move-result v0
iput v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->depth:I
.line 177
iget-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->parent:Lorg/bitcoinj/crypto/DeterministicKey;
invoke-virtual {v0}, Lorg/bitcoinj/crypto/DeterministicKey;->getFingerprint()I
move-result v0
iput v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->parentFingerprint:I
.line 178
return-void
.end method
.method static addChecksum([B)[B
.registers 6
.prologue
const/4 v4, 0x0
.line 283
array-length v0, p0
.line 284
add-int/lit8 v1, v0, 0x4
new-array v1, v1, [B
.line 285
invoke-static {p0, v4, v1, v4, v0}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 286
invoke-static {p0}, Lorg/bitcoinj/core/Sha256Hash;->hashTwice([B)[B
move-result-object v2
.line 287
const/4 v3, 0x4
invoke-static {v2, v4, v1, v0, v3}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 288
return-object v1
.end method
.method private ascertainParentFingerprint(Lorg/bitcoinj/crypto/DeterministicKey;I)I
.registers 9
.prologue
const/4 v1, 0x1
const/4 v2, 0x0
.line 119
if-eqz p2, :cond_2e
.line 120
iget-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->parent:Lorg/bitcoinj/crypto/DeterministicKey;
if-eqz v0, :cond_2b
.line 121
iget-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->parent:Lorg/bitcoinj/crypto/DeterministicKey;
invoke-virtual {v0}, Lorg/bitcoinj/crypto/DeterministicKey;->getFingerprint()I
move-result v0
if-ne v0, p2, :cond_2c
move v0, v1
:goto_11
const-string v3, "parent fingerprint mismatch"
const/4 v4, 0x2
new-array v4, v4, [Ljava/lang/Object;
iget-object v5, p0, Lorg/bitcoinj/crypto/DeterministicKey;->parent:Lorg/bitcoinj/crypto/DeterministicKey;
.line 123
invoke-virtual {v5}, Lorg/bitcoinj/crypto/DeterministicKey;->getFingerprint()I
move-result v5
invoke-static {v5}, Ljava/lang/Integer;->toHexString(I)Ljava/lang/String;
move-result-object v5
aput-object v5, v4, v2
invoke-static {p2}, Ljava/lang/Integer;->toHexString(I)Ljava/lang/String;
move-result-object v2
aput-object v2, v4, v1
.line 121
invoke-static {v0, v3, v4}, Lcom/google/common/base/n;->checkArgument(ZLjava/lang/String;[Ljava/lang/Object;)V
.line 125
:cond_2b
:goto_2b
return p2
:cond_2c
move v0, v2
.line 121
goto :goto_11
:cond_2e
move p2, v2
.line 125
goto :goto_2b
.end method
.method private derivePrivateKeyDownwards(Lorg/bitcoinj/crypto/DeterministicKey;[B)Ljava/math/BigInteger;
.registers 9
.prologue
.line 427
new-instance v0, Lorg/bitcoinj/crypto/DeterministicKey;
iget-object v1, p1, Lorg/bitcoinj/crypto/DeterministicKey;->childNumberPath:Lcom/google/common/collect/ImmutableList;
iget-object v2, p1, Lorg/bitcoinj/crypto/DeterministicKey;->chainCode:[B
iget-object v3, p1, Lorg/bitcoinj/crypto/DeterministicKey;->pub:Lorg/bitcoinj/crypto/LazyECPoint;
new-instance v4, Ljava/math/BigInteger;
const/4 v5, 0x1
invoke-direct {v4, v5, p2}, Ljava/math/BigInteger;-><init>(I[B)V
iget-object v5, p1, Lorg/bitcoinj/crypto/DeterministicKey;->parent:Lorg/bitcoinj/crypto/DeterministicKey;
invoke-direct/range {v0 .. v5}, Lorg/bitcoinj/crypto/DeterministicKey;-><init>(Lcom/google/common/collect/ImmutableList;[BLorg/bitcoinj/crypto/LazyECPoint;Ljava/math/BigInteger;Lorg/bitcoinj/crypto/DeterministicKey;)V
.line 431
iget-object v1, p0, Lorg/bitcoinj/crypto/DeterministicKey;->childNumberPath:Lcom/google/common/collect/ImmutableList;
invoke-virtual {p1}, Lorg/bitcoinj/crypto/DeterministicKey;->getPath()Lcom/google/common/collect/ImmutableList;
move-result-object v2
invoke-virtual {v2}, Lcom/google/common/collect/ImmutableList;->size()I
move-result v2
iget-object v3, p0, Lorg/bitcoinj/crypto/DeterministicKey;->childNumberPath:Lcom/google/common/collect/ImmutableList;
invoke-virtual {v3}, Lcom/google/common/collect/ImmutableList;->size()I
move-result v3
invoke-virtual {v1, v2, v3}, Lcom/google/common/collect/ImmutableList;->subList(II)Lcom/google/common/collect/ImmutableList;
move-result-object v1
.line 432
invoke-virtual {v1}, Lcom/google/common/collect/ImmutableList;->iterator()Lcom/google/common/collect/dd;
move-result-object v2
move-object v1, v0
:goto_2c
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_3e
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/crypto/ChildNumber;
.line 433
invoke-static {v1, v0}, Lorg/bitcoinj/crypto/HDKeyDerivation;->deriveChildKey(Lorg/bitcoinj/crypto/DeterministicKey;Lorg/bitcoinj/crypto/ChildNumber;)Lorg/bitcoinj/crypto/DeterministicKey;
move-result-object v0
move-object v1, v0
.line 434
goto :goto_2c
.line 438
:cond_3e
iget-object v0, v1, Lorg/bitcoinj/crypto/DeterministicKey;->pub:Lorg/bitcoinj/crypto/LazyECPoint;
iget-object v2, p0, Lorg/bitcoinj/crypto/DeterministicKey;->pub:Lorg/bitcoinj/crypto/LazyECPoint;
invoke-virtual {v0, v2}, Lorg/bitcoinj/crypto/LazyECPoint;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_50
.line 439
new-instance v0, Lorg/bitcoinj/crypto/KeyCrypterException;
const-string v1, "Could not decrypt bytes"
invoke-direct {v0, v1}, Lorg/bitcoinj/crypto/KeyCrypterException;-><init>(Ljava/lang/String;)V
throw v0
.line 440
:cond_50
iget-object v0, v1, Lorg/bitcoinj/crypto/DeterministicKey;->priv:Ljava/math/BigInteger;
invoke-static {v0}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/math/BigInteger;
return-object v0
.end method
.method public static deserialize(Lorg/bitcoinj/core/NetworkParameters;[B)Lorg/bitcoinj/crypto/DeterministicKey;
.registers 3
.prologue
.line 514
const/4 v0, 0x0
invoke-static {p0, p1, v0}, Lorg/bitcoinj/crypto/DeterministicKey;->deserialize(Lorg/bitcoinj/core/NetworkParameters;[BLorg/bitcoinj/crypto/DeterministicKey;)Lorg/bitcoinj/crypto/DeterministicKey;
move-result-object v0
return-object v0
.end method
.method public static deserialize(Lorg/bitcoinj/core/NetworkParameters;[BLorg/bitcoinj/crypto/DeterministicKey;)Lorg/bitcoinj/crypto/DeterministicKey;
.registers 12
.prologue
const/4 v4, 0x1
const/4 v3, 0x0
.line 522
invoke-static {p1}, Ljava/nio/ByteBuffer;->wrap([B)Ljava/nio/ByteBuffer;
move-result-object v7
.line 523
invoke-virtual {v7}, Ljava/nio/ByteBuffer;->getInt()I
move-result v0
.line 524
invoke-virtual {p0}, Lorg/bitcoinj/core/NetworkParameters;->getBip32HeaderPriv()I
move-result v1
if-eq v0, v1, :cond_34
invoke-virtual {p0}, Lorg/bitcoinj/core/NetworkParameters;->getBip32HeaderPub()I
move-result v1
if-eq v0, v1, :cond_34
.line 525
new-instance v0, Ljava/lang/IllegalArgumentException;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Unknown header bytes: "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-static {p1}, Lorg/bitcoinj/crypto/DeterministicKey;->toBase58([B)Ljava/lang/String;
move-result-object v2
const/4 v4, 0x4
invoke-virtual {v2, v3, v4}, Ljava/lang/String;->substring(II)Ljava/lang/String;
move-result-object v2
invoke-virtual {v1, v2}, 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/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 526
:cond_34
invoke-virtual {p0}, Lorg/bitcoinj/core/NetworkParameters;->getBip32HeaderPub()I
move-result v1
if-ne v0, v1, :cond_5a
move v0, v4
.line 527
:goto_3b
invoke-virtual {v7}, Ljava/nio/ByteBuffer;->get()B
move-result v1
and-int/lit16 v5, v1, 0xff
.line 528
invoke-virtual {v7}, Ljava/nio/ByteBuffer;->getInt()I
move-result v6
.line 529
invoke-virtual {v7}, Ljava/nio/ByteBuffer;->getInt()I
move-result v1
.line 530
new-instance v2, Lorg/bitcoinj/crypto/ChildNumber;
invoke-direct {v2, v1}, Lorg/bitcoinj/crypto/ChildNumber;-><init>(I)V
.line 532
if-eqz p2, :cond_80
.line 533
if-nez v6, :cond_5c
.line 534
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "Parent was provided but this key doesn\'t have one"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
:cond_5a
move v0, v3
.line 526
goto :goto_3b
.line 535
:cond_5c
invoke-virtual {p2}, Lorg/bitcoinj/crypto/DeterministicKey;->getFingerprint()I
move-result v1
if-eq v1, v6, :cond_6a
.line 536
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "Parent fingerprints don\'t match"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 537
:cond_6a
invoke-virtual {p2}, Lorg/bitcoinj/crypto/DeterministicKey;->getPath()Lcom/google/common/collect/ImmutableList;
move-result-object v1
invoke-static {v1, v2}, Lorg/bitcoinj/crypto/HDUtils;->append(Ljava/util/List;Lorg/bitcoinj/crypto/ChildNumber;)Lcom/google/common/collect/ImmutableList;
move-result-object v1
.line 538
invoke-virtual {v1}, Lcom/google/common/collect/ImmutableList;->size()I
move-result v2
if-eq v2, v5, :cond_86
.line 539
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "Depth does not match"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 541
:cond_80
if-lez v5, :cond_b4
.line 546
invoke-static {v2}, Lcom/google/common/collect/ImmutableList;->of(Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList;
move-result-object v1
.line 549
:cond_86
:goto_86
const/16 v2, 0x20
new-array v2, v2, [B
.line 550
invoke-virtual {v7, v2}, Ljava/nio/ByteBuffer;->get([B)Ljava/nio/ByteBuffer;
.line 551
const/16 v8, 0x21
new-array v8, v8, [B
.line 552
invoke-virtual {v7, v8}, Ljava/nio/ByteBuffer;->get([B)Ljava/nio/ByteBuffer;
.line 553
invoke-virtual {v7}, Ljava/nio/ByteBuffer;->hasRemaining()Z
move-result v7
if-nez v7, :cond_9b
move v3, v4
:cond_9b
const-string v7, "Found unexpected data in key"
invoke-static {v3, v7}, Lcom/google/common/base/n;->checkArgument(ZLjava/lang/Object;)V
.line 554
if-eqz v0, :cond_b9
.line 555
new-instance v0, Lorg/bitcoinj/crypto/DeterministicKey;
new-instance v3, Lorg/bitcoinj/crypto/LazyECPoint;
sget-object v4, Lorg/bitcoinj/core/ECKey;->CURVE:Lorg/spongycastle/crypto/params/ECDomainParameters;
invoke-virtual {v4}, Lorg/spongycastle/crypto/params/ECDomainParameters;->getCurve()Lorg/spongycastle/math/ec/ECCurve;
move-result-object v4
invoke-direct {v3, v4, v8}, Lorg/bitcoinj/crypto/LazyECPoint;-><init>(Lorg/spongycastle/math/ec/ECCurve;[B)V
move-object v4, p2
invoke-direct/range {v0 .. v6}, Lorg/bitcoinj/crypto/DeterministicKey;-><init>(Lcom/google/common/collect/ImmutableList;[BLorg/bitcoinj/crypto/LazyECPoint;Lorg/bitcoinj/crypto/DeterministicKey;II)V
.line 557
:goto_b3
return-object v0
.line 547
:cond_b4
invoke-static {}, Lcom/google/common/collect/ImmutableList;->of()Lcom/google/common/collect/ImmutableList;
move-result-object v1
goto :goto_86
.line 557
:cond_b9
new-instance v0, Lorg/bitcoinj/crypto/DeterministicKey;
new-instance v3, Ljava/math/BigInteger;
invoke-direct {v3, v4, v8}, Ljava/math/BigInteger;-><init>(I[B)V
move-object v4, p2
invoke-direct/range {v0 .. v6}, Lorg/bitcoinj/crypto/DeterministicKey;-><init>(Lcom/google/common/collect/ImmutableList;[BLjava/math/BigInteger;Lorg/bitcoinj/crypto/DeterministicKey;II)V
goto :goto_b3
.end method
.method public static deserializeB58(Ljava/lang/String;Lorg/bitcoinj/core/NetworkParameters;)Lorg/bitcoinj/crypto/DeterministicKey;
.registers 3
.prologue
.line 498
const/4 v0, 0x0
invoke-static {v0, p0, p1}, Lorg/bitcoinj/crypto/DeterministicKey;->deserializeB58(Lorg/bitcoinj/crypto/DeterministicKey;Ljava/lang/String;Lorg/bitcoinj/core/NetworkParameters;)Lorg/bitcoinj/crypto/DeterministicKey;
move-result-object v0
return-object v0
.end method
.method public static deserializeB58(Lorg/bitcoinj/crypto/DeterministicKey;Ljava/lang/String;Lorg/bitcoinj/core/NetworkParameters;)Lorg/bitcoinj/crypto/DeterministicKey;
.registers 4
.prologue
.line 507
invoke-static {p1}, Lorg/bitcoinj/core/Base58;->decodeChecked(Ljava/lang/String;)[B
move-result-object v0
invoke-static {p2, v0, p0}, Lorg/bitcoinj/crypto/DeterministicKey;->deserialize(Lorg/bitcoinj/core/NetworkParameters;[BLorg/bitcoinj/crypto/DeterministicKey;)Lorg/bitcoinj/crypto/DeterministicKey;
move-result-object v0
return-object v0
.end method
.method private findOrDeriveEncryptedPrivateKey(Lorg/bitcoinj/crypto/KeyCrypter;Lorg/spongycastle/crypto/params/KeyParameter;)Ljava/math/BigInteger;
.registers 6
.prologue
.line 394
iget-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->encryptedPrivateKey:Lorg/bitcoinj/crypto/EncryptedData;
if-eqz v0, :cond_11
.line 395
new-instance v0, Ljava/math/BigInteger;
const/4 v1, 0x1
iget-object v2, p0, Lorg/bitcoinj/crypto/DeterministicKey;->encryptedPrivateKey:Lorg/bitcoinj/crypto/EncryptedData;
invoke-interface {p1, v2, p2}, Lorg/bitcoinj/crypto/KeyCrypter;->decrypt(Lorg/bitcoinj/crypto/EncryptedData;Lorg/spongycastle/crypto/params/KeyParameter;)[B
move-result-object v2
invoke-direct {v0, v1, v2}, Ljava/math/BigInteger;-><init>(I[B)V
.line 406
:goto_10
return-object v0
.line 398
:cond_11
iget-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->parent:Lorg/bitcoinj/crypto/DeterministicKey;
.line 399
:goto_13
if-eqz v0, :cond_1c
.line 400
iget-object v1, v0, Lorg/bitcoinj/crypto/DeterministicKey;->encryptedPrivateKey:Lorg/bitcoinj/crypto/EncryptedData;
if-nez v1, :cond_1c
.line 401
iget-object v0, v0, Lorg/bitcoinj/crypto/DeterministicKey;->parent:Lorg/bitcoinj/crypto/DeterministicKey;
goto :goto_13
.line 403
:cond_1c
if-nez v0, :cond_26
.line 404
new-instance v0, Lorg/bitcoinj/crypto/KeyCrypterException;
const-string v1, "Neither this key nor its parents have an encrypted private key"
invoke-direct {v0, v1}, Lorg/bitcoinj/crypto/KeyCrypterException;-><init>(Ljava/lang/String;)V
throw v0
.line 405
:cond_26
iget-object v1, v0, Lorg/bitcoinj/crypto/DeterministicKey;->encryptedPrivateKey:Lorg/bitcoinj/crypto/EncryptedData;
invoke-interface {p1, v1, p2}, Lorg/bitcoinj/crypto/KeyCrypter;->decrypt(Lorg/bitcoinj/crypto/EncryptedData;Lorg/spongycastle/crypto/params/KeyParameter;)[B
move-result-object v1
.line 406
invoke-direct {p0, v0, v1}, Lorg/bitcoinj/crypto/DeterministicKey;->derivePrivateKeyDownwards(Lorg/bitcoinj/crypto/DeterministicKey;[B)Ljava/math/BigInteger;
move-result-object v0
goto :goto_10
.end method
.method private findOrDerivePrivateKey()Ljava/math/BigInteger;
.registers 3
.prologue
.line 420
invoke-direct {p0}, Lorg/bitcoinj/crypto/DeterministicKey;->findParentWithPrivKey()Lorg/bitcoinj/crypto/DeterministicKey;
move-result-object v0
.line 421
if-nez v0, :cond_8
.line 422
const/4 v0, 0x0
.line 423
:goto_7
return-object v0
:cond_8
iget-object v1, v0, Lorg/bitcoinj/crypto/DeterministicKey;->priv:Ljava/math/BigInteger;
invoke-virtual {v1}, Ljava/math/BigInteger;->toByteArray()[B
move-result-object v1
invoke-direct {p0, v0, v1}, Lorg/bitcoinj/crypto/DeterministicKey;->derivePrivateKeyDownwards(Lorg/bitcoinj/crypto/DeterministicKey;[B)Ljava/math/BigInteger;
move-result-object v0
goto :goto_7
.end method
.method private findParentWithPrivKey()Lorg/bitcoinj/crypto/DeterministicKey;
.registers 2
.prologue
.line 410
.line 411
:goto_0
if-eqz p0, :cond_9
.line 412
iget-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->priv:Ljava/math/BigInteger;
if-nez v0, :cond_9
.line 413
iget-object p0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->parent:Lorg/bitcoinj/crypto/DeterministicKey;
goto :goto_0
.line 415
:cond_9
return-object p0
.end method
.method private serialize(Lorg/bitcoinj/core/NetworkParameters;Z)[B
.registers 6
.prologue
const/16 v2, 0x4e
.line 473
invoke-static {v2}, Ljava/nio/ByteBuffer;->allocate(I)Ljava/nio/ByteBuffer;
move-result-object v1
.line 474
if-eqz p2, :cond_48
invoke-virtual {p1}, Lorg/bitcoinj/core/NetworkParameters;->getBip32HeaderPub()I
move-result v0
:goto_c
invoke-virtual {v1, v0}, Ljava/nio/ByteBuffer;->putInt(I)Ljava/nio/ByteBuffer;
.line 475
invoke-virtual {p0}, Lorg/bitcoinj/crypto/DeterministicKey;->getDepth()I
move-result v0
int-to-byte v0, v0
invoke-virtual {v1, v0}, Ljava/nio/ByteBuffer;->put(B)Ljava/nio/ByteBuffer;
.line 476
invoke-virtual {p0}, Lorg/bitcoinj/crypto/DeterministicKey;->getParentFingerprint()I
move-result v0
invoke-virtual {v1, v0}, Ljava/nio/ByteBuffer;->putInt(I)Ljava/nio/ByteBuffer;
.line 477
invoke-virtual {p0}, Lorg/bitcoinj/crypto/DeterministicKey;->getChildNumber()Lorg/bitcoinj/crypto/ChildNumber;
move-result-object v0
invoke-virtual {v0}, Lorg/bitcoinj/crypto/ChildNumber;->i()I
move-result v0
invoke-virtual {v1, v0}, Ljava/nio/ByteBuffer;->putInt(I)Ljava/nio/ByteBuffer;
.line 478
invoke-virtual {p0}, Lorg/bitcoinj/crypto/DeterministicKey;->getChainCode()[B
move-result-object v0
invoke-virtual {v1, v0}, Ljava/nio/ByteBuffer;->put([B)Ljava/nio/ByteBuffer;
.line 479
if-eqz p2, :cond_4d
invoke-virtual {p0}, Lorg/bitcoinj/crypto/DeterministicKey;->getPubKey()[B
move-result-object v0
:goto_36
invoke-virtual {v1, v0}, Ljava/nio/ByteBuffer;->put([B)Ljava/nio/ByteBuffer;
.line 480
invoke-virtual {v1}, Ljava/nio/ByteBuffer;->position()I
move-result v0
if-ne v0, v2, :cond_52
const/4 v0, 0x1
:goto_40
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
.line 481
invoke-virtual {v1}, Ljava/nio/ByteBuffer;->array()[B
move-result-object v0
return-object v0
.line 474
:cond_48
invoke-virtual {p1}, Lorg/bitcoinj/core/NetworkParameters;->getBip32HeaderPriv()I
move-result v0
goto :goto_c
.line 479
:cond_4d
invoke-virtual {p0}, Lorg/bitcoinj/crypto/DeterministicKey;->getPrivKeyBytes33()[B
move-result-object v0
goto :goto_36
.line 480
:cond_52
const/4 v0, 0x0
goto :goto_40
.end method
.method static toBase58([B)Ljava/lang/String;
.registers 2
.prologue
.line 493
invoke-static {p0}, Lorg/bitcoinj/crypto/DeterministicKey;->addChecksum([B)[B
move-result-object v0
invoke-static {v0}, Lorg/bitcoinj/core/Base58;->encode([B)Ljava/lang/String;
move-result-object v0
return-object v0
.end method
# virtual methods
.method public bridge synthetic decrypt(Lorg/bitcoinj/crypto/KeyCrypter;Lorg/spongycastle/crypto/params/KeyParameter;)Lorg/bitcoinj/core/ECKey;
.registers 4
.prologue
.line 43
invoke-virtual {p0, p1, p2}, Lorg/bitcoinj/crypto/DeterministicKey;->decrypt(Lorg/bitcoinj/crypto/KeyCrypter;Lorg/spongycastle/crypto/params/KeyParameter;)Lorg/bitcoinj/crypto/DeterministicKey;
move-result-object v0
return-object v0
.end method
.method public bridge synthetic decrypt(Lorg/spongycastle/crypto/params/KeyParameter;)Lorg/bitcoinj/core/ECKey;
.registers 3
.prologue
.line 43
invoke-virtual {p0, p1}, Lorg/bitcoinj/crypto/DeterministicKey;->decrypt(Lorg/spongycastle/crypto/params/KeyParameter;)Lorg/bitcoinj/crypto/DeterministicKey;
move-result-object v0
return-object v0
.end method
.method public decrypt(Lorg/bitcoinj/crypto/KeyCrypter;Lorg/spongycastle/crypto/params/KeyParameter;)Lorg/bitcoinj/crypto/DeterministicKey;
.registers 8
.prologue
.line 373
invoke-static {p1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 375
iget-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->keyCrypter:Lorg/bitcoinj/crypto/KeyCrypter;
if-eqz v0, :cond_17
iget-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->keyCrypter:Lorg/bitcoinj/crypto/KeyCrypter;
invoke-virtual {v0, p1}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_17
.line 376
new-instance v0, Lorg/bitcoinj/crypto/KeyCrypterException;
const-string v1, "The keyCrypter being used to decrypt the key is different to the one that was used to encrypt it"
invoke-direct {v0, v1}, Lorg/bitcoinj/crypto/KeyCrypterException;-><init>(Ljava/lang/String;)V
throw v0
.line 377
:cond_17
invoke-direct {p0, p1, p2}, Lorg/bitcoinj/crypto/DeterministicKey;->findOrDeriveEncryptedPrivateKey(Lorg/bitcoinj/crypto/KeyCrypter;Lorg/spongycastle/crypto/params/KeyParameter;)Ljava/math/BigInteger;
move-result-object v0
.line 378
new-instance v1, Lorg/bitcoinj/crypto/DeterministicKey;
iget-object v2, p0, Lorg/bitcoinj/crypto/DeterministicKey;->childNumberPath:Lcom/google/common/collect/ImmutableList;
iget-object v3, p0, Lorg/bitcoinj/crypto/DeterministicKey;->chainCode:[B
iget-object v4, p0, Lorg/bitcoinj/crypto/DeterministicKey;->parent:Lorg/bitcoinj/crypto/DeterministicKey;
invoke-direct {v1, v2, v3, v0, v4}, Lorg/bitcoinj/crypto/DeterministicKey;-><init>(Lcom/google/common/collect/ImmutableList;[BLjava/math/BigInteger;Lorg/bitcoinj/crypto/DeterministicKey;)V
.line 379
invoke-virtual {v1}, Lorg/bitcoinj/crypto/DeterministicKey;->getPubKey()[B
move-result-object v0
invoke-virtual {p0}, Lorg/bitcoinj/crypto/DeterministicKey;->getPubKey()[B
move-result-object v2
invoke-static {v0, v2}, Ljava/util/Arrays;->equals([B[B)Z
move-result v0
if-nez v0, :cond_3c
.line 380
new-instance v0, Lorg/bitcoinj/crypto/KeyCrypterException;
const-string v1, "Provided AES key is wrong"
invoke-direct {v0, v1}, Lorg/bitcoinj/crypto/KeyCrypterException;-><init>(Ljava/lang/String;)V
throw v0
.line 381
:cond_3c
iget-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->parent:Lorg/bitcoinj/crypto/DeterministicKey;
if-nez v0, :cond_47
.line 382
invoke-virtual {p0}, Lorg/bitcoinj/crypto/DeterministicKey;->getCreationTimeSeconds()J
move-result-wide v2
invoke-virtual {v1, v2, v3}, Lorg/bitcoinj/crypto/DeterministicKey;->setCreationTimeSeconds(J)V
.line 383
:cond_47
return-object v1
.end method
.method public decrypt(Lorg/spongycastle/crypto/params/KeyParameter;)Lorg/bitcoinj/crypto/DeterministicKey;
.registers 3
.prologue
.line 388
invoke-super {p0, p1}, Lorg/bitcoinj/core/ECKey;->decrypt(Lorg/spongycastle/crypto/params/KeyParameter;)Lorg/bitcoinj/core/ECKey;
move-result-object v0
check-cast v0, Lorg/bitcoinj/crypto/DeterministicKey;
return-object v0
.end method
.method public derive(I)Lorg/bitcoinj/crypto/DeterministicKey;
.registers 4
.prologue
.line 449
new-instance v0, Lorg/bitcoinj/crypto/ChildNumber;
const/4 v1, 0x1
invoke-direct {v0, p1, v1}, Lorg/bitcoinj/crypto/ChildNumber;-><init>(IZ)V
invoke-static {p0, v0}, Lorg/bitcoinj/crypto/HDKeyDerivation;->deriveChildKey(Lorg/bitcoinj/crypto/DeterministicKey;Lorg/bitcoinj/crypto/ChildNumber;)Lorg/bitcoinj/crypto/DeterministicKey;
move-result-object v0
return-object v0
.end method
.method public dropParent()Lorg/bitcoinj/crypto/DeterministicKey;
.registers 7
.prologue
.line 277
new-instance v0, Lorg/bitcoinj/crypto/DeterministicKey;
invoke-virtual {p0}, Lorg/bitcoinj/crypto/DeterministicKey;->getPath()Lcom/google/common/collect/ImmutableList;
move-result-object v1
invoke-virtual {p0}, Lorg/bitcoinj/crypto/DeterministicKey;->getChainCode()[B
move-result-object v2
iget-object v3, p0, Lorg/bitcoinj/crypto/DeterministicKey;->pub:Lorg/bitcoinj/crypto/LazyECPoint;
iget-object v4, p0, Lorg/bitcoinj/crypto/DeterministicKey;->priv:Ljava/math/BigInteger;
const/4 v5, 0x0
invoke-direct/range {v0 .. v5}, Lorg/bitcoinj/crypto/DeterministicKey;-><init>(Lcom/google/common/collect/ImmutableList;[BLorg/bitcoinj/crypto/LazyECPoint;Ljava/math/BigInteger;Lorg/bitcoinj/crypto/DeterministicKey;)V
.line 278
iget v1, p0, Lorg/bitcoinj/crypto/DeterministicKey;->parentFingerprint:I
iput v1, v0, Lorg/bitcoinj/crypto/DeterministicKey;->parentFingerprint:I
.line 279
return-object v0
.end method
.method public dropPrivateBytes()Lorg/bitcoinj/crypto/DeterministicKey;
.registers 7
.prologue
.line 262
invoke-virtual {p0}, Lorg/bitcoinj/crypto/DeterministicKey;->isPubKeyOnly()Z
move-result v0
if-eqz v0, :cond_7
.line 265
:goto_6
return-object p0
:cond_7
new-instance v0, Lorg/bitcoinj/crypto/DeterministicKey;
invoke-virtual {p0}, Lorg/bitcoinj/crypto/DeterministicKey;->getPath()Lcom/google/common/collect/ImmutableList;
move-result-object v1
invoke-virtual {p0}, Lorg/bitcoinj/crypto/DeterministicKey;->getChainCode()[B
move-result-object v2
iget-object v3, p0, Lorg/bitcoinj/crypto/DeterministicKey;->pub:Lorg/bitcoinj/crypto/LazyECPoint;
const/4 v4, 0x0
iget-object v5, p0, Lorg/bitcoinj/crypto/DeterministicKey;->parent:Lorg/bitcoinj/crypto/DeterministicKey;
invoke-direct/range {v0 .. v5}, Lorg/bitcoinj/crypto/DeterministicKey;-><init>(Lcom/google/common/collect/ImmutableList;[BLorg/bitcoinj/crypto/LazyECPoint;Ljava/math/BigInteger;Lorg/bitcoinj/crypto/DeterministicKey;)V
move-object p0, v0
goto :goto_6
.end method
.method public bridge synthetic encrypt(Lorg/bitcoinj/crypto/KeyCrypter;Lorg/spongycastle/crypto/params/KeyParameter;)Lorg/bitcoinj/core/ECKey;
.registers 4
.prologue
.line 43
invoke-virtual {p0, p1, p2}, Lorg/bitcoinj/crypto/DeterministicKey;->encrypt(Lorg/bitcoinj/crypto/KeyCrypter;Lorg/spongycastle/crypto/params/KeyParameter;)Lorg/bitcoinj/crypto/DeterministicKey;
move-result-object v0
return-object v0
.end method
.method public encrypt(Lorg/bitcoinj/crypto/KeyCrypter;Lorg/spongycastle/crypto/params/KeyParameter;)Lorg/bitcoinj/crypto/DeterministicKey;
.registers 5
.prologue
.line 293
new-instance v0, Ljava/lang/UnsupportedOperationException;
const-string v1, "Must supply a new parent for encryption"
invoke-direct {v0, v1}, Ljava/lang/UnsupportedOperationException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public encrypt(Lorg/bitcoinj/crypto/KeyCrypter;Lorg/spongycastle/crypto/params/KeyParameter;Lorg/bitcoinj/crypto/DeterministicKey;)Lorg/bitcoinj/crypto/DeterministicKey;
.registers 11
.prologue
.line 298
invoke-static {p1}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 299
if-eqz p3, :cond_c
.line 300
invoke-virtual {p3}, Lorg/bitcoinj/crypto/DeterministicKey;->isEncrypted()Z
move-result v0
invoke-static {v0}, Lcom/google/common/base/n;->checkArgument(Z)V
.line 301
:cond_c
invoke-virtual {p0}, Lorg/bitcoinj/crypto/DeterministicKey;->getPrivKeyBytes()[B
move-result-object v1
.line 302
if-eqz v1, :cond_33
const/4 v0, 0x1
:goto_13
const-string v2, "Private key is not available"
invoke-static {v0, v2}, Lcom/google/common/base/n;->checkState(ZLjava/lang/Object;)V
.line 303
invoke-interface {p1, v1, p2}, Lorg/bitcoinj/crypto/KeyCrypter;->encrypt([BLorg/spongycastle/crypto/params/KeyParameter;)Lorg/bitcoinj/crypto/EncryptedData;
move-result-object v5
.line 304
new-instance v0, Lorg/bitcoinj/crypto/DeterministicKey;
iget-object v1, p0, Lorg/bitcoinj/crypto/DeterministicKey;->childNumberPath:Lcom/google/common/collect/ImmutableList;
iget-object v2, p0, Lorg/bitcoinj/crypto/DeterministicKey;->chainCode:[B
iget-object v4, p0, Lorg/bitcoinj/crypto/DeterministicKey;->pub:Lorg/bitcoinj/crypto/LazyECPoint;
move-object v3, p1
move-object v6, p3
invoke-direct/range {v0 .. v6}, Lorg/bitcoinj/crypto/DeterministicKey;-><init>(Lcom/google/common/collect/ImmutableList;[BLorg/bitcoinj/crypto/KeyCrypter;Lorg/bitcoinj/crypto/LazyECPoint;Lorg/bitcoinj/crypto/EncryptedData;Lorg/bitcoinj/crypto/DeterministicKey;)V
.line 305
if-nez p3, :cond_32
.line 306
invoke-virtual {p0}, Lorg/bitcoinj/crypto/DeterministicKey;->getCreationTimeSeconds()J
move-result-wide v2
invoke-virtual {v0, v2, v3}, Lorg/bitcoinj/crypto/DeterministicKey;->setCreationTimeSeconds(J)V
.line 307
:cond_32
return-object v0
.line 302
:cond_33
const/4 v0, 0x0
goto :goto_13
.end method
.method public equals(Ljava/lang/Object;)Z
.registers 6
.prologue
const/4 v0, 0x1
const/4 v1, 0x0
.line 591
if-ne p0, p1, :cond_5
.line 596
:cond_4
:goto_4
return v0
.line 592
:cond_5
if-eqz p1, :cond_11
invoke-virtual {p0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v2
invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v3
if-eq v2, v3, :cond_13
:cond_11
move v0, v1
goto :goto_4
.line 593
:cond_13
check-cast p1, Lorg/bitcoinj/crypto/DeterministicKey;
.line 594
invoke-super {p0, p1}, Lorg/bitcoinj/core/ECKey;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_2f
iget-object v2, p0, Lorg/bitcoinj/crypto/DeterministicKey;->chainCode:[B
iget-object v3, p1, Lorg/bitcoinj/crypto/DeterministicKey;->chainCode:[B
.line 595
invoke-static {v2, v3}, Ljava/util/Arrays;->equals([B[B)Z
move-result v2
if-eqz v2, :cond_2f
iget-object v2, p0, Lorg/bitcoinj/crypto/DeterministicKey;->childNumberPath:Lcom/google/common/collect/ImmutableList;
iget-object v3, p1, Lorg/bitcoinj/crypto/DeterministicKey;->childNumberPath:Lcom/google/common/collect/ImmutableList;
.line 596
invoke-static {v2, v3}, Lcom/google/common/base/m;->equal(Ljava/lang/Object;Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_4
:cond_2f
move v0, v1
.line 594
goto :goto_4
.end method
.method public formatKeyWithAddress(ZLjava/lang/StringBuilder;Lorg/bitcoinj/core/NetworkParameters;)V
.registers 7
.prologue
.line 619
invoke-virtual {p0, p3}, Lorg/bitcoinj/crypto/DeterministicKey;->toAddress(Lorg/bitcoinj/core/NetworkParameters;)Lorg/bitcoinj/core/Address;
move-result-object v0
.line 620
const-string v1, " addr:"
invoke-virtual {p2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
.line 621
const-string v0, " hash160:"
invoke-virtual {p2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
sget-object v1, Lorg/bitcoinj/core/Utils;->HEX:Lcom/google/common/io/BaseEncoding;
invoke-virtual {p0}, Lorg/bitcoinj/crypto/DeterministicKey;->getPubKeyHash()[B
move-result-object v2
invoke-virtual {v1, v2}, Lcom/google/common/io/BaseEncoding;->encode([B)Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 622
const-string v0, " ("
invoke-virtual {p2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {p0}, Lorg/bitcoinj/crypto/DeterministicKey;->getPathAsString()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, ")\n"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 623
if-eqz p1, :cond_48
.line 624
const-string v0, " "
invoke-virtual {p2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {p0, p3}, Lorg/bitcoinj/crypto/DeterministicKey;->toStringWithPrivate(Lorg/bitcoinj/core/NetworkParameters;)Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, "\n"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 626
:cond_48
return-void
.end method
.method public getChainCode()[B
.registers 2
.prologue
.line 214
iget-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->chainCode:[B
return-object v0
.end method
.method public getChildNumber()Lorg/bitcoinj/crypto/ChildNumber;
.registers 3
.prologue
.line 207
iget-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->childNumberPath:Lcom/google/common/collect/ImmutableList;
invoke-virtual {v0}, Lcom/google/common/collect/ImmutableList;->size()I
move-result v0
if-nez v0, :cond_b
sget-object v0, Lorg/bitcoinj/crypto/ChildNumber;->ZERO:Lorg/bitcoinj/crypto/ChildNumber;
:goto_a
return-object v0
:cond_b
iget-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->childNumberPath:Lcom/google/common/collect/ImmutableList;
iget-object v1, p0, Lorg/bitcoinj/crypto/DeterministicKey;->childNumberPath:Lcom/google/common/collect/ImmutableList;
invoke-virtual {v1}, Lcom/google/common/collect/ImmutableList;->size()I
move-result v1
add-int/lit8 v1, v1, -0x1
invoke-virtual {v0, v1}, Lcom/google/common/collect/ImmutableList;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/crypto/ChildNumber;
goto :goto_a
.end method
.method public getCreationTimeSeconds()J
.registers 3
.prologue
.line 567
iget-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->parent:Lorg/bitcoinj/crypto/DeterministicKey;
if-eqz v0, :cond_b
.line 568
iget-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->parent:Lorg/bitcoinj/crypto/DeterministicKey;
invoke-virtual {v0}, Lorg/bitcoinj/crypto/DeterministicKey;->getCreationTimeSeconds()J
move-result-wide v0
.line 570
:goto_a
return-wide v0
:cond_b
invoke-super {p0}, Lorg/bitcoinj/core/ECKey;->getCreationTimeSeconds()J
move-result-wide v0
goto :goto_a
.end method
.method public getDepth()I
.registers 2
.prologue
.line 202
iget v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->depth:I
return v0
.end method
.method public getFingerprint()I
.registers 4
.prologue
.line 227
invoke-virtual {p0}, Lorg/bitcoinj/crypto/DeterministicKey;->getIdentifier()[B
move-result-object v0
const/4 v1, 0x0
const/4 v2, 0x4
invoke-static {v0, v1, v2}, Ljava/util/Arrays;->copyOfRange([BII)[B
move-result-object v0
invoke-static {v0}, Ljava/nio/ByteBuffer;->wrap([B)Ljava/nio/ByteBuffer;
move-result-object v0
invoke-virtual {v0}, Ljava/nio/ByteBuffer;->getInt()I
move-result v0
return v0
.end method
.method public getIdentifier()[B
.registers 2
.prologue
.line 221
invoke-virtual {p0}, Lorg/bitcoinj/crypto/DeterministicKey;->getPubKey()[B
move-result-object v0
invoke-static {v0}, Lorg/bitcoinj/core/Utils;->sha256hash160([B)[B
move-result-object v0
return-object v0
.end method
.method public getKeyCrypter()Lorg/bitcoinj/crypto/KeyCrypter;
.registers 2
.prologue
.line 346
iget-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->keyCrypter:Lorg/bitcoinj/crypto/KeyCrypter;
if-eqz v0, :cond_7
.line 347
iget-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->keyCrypter:Lorg/bitcoinj/crypto/KeyCrypter;
.line 351
:goto_6
return-object v0
.line 348
:cond_7
iget-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->parent:Lorg/bitcoinj/crypto/DeterministicKey;
if-eqz v0, :cond_12
.line 349
iget-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->parent:Lorg/bitcoinj/crypto/DeterministicKey;
invoke-virtual {v0}, Lorg/bitcoinj/crypto/DeterministicKey;->getKeyCrypter()Lorg/bitcoinj/crypto/KeyCrypter;
move-result-object v0
goto :goto_6
.line 351
:cond_12
const/4 v0, 0x0
goto :goto_6
.end method
.method public getParent()Lorg/bitcoinj/crypto/DeterministicKey;
.registers 2
.prologue
.line 232
iget-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->parent:Lorg/bitcoinj/crypto/DeterministicKey;
return-object v0
.end method
.method public getParentFingerprint()I
.registers 2
.prologue
.line 240
iget v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->parentFingerprint:I
return v0
.end method
.method public getPath()Lcom/google/common/collect/ImmutableList;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Lcom/google/common/collect/ImmutableList",
"<",
"Lorg/bitcoinj/crypto/ChildNumber;",
">;"
}
.end annotation
.prologue
.line 186
iget-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->childNumberPath:Lcom/google/common/collect/ImmutableList;
return-object v0
.end method
.method public getPathAsString()Ljava/lang/String;
.registers 2
.prologue
.line 193
invoke-virtual {p0}, Lorg/bitcoinj/crypto/DeterministicKey;->getPath()Lcom/google/common/collect/ImmutableList;
move-result-object v0
invoke-static {v0}, Lorg/bitcoinj/crypto/HDUtils;->formatPath(Ljava/util/List;)Ljava/lang/String;
move-result-object v0
return-object v0
.end method
.method public getPrivKey()Ljava/math/BigInteger;
.registers 4
.prologue
.line 459
invoke-direct {p0}, Lorg/bitcoinj/crypto/DeterministicKey;->findOrDerivePrivateKey()Ljava/math/BigInteger;
move-result-object v1
.line 460
if-eqz v1, :cond_d
const/4 v0, 0x1
:goto_7
const-string v2, "Private key bytes not available"
invoke-static {v0, v2}, Lcom/google/common/base/n;->checkState(ZLjava/lang/Object;)V
.line 461
return-object v1
.line 460
:cond_d
const/4 v0, 0x0
goto :goto_7
.end method
.method public getPrivKeyBytes33()[B
.registers 6
.prologue
.line 248
const/16 v0, 0x21
new-array v0, v0, [B
.line 249
invoke-virtual {p0}, Lorg/bitcoinj/crypto/DeterministicKey;->getPrivKeyBytes()[B
move-result-object v1
.line 250
const/4 v2, 0x0
array-length v3, v1
rsub-int/lit8 v3, v3, 0x21
array-length v4, v1
invoke-static {v1, v2, v0, v3, v4}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 251
return-object v0
.end method
.method public getSecretBytes()[B
.registers 2
.prologue
.line 328
iget-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->priv:Ljava/math/BigInteger;
if-eqz v0, :cond_9
invoke-virtual {p0}, Lorg/bitcoinj/crypto/DeterministicKey;->getPrivKeyBytes()[B
move-result-object v0
:goto_8
return-object v0
:cond_9
const/4 v0, 0x0
goto :goto_8
.end method
.method public hasPrivKey()Z
.registers 2
.prologue
.line 322
invoke-direct {p0}, Lorg/bitcoinj/crypto/DeterministicKey;->findParentWithPrivKey()Lorg/bitcoinj/crypto/DeterministicKey;
move-result-object v0
if-eqz v0, :cond_8
const/4 v0, 0x1
:goto_7
return v0
:cond_8
const/4 v0, 0x0
goto :goto_7
.end method
.method public hashCode()I
.registers 4
.prologue
.line 601
const/4 v0, 0x3
new-array v0, v0, [Ljava/lang/Object;
const/4 v1, 0x0
invoke-super {p0}, Lorg/bitcoinj/core/ECKey;->hashCode()I
move-result v2
invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v2
aput-object v2, v0, v1
const/4 v1, 0x1
iget-object v2, p0, Lorg/bitcoinj/crypto/DeterministicKey;->chainCode:[B
invoke-static {v2}, Ljava/util/Arrays;->hashCode([B)I
move-result v2
invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v2
aput-object v2, v0, v1
const/4 v1, 0x2
iget-object v2, p0, Lorg/bitcoinj/crypto/DeterministicKey;->childNumberPath:Lcom/google/common/collect/ImmutableList;
aput-object v2, v0, v1
.line 1084
invoke-static {v0}, Ljava/util/Arrays;->hashCode([Ljava/lang/Object;)I
move-result v0
.line 601
return v0
.end method
.method public isEncrypted()Z
.registers 2
.prologue
.line 338
iget-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->priv:Ljava/math/BigInteger;
if-nez v0, :cond_18
invoke-super {p0}, Lorg/bitcoinj/core/ECKey;->isEncrypted()Z
move-result v0
if-nez v0, :cond_16
iget-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->parent:Lorg/bitcoinj/crypto/DeterministicKey;
if-eqz v0, :cond_18
iget-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->parent:Lorg/bitcoinj/crypto/DeterministicKey;
invoke-virtual {v0}, Lorg/bitcoinj/crypto/DeterministicKey;->isEncrypted()Z
move-result v0
if-eqz v0, :cond_18
:cond_16
const/4 v0, 0x1
:goto_17
return v0
:cond_18
const/4 v0, 0x0
goto :goto_17
.end method
.method public isPubKeyOnly()Z
.registers 2
.prologue
.line 316
invoke-super {p0}, Lorg/bitcoinj/core/ECKey;->isPubKeyOnly()Z
move-result v0
if-eqz v0, :cond_14
iget-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->parent:Lorg/bitcoinj/crypto/DeterministicKey;
if-eqz v0, :cond_12
iget-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->parent:Lorg/bitcoinj/crypto/DeterministicKey;
invoke-virtual {v0}, Lorg/bitcoinj/crypto/DeterministicKey;->isPubKeyOnly()Z
move-result v0
if-eqz v0, :cond_14
:cond_12
const/4 v0, 0x1
:goto_13
return v0
:cond_14
const/4 v0, 0x0
goto :goto_13
.end method
.method public serializePrivB58(Lorg/bitcoinj/core/NetworkParameters;)Ljava/lang/String;
.registers 3
.prologue
.line 489
const/4 v0, 0x0
invoke-direct {p0, p1, v0}, Lorg/bitcoinj/crypto/DeterministicKey;->serialize(Lorg/bitcoinj/core/NetworkParameters;Z)[B
move-result-object v0
invoke-static {v0}, Lorg/bitcoinj/crypto/DeterministicKey;->toBase58([B)Ljava/lang/String;
move-result-object v0
return-object v0
.end method
.method public serializePrivate(Lorg/bitcoinj/core/NetworkParameters;)[B
.registers 3
.prologue
.line 469
const/4 v0, 0x0
invoke-direct {p0, p1, v0}, Lorg/bitcoinj/crypto/DeterministicKey;->serialize(Lorg/bitcoinj/core/NetworkParameters;Z)[B
move-result-object v0
return-object v0
.end method
.method public serializePubB58(Lorg/bitcoinj/core/NetworkParameters;)Ljava/lang/String;
.registers 3
.prologue
.line 485
const/4 v0, 0x1
invoke-direct {p0, p1, v0}, Lorg/bitcoinj/crypto/DeterministicKey;->serialize(Lorg/bitcoinj/core/NetworkParameters;Z)[B
move-result-object v0
invoke-static {v0}, Lorg/bitcoinj/crypto/DeterministicKey;->toBase58([B)Ljava/lang/String;
move-result-object v0
return-object v0
.end method
.method public serializePublic(Lorg/bitcoinj/core/NetworkParameters;)[B
.registers 3
.prologue
.line 465
const/4 v0, 0x1
invoke-direct {p0, p1, v0}, Lorg/bitcoinj/crypto/DeterministicKey;->serialize(Lorg/bitcoinj/core/NetworkParameters;Z)[B
move-result-object v0
return-object v0
.end method
.method public setCreationTimeSeconds(J)V
.registers 6
.prologue
.line 579
iget-object v0, p0, Lorg/bitcoinj/crypto/DeterministicKey;->parent:Lorg/bitcoinj/crypto/DeterministicKey;
if-eqz v0, :cond_c
.line 580
new-instance v0, Ljava/lang/IllegalStateException;
const-string v1, "Creation time can only be set on root keys."
invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v0
.line 582
:cond_c
invoke-super {p0, p1, p2}, Lorg/bitcoinj/core/ECKey;->setCreationTimeSeconds(J)V
.line 583
return-void
.end method
.method public sign(Lorg/bitcoinj/core/Sha256Hash;Lorg/spongycastle/crypto/params/KeyParameter;)Lorg/bitcoinj/core/ECKey$ECDSASignature;
.registers 4
.prologue
.line 356
invoke-virtual {p0}, Lorg/bitcoinj/crypto/DeterministicKey;->isEncrypted()Z
move-result v0
if-eqz v0, :cond_b
.line 359
invoke-super {p0, p1, p2}, Lorg/bitcoinj/core/ECKey;->sign(Lorg/bitcoinj/core/Sha256Hash;Lorg/spongycastle/crypto/params/KeyParameter;)Lorg/bitcoinj/core/ECKey$ECDSASignature;
move-result-object v0
.line 367
:goto_a
return-object v0
.line 362
:cond_b
invoke-direct {p0}, Lorg/bitcoinj/crypto/DeterministicKey;->findOrDerivePrivateKey()Ljava/math/BigInteger;
move-result-object v0
.line 363
if-nez v0, :cond_17
.line 365
new-instance v0, Lorg/bitcoinj/core/ECKey$MissingPrivateKeyException;
invoke-direct {v0}, Lorg/bitcoinj/core/ECKey$MissingPrivateKeyException;-><init>()V
throw v0
.line 367
:cond_17
invoke-super {p0, p1, v0}, Lorg/bitcoinj/core/ECKey;->doSign(Lorg/bitcoinj/core/Sha256Hash;Ljava/math/BigInteger;)Lorg/bitcoinj/core/ECKey$ECDSASignature;
move-result-object v0
goto :goto_a
.end method
.method public toString()Ljava/lang/String;
.registers 7
.prologue
.line 606
invoke-static {p0}, Lcom/google/common/base/j;->R(Ljava/lang/Object;)Lcom/google/common/base/k;
move-result-object v0
.line 1174
const/4 v1, 0x1
iput-boolean v1, v0, Lcom/google/common/base/k;->aUn:Z
.line 607
const-string v1, "pub"
sget-object v2, Lorg/bitcoinj/core/Utils;->HEX:Lcom/google/common/io/BaseEncoding;
iget-object v3, p0, Lorg/bitcoinj/crypto/DeterministicKey;->pub:Lorg/bitcoinj/crypto/LazyECPoint;
invoke-virtual {v3}, Lorg/bitcoinj/crypto/LazyECPoint;->getEncoded()[B
move-result-object v3
invoke-virtual {v2, v3}, Lcom/google/common/io/BaseEncoding;->encode([B)Ljava/lang/String;
move-result-object v2
.line 1185
invoke-virtual {v0, v1, v2}, Lcom/google/common/base/k;->a(Ljava/lang/String;Ljava/lang/Object;)Lcom/google/common/base/k;
.line 608
const-string v1, "chainCode"
sget-object v2, Lorg/bitcoinj/core/Utils;->HEX:Lcom/google/common/io/BaseEncoding;
iget-object v3, p0, Lorg/bitcoinj/crypto/DeterministicKey;->chainCode:[B
invoke-virtual {v2, v3}, Lcom/google/common/io/BaseEncoding;->encode([B)Ljava/lang/String;
move-result-object v2
.line 2185
invoke-virtual {v0, v1, v2}, Lcom/google/common/base/k;->a(Ljava/lang/String;Ljava/lang/Object;)Lcom/google/common/base/k;
.line 609
const-string v1, "path"
invoke-virtual {p0}, Lorg/bitcoinj/crypto/DeterministicKey;->getPathAsString()Ljava/lang/String;
move-result-object v2
.line 3185
invoke-virtual {v0, v1, v2}, Lcom/google/common/base/k;->a(Ljava/lang/String;Ljava/lang/Object;)Lcom/google/common/base/k;
.line 610
iget-wide v2, p0, Lorg/bitcoinj/crypto/DeterministicKey;->creationTimeSeconds:J
const-wide/16 v4, 0x0
cmp-long v1, v2, v4
if-lez v1, :cond_3d
.line 611
const-string v1, "creationTimeSeconds"
iget-wide v2, p0, Lorg/bitcoinj/crypto/DeterministicKey;->creationTimeSeconds:J
invoke-virtual {v0, v1, v2, v3}, Lcom/google/common/base/k;->e(Ljava/lang/String;J)Lcom/google/common/base/k;
.line 612
:cond_3d
const-string v1, "isEncrypted"
invoke-virtual {p0}, Lorg/bitcoinj/crypto/DeterministicKey;->isEncrypted()Z
move-result v2
invoke-virtual {v0, v1, v2}, Lcom/google/common/base/k;->e(Ljava/lang/String;Z)Lcom/google/common/base/k;
.line 613
const-string v1, "isPubKeyOnly"
invoke-virtual {p0}, Lorg/bitcoinj/crypto/DeterministicKey;->isPubKeyOnly()Z
move-result v2
invoke-virtual {v0, v1, v2}, Lcom/google/common/base/k;->e(Ljava/lang/String;Z)Lcom/google/common/base/k;
.line 614
invoke-virtual {v0}, Lcom/google/common/base/k;->toString()Ljava/lang/String;
move-result-object v0
return-object v0
.end method