HDUtils.smali
.class public final Lorg/bitcoinj/crypto/HDUtils;
.super Ljava/lang/Object;
.source "HDUtils.java"
# static fields
.field static final synthetic $assertionsDisabled:Z
.field private static final PATH_JOINER:Lcom/google/common/base/h;
# direct methods
.method static constructor <clinit>()V
.registers 1
.prologue
.line 38
const-class v0, Lorg/bitcoinj/crypto/HDUtils;
invoke-virtual {v0}, Ljava/lang/Class;->desiredAssertionStatus()Z
move-result v0
if-nez v0, :cond_14
const/4 v0, 0x1
:goto_9
sput-boolean v0, Lorg/bitcoinj/crypto/HDUtils;->$assertionsDisabled:Z
.line 39
const-string v0, "/"
invoke-static {v0}, Lcom/google/common/base/h;->eM(Ljava/lang/String;)Lcom/google/common/base/h;
move-result-object v0
sput-object v0, Lorg/bitcoinj/crypto/HDUtils;->PATH_JOINER:Lcom/google/common/base/h;
return-void
.line 38
:cond_14
const/4 v0, 0x0
goto :goto_9
.end method
.method public constructor <init>()V
.registers 1
.prologue
.line 38
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static append(Ljava/util/List;Lorg/bitcoinj/crypto/ChildNumber;)Lcom/google/common/collect/ImmutableList;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/crypto/ChildNumber;",
">;",
"Lorg/bitcoinj/crypto/ChildNumber;",
")",
"Lcom/google/common/collect/ImmutableList",
"<",
"Lorg/bitcoinj/crypto/ChildNumber;",
">;"
}
.end annotation
.prologue
.line 72
invoke-static {}, Lcom/google/common/collect/ImmutableList;->builder()Lcom/google/common/collect/an;
move-result-object v0
invoke-virtual {v0, p0}, Lcom/google/common/collect/an;->c(Ljava/lang/Iterable;)Lcom/google/common/collect/an;
move-result-object v0
invoke-virtual {v0, p1}, Lcom/google/common/collect/an;->Z(Ljava/lang/Object;)Lcom/google/common/collect/an;
move-result-object v0
invoke-virtual {v0}, Lcom/google/common/collect/an;->xm()Lcom/google/common/collect/ImmutableList;
move-result-object v0
return-object v0
.end method
.method public static concat(Ljava/util/List;Ljava/util/List;)Lcom/google/common/collect/ImmutableList;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/crypto/ChildNumber;",
">;",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/crypto/ChildNumber;",
">;)",
"Lcom/google/common/collect/ImmutableList",
"<",
"Lorg/bitcoinj/crypto/ChildNumber;",
">;"
}
.end annotation
.prologue
.line 77
invoke-static {}, Lcom/google/common/collect/ImmutableList;->builder()Lcom/google/common/collect/an;
move-result-object v0
invoke-virtual {v0, p0}, Lcom/google/common/collect/an;->c(Ljava/lang/Iterable;)Lcom/google/common/collect/an;
move-result-object v0
invoke-virtual {v0, p1}, Lcom/google/common/collect/an;->c(Ljava/lang/Iterable;)Lcom/google/common/collect/an;
move-result-object v0
invoke-virtual {v0}, Lcom/google/common/collect/an;->xm()Lcom/google/common/collect/ImmutableList;
move-result-object v0
return-object v0
.end method
.method static createHmacSha512Digest([B)Lorg/spongycastle/crypto/macs/HMac;
.registers 3
.prologue
.line 42
new-instance v0, Lorg/spongycastle/crypto/digests/SHA512Digest;
invoke-direct {v0}, Lorg/spongycastle/crypto/digests/SHA512Digest;-><init>()V
.line 43
new-instance v1, Lorg/spongycastle/crypto/macs/HMac;
invoke-direct {v1, v0}, Lorg/spongycastle/crypto/macs/HMac;-><init>(Lorg/spongycastle/crypto/Digest;)V
.line 44
new-instance v0, Lorg/spongycastle/crypto/params/KeyParameter;
invoke-direct {v0, p0}, Lorg/spongycastle/crypto/params/KeyParameter;-><init>([B)V
invoke-virtual {v1, v0}, Lorg/spongycastle/crypto/macs/HMac;->init(Lorg/spongycastle/crypto/CipherParameters;)V
.line 45
return-object v1
.end method
.method public static formatPath(Ljava/util/List;)Ljava/lang/String;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/crypto/ChildNumber;",
">;)",
"Ljava/lang/String;"
}
.end annotation
.prologue
.line 82
sget-object v0, Lorg/bitcoinj/crypto/HDUtils;->PATH_JOINER:Lcom/google/common/base/h;
const-string v1, "M"
invoke-static {v1}, Ljava/util/Collections;->singleton(Ljava/lang/Object;)Ljava/util/Set;
move-result-object v1
invoke-static {v1, p0}, Lcom/google/common/collect/ay;->a(Ljava/lang/Iterable;Ljava/lang/Iterable;)Ljava/lang/Iterable;
move-result-object v1
invoke-virtual {v0, v1}, Lcom/google/common/base/h;->join(Ljava/lang/Iterable;)Ljava/lang/String;
move-result-object v0
return-object v0
.end method
.method static hmacSha512(Lorg/spongycastle/crypto/macs/HMac;[B)[B
.registers 4
.prologue
const/4 v1, 0x0
.line 49
invoke-virtual {p0}, Lorg/spongycastle/crypto/macs/HMac;->reset()V
.line 50
array-length v0, p1
invoke-virtual {p0, p1, v1, v0}, Lorg/spongycastle/crypto/macs/HMac;->update([BII)V
.line 51
const/16 v0, 0x40
new-array v0, v0, [B
.line 52
invoke-virtual {p0, v0, v1}, Lorg/spongycastle/crypto/macs/HMac;->doFinal([BI)I
.line 53
return-object v0
.end method
.method public static hmacSha512([B[B)[B
.registers 3
.prologue
.line 57
invoke-static {p0}, Lorg/bitcoinj/crypto/HDUtils;->createHmacSha512Digest([B)Lorg/spongycastle/crypto/macs/HMac;
move-result-object v0
invoke-static {v0, p1}, Lorg/bitcoinj/crypto/HDUtils;->hmacSha512(Lorg/spongycastle/crypto/macs/HMac;[B)[B
move-result-object v0
return-object v0
.end method
.method static longTo4ByteArray(J)[B
.registers 6
.prologue
const/16 v1, 0x8
const/4 v2, 0x4
.line 65
invoke-static {v1}, Ljava/nio/ByteBuffer;->allocate(I)Ljava/nio/ByteBuffer;
move-result-object v0
invoke-virtual {v0, p0, p1}, Ljava/nio/ByteBuffer;->putLong(J)Ljava/nio/ByteBuffer;
move-result-object v0
invoke-virtual {v0}, Ljava/nio/ByteBuffer;->array()[B
move-result-object v0
invoke-static {v0, v2, v1}, Ljava/util/Arrays;->copyOfRange([BII)[B
move-result-object v0
.line 66
sget-boolean v1, Lorg/bitcoinj/crypto/HDUtils;->$assertionsDisabled:Z
if-nez v1, :cond_21
array-length v1, v0
if-eq v1, v2, :cond_21
new-instance v1, Ljava/lang/AssertionError;
array-length v0, v0
invoke-direct {v1, v0}, Ljava/lang/AssertionError;-><init>(I)V
throw v1
.line 67
:cond_21
return-object v0
.end method
.method public static parsePath(Ljava/lang/String;)Ljava/util/List;
.registers 9
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/String;",
")",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/crypto/ChildNumber;",
">;"
}
.end annotation
.prologue
const/4 v2, 0x0
.line 93
const-string v0, "M"
const-string v1, ""
invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
move-result-object v0
const-string v1, "/"
invoke-virtual {v0, v1}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
move-result-object v3
.line 94
new-instance v4, Ljava/util/ArrayList;
invoke-direct {v4}, Ljava/util/ArrayList;-><init>()V
.line 96
array-length v5, v3
move v1, v2
:goto_16
if-ge v1, v5, :cond_4a
aget-object v0, v3, v1
.line 97
const-string v6, " "
const-string v7, ""
invoke-virtual {v0, v6, v7}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
.line 98
invoke-virtual {v0}, Ljava/lang/String;->length()I
move-result v6
if-eqz v6, :cond_46
.line 99
const-string v6, "H"
invoke-virtual {v0, v6}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z
move-result v6
.line 100
if-eqz v6, :cond_3a
invoke-virtual {v0}, Ljava/lang/String;->length()I
move-result v7
add-int/lit8 v7, v7, -0x1
invoke-virtual {v0, v2, v7}, Ljava/lang/String;->substring(II)Ljava/lang/String;
move-result-object v0
.line 101
:cond_3a
invoke-static {v0}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
move-result v0
.line 102
new-instance v7, Lorg/bitcoinj/crypto/ChildNumber;
invoke-direct {v7, v0, v6}, Lorg/bitcoinj/crypto/ChildNumber;-><init>(IZ)V
invoke-interface {v4, v7}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 96
:cond_46
add-int/lit8 v0, v1, 0x1
move v1, v0
goto :goto_16
.line 105
:cond_4a
return-object v4
.end method
.method static toCompressed([B)[B
.registers 3
.prologue
.line 61
sget-object v0, Lorg/bitcoinj/core/ECKey;->CURVE:Lorg/spongycastle/crypto/params/ECDomainParameters;
invoke-virtual {v0}, Lorg/spongycastle/crypto/params/ECDomainParameters;->getCurve()Lorg/spongycastle/math/ec/ECCurve;
move-result-object v0
invoke-virtual {v0, p0}, Lorg/spongycastle/math/ec/ECCurve;->decodePoint([B)Lorg/spongycastle/math/ec/ECPoint;
move-result-object v0
const/4 v1, 0x1
invoke-virtual {v0, v1}, Lorg/spongycastle/math/ec/ECPoint;->getEncoded(Z)[B
move-result-object v0
return-object v0
.end method