PaymentSession.smali
.class public Lorg/bitcoinj/protocols/payments/PaymentSession;
.super Ljava/lang/Object;
.source "PaymentSession.java"
# static fields
.field private static executor:Lcom/google/common/util/concurrent/ad;
# instance fields
.field private params:Lorg/bitcoinj/core/NetworkParameters;
.field private paymentDetails:Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;
.field private paymentRequest:Lorg/bitcoin/protocols/payments/Protos$PaymentRequest;
.field public final pkiVerificationData:Lorg/bitcoinj/protocols/payments/PaymentProtocol$PkiVerificationData;
.field private totalValue:Lorg/bitcoinj/core/Coin;
# direct methods
.method static constructor <clinit>()V
.registers 1
.prologue
.line 70
sget-object v0, Lorg/bitcoinj/utils/Threading;->THREAD_POOL:Lcom/google/common/util/concurrent/ad;
sput-object v0, Lorg/bitcoinj/protocols/payments/PaymentSession;->executor:Lcom/google/common/util/concurrent/ad;
return-void
.end method
.method public constructor <init>(Lorg/bitcoin/protocols/payments/Protos$PaymentRequest;)V
.registers 4
.prologue
.line 189
const/4 v0, 0x1
const/4 v1, 0x0
invoke-direct {p0, p1, v0, v1}, Lorg/bitcoinj/protocols/payments/PaymentSession;-><init>(Lorg/bitcoin/protocols/payments/Protos$PaymentRequest;ZLorg/bitcoinj/crypto/TrustStoreLoader;)V
.line 190
return-void
.end method
.method public constructor <init>(Lorg/bitcoin/protocols/payments/Protos$PaymentRequest;Z)V
.registers 4
.prologue
.line 197
const/4 v0, 0x0
invoke-direct {p0, p1, p2, v0}, Lorg/bitcoinj/protocols/payments/PaymentSession;-><init>(Lorg/bitcoin/protocols/payments/Protos$PaymentRequest;ZLorg/bitcoinj/crypto/TrustStoreLoader;)V
.line 198
return-void
.end method
.method public constructor <init>(Lorg/bitcoin/protocols/payments/Protos$PaymentRequest;ZLorg/bitcoinj/crypto/TrustStoreLoader;)V
.registers 6
.prologue
.line 205
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 74
sget-object v0, Lorg/bitcoinj/core/Coin;->ZERO:Lorg/bitcoinj/core/Coin;
iput-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->totalValue:Lorg/bitcoinj/core/Coin;
.line 206
if-eqz p3, :cond_19
.line 207
:goto_9
invoke-direct {p0, p1}, Lorg/bitcoinj/protocols/payments/PaymentSession;->parsePaymentRequest(Lorg/bitcoin/protocols/payments/Protos$PaymentRequest;)V
.line 208
if-eqz p2, :cond_2d
.line 210
:try_start_e
invoke-interface {p3}, Lorg/bitcoinj/crypto/TrustStoreLoader;->getKeyStore()Ljava/security/KeyStore;
move-result-object v0
invoke-static {p1, v0}, Lorg/bitcoinj/protocols/payments/PaymentProtocol;->verifyPaymentRequestPki(Lorg/bitcoin/protocols/payments/Protos$PaymentRequest;Ljava/security/KeyStore;)Lorg/bitcoinj/protocols/payments/PaymentProtocol$PkiVerificationData;
move-result-object v0
iput-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->pkiVerificationData:Lorg/bitcoinj/protocols/payments/PaymentProtocol$PkiVerificationData;
:try_end_18
.catch Ljava/io/IOException; {:try_start_e .. :try_end_18} :catch_1f
.catch Ljava/security/KeyStoreException; {:try_start_e .. :try_end_18} :catch_26
.line 219
:goto_18
return-void
.line 206
:cond_19
new-instance p3, Lorg/bitcoinj/crypto/TrustStoreLoader$DefaultTrustStoreLoader;
invoke-direct {p3}, Lorg/bitcoinj/crypto/TrustStoreLoader$DefaultTrustStoreLoader;-><init>()V
goto :goto_9
.line 211
:catch_1f
move-exception v0
.line 212
new-instance v1, Lorg/bitcoinj/protocols/payments/PaymentProtocolException;
invoke-direct {v1, v0}, Lorg/bitcoinj/protocols/payments/PaymentProtocolException;-><init>(Ljava/lang/Exception;)V
throw v1
.line 213
:catch_26
move-exception v0
.line 214
new-instance v1, Lorg/bitcoinj/protocols/payments/PaymentProtocolException;
invoke-direct {v1, v0}, Lorg/bitcoinj/protocols/payments/PaymentProtocolException;-><init>(Ljava/lang/Exception;)V
throw v1
.line 217
:cond_2d
const/4 v0, 0x0
iput-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->pkiVerificationData:Lorg/bitcoinj/protocols/payments/PaymentProtocol$PkiVerificationData;
goto :goto_18
.end method
.method public static createFromBitcoinUri(Lorg/bitcoinj/uri/BitcoinURI;)Lcom/google/common/util/concurrent/y;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lorg/bitcoinj/uri/BitcoinURI;",
")",
"Lcom/google/common/util/concurrent/y",
"<",
"Lorg/bitcoinj/protocols/payments/PaymentSession;",
">;"
}
.end annotation
.prologue
.line 92
const/4 v0, 0x1
const/4 v1, 0x0
invoke-static {p0, v0, v1}, Lorg/bitcoinj/protocols/payments/PaymentSession;->createFromBitcoinUri(Lorg/bitcoinj/uri/BitcoinURI;ZLorg/bitcoinj/crypto/TrustStoreLoader;)Lcom/google/common/util/concurrent/y;
move-result-object v0
return-object v0
.end method
.method public static createFromBitcoinUri(Lorg/bitcoinj/uri/BitcoinURI;Z)Lcom/google/common/util/concurrent/y;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lorg/bitcoinj/uri/BitcoinURI;",
"Z)",
"Lcom/google/common/util/concurrent/y",
"<",
"Lorg/bitcoinj/protocols/payments/PaymentSession;",
">;"
}
.end annotation
.prologue
.line 105
const/4 v0, 0x0
invoke-static {p0, p1, v0}, Lorg/bitcoinj/protocols/payments/PaymentSession;->createFromBitcoinUri(Lorg/bitcoinj/uri/BitcoinURI;ZLorg/bitcoinj/crypto/TrustStoreLoader;)Lcom/google/common/util/concurrent/y;
move-result-object v0
return-object v0
.end method
.method public static createFromBitcoinUri(Lorg/bitcoinj/uri/BitcoinURI;ZLorg/bitcoinj/crypto/TrustStoreLoader;)Lcom/google/common/util/concurrent/y;
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lorg/bitcoinj/uri/BitcoinURI;",
"Z",
"Lorg/bitcoinj/crypto/TrustStoreLoader;",
")",
"Lcom/google/common/util/concurrent/y",
"<",
"Lorg/bitcoinj/protocols/payments/PaymentSession;",
">;"
}
.end annotation
.prologue
.line 119
invoke-virtual {p0}, Lorg/bitcoinj/uri/BitcoinURI;->getPaymentRequestUrl()Ljava/lang/String;
move-result-object v0
.line 120
if-nez v0, :cond_1b
.line 121
new-instance v0, Lorg/bitcoinj/protocols/payments/PaymentProtocolException$InvalidPaymentRequestURL;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "No payment request URL (r= parameter) in BitcoinURI "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)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}, Lorg/bitcoinj/protocols/payments/PaymentProtocolException$InvalidPaymentRequestURL;-><init>(Ljava/lang/String;)V
throw v0
.line 123
:cond_1b
:try_start_1b
new-instance v1, Ljava/net/URI;
invoke-direct {v1, v0}, Ljava/net/URI;-><init>(Ljava/lang/String;)V
invoke-static {v1, p1, p2}, Lorg/bitcoinj/protocols/payments/PaymentSession;->fetchPaymentRequest(Ljava/net/URI;ZLorg/bitcoinj/crypto/TrustStoreLoader;)Lcom/google/common/util/concurrent/y;
:try_end_23
.catch Ljava/net/URISyntaxException; {:try_start_1b .. :try_end_23} :catch_25
move-result-object v0
return-object v0
.line 124
:catch_25
move-exception v0
.line 125
new-instance v1, Lorg/bitcoinj/protocols/payments/PaymentProtocolException$InvalidPaymentRequestURL;
invoke-direct {v1, v0}, Lorg/bitcoinj/protocols/payments/PaymentProtocolException$InvalidPaymentRequestURL;-><init>(Ljava/lang/Exception;)V
throw v1
.end method
.method public static createFromUrl(Ljava/lang/String;)Lcom/google/common/util/concurrent/y;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/String;",
")",
"Lcom/google/common/util/concurrent/y",
"<",
"Lorg/bitcoinj/protocols/payments/PaymentSession;",
">;"
}
.end annotation
.prologue
.line 137
const/4 v0, 0x1
const/4 v1, 0x0
invoke-static {p0, v0, v1}, Lorg/bitcoinj/protocols/payments/PaymentSession;->createFromUrl(Ljava/lang/String;ZLorg/bitcoinj/crypto/TrustStoreLoader;)Lcom/google/common/util/concurrent/y;
move-result-object v0
return-object v0
.end method
.method public static createFromUrl(Ljava/lang/String;Z)Lcom/google/common/util/concurrent/y;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/String;",
"Z)",
"Lcom/google/common/util/concurrent/y",
"<",
"Lorg/bitcoinj/protocols/payments/PaymentSession;",
">;"
}
.end annotation
.prologue
.line 149
const/4 v0, 0x0
invoke-static {p0, p1, v0}, Lorg/bitcoinj/protocols/payments/PaymentSession;->createFromUrl(Ljava/lang/String;ZLorg/bitcoinj/crypto/TrustStoreLoader;)Lcom/google/common/util/concurrent/y;
move-result-object v0
return-object v0
.end method
.method public static createFromUrl(Ljava/lang/String;ZLorg/bitcoinj/crypto/TrustStoreLoader;)Lcom/google/common/util/concurrent/y;
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/String;",
"Z",
"Lorg/bitcoinj/crypto/TrustStoreLoader;",
")",
"Lcom/google/common/util/concurrent/y",
"<",
"Lorg/bitcoinj/protocols/payments/PaymentSession;",
">;"
}
.end annotation
.prologue
.line 162
if-nez p0, :cond_a
.line 163
new-instance v0, Lorg/bitcoinj/protocols/payments/PaymentProtocolException$InvalidPaymentRequestURL;
const-string v1, "null paymentRequestUrl"
invoke-direct {v0, v1}, Lorg/bitcoinj/protocols/payments/PaymentProtocolException$InvalidPaymentRequestURL;-><init>(Ljava/lang/String;)V
throw v0
.line 165
:cond_a
:try_start_a
new-instance v0, Ljava/net/URI;
invoke-direct {v0, p0}, Ljava/net/URI;-><init>(Ljava/lang/String;)V
invoke-static {v0, p1, p2}, Lorg/bitcoinj/protocols/payments/PaymentSession;->fetchPaymentRequest(Ljava/net/URI;ZLorg/bitcoinj/crypto/TrustStoreLoader;)Lcom/google/common/util/concurrent/y;
:try_end_12
.catch Ljava/net/URISyntaxException; {:try_start_a .. :try_end_12} :catch_14
move-result-object v0
return-object v0
.line 166
:catch_14
move-exception v0
.line 167
new-instance v1, Lorg/bitcoinj/protocols/payments/PaymentProtocolException$InvalidPaymentRequestURL;
invoke-direct {v1, v0}, Lorg/bitcoinj/protocols/payments/PaymentProtocolException$InvalidPaymentRequestURL;-><init>(Ljava/lang/Exception;)V
throw v1
.end method
.method private static fetchPaymentRequest(Ljava/net/URI;ZLorg/bitcoinj/crypto/TrustStoreLoader;)Lcom/google/common/util/concurrent/y;
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/net/URI;",
"Z",
"Lorg/bitcoinj/crypto/TrustStoreLoader;",
")",
"Lcom/google/common/util/concurrent/y",
"<",
"Lorg/bitcoinj/protocols/payments/PaymentSession;",
">;"
}
.end annotation
.prologue
.line 172
sget-object v0, Lorg/bitcoinj/protocols/payments/PaymentSession;->executor:Lcom/google/common/util/concurrent/ad;
new-instance v1, Lorg/bitcoinj/protocols/payments/PaymentSession$1;
invoke-direct {v1, p0, p1, p2}, Lorg/bitcoinj/protocols/payments/PaymentSession$1;-><init>(Ljava/net/URI;ZLorg/bitcoinj/crypto/TrustStoreLoader;)V
invoke-interface {v0, v1}, Lcom/google/common/util/concurrent/ad;->b(Ljava/util/concurrent/Callable;)Lcom/google/common/util/concurrent/y;
move-result-object v0
return-object v0
.end method
.method private parsePaymentRequest(Lorg/bitcoin/protocols/payments/Protos$PaymentRequest;)V
.registers 8
.prologue
.line 383
if-nez p1, :cond_11
.line 384
:try_start_2
new-instance v0, Lorg/bitcoinj/protocols/payments/PaymentProtocolException;
const-string v1, "request cannot be null"
invoke-direct {v0, v1}, Lorg/bitcoinj/protocols/payments/PaymentProtocolException;-><init>(Ljava/lang/String;)V
throw v0
:try_end_a
.catch Lcom/google/protobuf/InvalidProtocolBufferException; {:try_start_2 .. :try_end_a} :catch_a
.line 409
:catch_a
move-exception v0
.line 410
new-instance v1, Lorg/bitcoinj/protocols/payments/PaymentProtocolException;
invoke-direct {v1, v0}, Lorg/bitcoinj/protocols/payments/PaymentProtocolException;-><init>(Ljava/lang/Exception;)V
throw v1
.line 385
:cond_11
:try_start_11
invoke-virtual {p1}, Lorg/bitcoin/protocols/payments/Protos$PaymentRequest;->getPaymentDetailsVersion()I
move-result v0
const/4 v1, 0x1
if-eq v0, v1, :cond_31
.line 386
new-instance v0, Lorg/bitcoinj/protocols/payments/PaymentProtocolException$InvalidVersion;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Version 1 required. Received version "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {p1}, Lorg/bitcoin/protocols/payments/Protos$PaymentRequest;->getPaymentDetailsVersion()I
move-result v2
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)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}, Lorg/bitcoinj/protocols/payments/PaymentProtocolException$InvalidVersion;-><init>(Ljava/lang/String;)V
throw v0
.line 387
:cond_31
iput-object p1, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->paymentRequest:Lorg/bitcoin/protocols/payments/Protos$PaymentRequest;
.line 388
invoke-virtual {p1}, Lorg/bitcoin/protocols/payments/Protos$PaymentRequest;->hasSerializedPaymentDetails()Z
move-result v0
if-nez v0, :cond_41
.line 389
new-instance v0, Lorg/bitcoinj/protocols/payments/PaymentProtocolException;
const-string v1, "No PaymentDetails"
invoke-direct {v0, v1}, Lorg/bitcoinj/protocols/payments/PaymentProtocolException;-><init>(Ljava/lang/String;)V
throw v0
.line 390
:cond_41
invoke-static {}, Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;->newBuilder()Lorg/bitcoin/protocols/payments/Protos$PaymentDetails$Builder;
move-result-object v0
invoke-virtual {p1}, Lorg/bitcoin/protocols/payments/Protos$PaymentRequest;->getSerializedPaymentDetails()Lcom/google/protobuf/ByteString;
move-result-object v1
invoke-virtual {v0, v1}, Lorg/bitcoin/protocols/payments/Protos$PaymentDetails$Builder;->mergeFrom(Lcom/google/protobuf/ByteString;)Lcom/google/protobuf/AbstractMessage$Builder;
move-result-object v0
check-cast v0, Lorg/bitcoin/protocols/payments/Protos$PaymentDetails$Builder;
invoke-virtual {v0}, Lorg/bitcoin/protocols/payments/Protos$PaymentDetails$Builder;->build()Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;
move-result-object v0
iput-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->paymentDetails:Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;
.line 391
iget-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->paymentDetails:Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;
if-nez v0, :cond_61
.line 392
new-instance v0, Lorg/bitcoinj/protocols/payments/PaymentProtocolException;
const-string v1, "Invalid PaymentDetails"
invoke-direct {v0, v1}, Lorg/bitcoinj/protocols/payments/PaymentProtocolException;-><init>(Ljava/lang/String;)V
throw v0
.line 393
:cond_61
iget-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->paymentDetails:Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;
invoke-virtual {v0}, Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;->hasNetwork()Z
move-result v0
if-nez v0, :cond_8e
.line 394
invoke-static {}, Lorg/bitcoinj/params/MainNetParams;->get()Lorg/bitcoinj/params/MainNetParams;
move-result-object v0
iput-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->params:Lorg/bitcoinj/core/NetworkParameters;
.line 397
:goto_6f
iget-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->params:Lorg/bitcoinj/core/NetworkParameters;
if-nez v0, :cond_9b
.line 398
new-instance v0, Lorg/bitcoinj/protocols/payments/PaymentProtocolException$InvalidNetwork;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Invalid network "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget-object v2, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->paymentDetails:Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;
invoke-virtual {v2}, Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;->getNetwork()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}, Lorg/bitcoinj/protocols/payments/PaymentProtocolException$InvalidNetwork;-><init>(Ljava/lang/String;)V
throw v0
.line 396
:cond_8e
iget-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->paymentDetails:Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;
invoke-virtual {v0}, Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;->getNetwork()Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lorg/bitcoinj/core/NetworkParameters;->fromPmtProtocolID(Ljava/lang/String;)Lorg/bitcoinj/core/NetworkParameters;
move-result-object v0
iput-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->params:Lorg/bitcoinj/core/NetworkParameters;
goto :goto_6f
.line 399
:cond_9b
iget-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->paymentDetails:Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;
invoke-virtual {v0}, Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;->getOutputsCount()I
move-result v0
if-gtz v0, :cond_ab
.line 400
new-instance v0, Lorg/bitcoinj/protocols/payments/PaymentProtocolException$InvalidOutputs;
const-string v1, "No outputs"
invoke-direct {v0, v1}, Lorg/bitcoinj/protocols/payments/PaymentProtocolException$InvalidOutputs;-><init>(Ljava/lang/String;)V
throw v0
.line 401
:cond_ab
iget-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->paymentDetails:Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;
invoke-virtual {v0}, Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;->getOutputsList()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_b5
:goto_b5
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_d8
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoin/protocols/payments/Protos$Output;
.line 402
invoke-virtual {v0}, Lorg/bitcoin/protocols/payments/Protos$Output;->hasAmount()Z
move-result v2
if-eqz v2, :cond_b5
.line 403
iget-object v2, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->totalValue:Lorg/bitcoinj/core/Coin;
invoke-virtual {v0}, Lorg/bitcoin/protocols/payments/Protos$Output;->getAmount()J
move-result-wide v4
invoke-static {v4, v5}, Lorg/bitcoinj/core/Coin;->valueOf(J)Lorg/bitcoinj/core/Coin;
move-result-object v0
invoke-virtual {v2, v0}, Lorg/bitcoinj/core/Coin;->add(Lorg/bitcoinj/core/Coin;)Lorg/bitcoinj/core/Coin;
move-result-object v0
iput-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->totalValue:Lorg/bitcoinj/core/Coin;
goto :goto_b5
.line 407
:cond_d8
iget-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->params:Lorg/bitcoinj/core/NetworkParameters;
invoke-virtual {v0}, Lorg/bitcoinj/core/NetworkParameters;->hasMaxMoney()Z
move-result v0
if-eqz v0, :cond_f6
iget-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->totalValue:Lorg/bitcoinj/core/Coin;
iget-object v1, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->params:Lorg/bitcoinj/core/NetworkParameters;
invoke-virtual {v1}, Lorg/bitcoinj/core/NetworkParameters;->getMaxMoney()Lorg/bitcoinj/core/Coin;
move-result-object v1
invoke-virtual {v0, v1}, Lorg/bitcoinj/core/Coin;->compareTo(Lorg/bitcoinj/core/Coin;)I
move-result v0
if-lez v0, :cond_f6
.line 408
new-instance v0, Lorg/bitcoinj/protocols/payments/PaymentProtocolException$InvalidOutputs;
const-string v1, "The outputs are way too big."
invoke-direct {v0, v1}, Lorg/bitcoinj/protocols/payments/PaymentProtocolException$InvalidOutputs;-><init>(Ljava/lang/String;)V
throw v0
:try_end_f6
.catch Lcom/google/protobuf/InvalidProtocolBufferException; {:try_start_11 .. :try_end_f6} :catch_a
.line 411
:cond_f6
return-void
.end method
# virtual methods
.method public getDate()Ljava/util/Date;
.registers 7
.prologue
.line 254
new-instance v0, Ljava/util/Date;
iget-object v1, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->paymentDetails:Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;
invoke-virtual {v1}, Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;->getTime()J
move-result-wide v2
const-wide/16 v4, 0x3e8
mul-long/2addr v2, v4
invoke-direct {v0, v2, v3}, Ljava/util/Date;-><init>(J)V
return-object v0
.end method
.method public getExpires()Ljava/util/Date;
.registers 7
.prologue
.line 261
iget-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->paymentDetails:Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;
invoke-virtual {v0}, Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;->hasExpires()Z
move-result v0
if-eqz v0, :cond_17
.line 262
new-instance v0, Ljava/util/Date;
iget-object v1, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->paymentDetails:Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;
invoke-virtual {v1}, Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;->getExpires()J
move-result-wide v2
const-wide/16 v4, 0x3e8
mul-long/2addr v2, v4
invoke-direct {v0, v2, v3}, Ljava/util/Date;-><init>(J)V
.line 264
:goto_16
return-object v0
:cond_17
const/4 v0, 0x0
goto :goto_16
.end method
.method public getMemo()Ljava/lang/String;
.registers 2
.prologue
.line 237
iget-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->paymentDetails:Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;
invoke-virtual {v0}, Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;->hasMemo()Z
move-result v0
if-eqz v0, :cond_f
.line 238
iget-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->paymentDetails:Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;
invoke-virtual {v0}, Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;->getMemo()Ljava/lang/String;
move-result-object v0
.line 240
:goto_e
return-object v0
:cond_f
const/4 v0, 0x0
goto :goto_e
.end method
.method public getMerchantData()[B
.registers 2
.prologue
.line 289
iget-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->paymentDetails:Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;
invoke-virtual {v0}, Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;->hasMerchantData()Z
move-result v0
if-eqz v0, :cond_13
.line 290
iget-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->paymentDetails:Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;
invoke-virtual {v0}, Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;->getMerchantData()Lcom/google/protobuf/ByteString;
move-result-object v0
invoke-virtual {v0}, Lcom/google/protobuf/ByteString;->toByteArray()[B
move-result-object v0
.line 292
:goto_12
return-object v0
:cond_13
const/4 v0, 0x0
goto :goto_12
.end method
.method public getNetworkParameters()Lorg/bitcoinj/core/NetworkParameters;
.registers 2
.prologue
.line 421
iget-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->params:Lorg/bitcoinj/core/NetworkParameters;
return-object v0
.end method
.method public getOutputs()Ljava/util/List;
.registers 7
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/protocols/payments/PaymentProtocol$Output;",
">;"
}
.end annotation
.prologue
.line 225
new-instance v2, Ljava/util/ArrayList;
iget-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->paymentDetails:Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;
invoke-virtual {v0}, Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;->getOutputsCount()I
move-result v0
invoke-direct {v2, v0}, Ljava/util/ArrayList;-><init>(I)V
.line 226
iget-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->paymentDetails:Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;
invoke-virtual {v0}, Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;->getOutputsList()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v3
:goto_15
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_42
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoin/protocols/payments/Protos$Output;
.line 227
invoke-virtual {v0}, Lorg/bitcoin/protocols/payments/Protos$Output;->hasAmount()Z
move-result v1
if-eqz v1, :cond_40
invoke-virtual {v0}, Lorg/bitcoin/protocols/payments/Protos$Output;->getAmount()J
move-result-wide v4
invoke-static {v4, v5}, Lorg/bitcoinj/core/Coin;->valueOf(J)Lorg/bitcoinj/core/Coin;
move-result-object v1
.line 228
:goto_2f
new-instance v4, Lorg/bitcoinj/protocols/payments/PaymentProtocol$Output;
invoke-virtual {v0}, Lorg/bitcoin/protocols/payments/Protos$Output;->getScript()Lcom/google/protobuf/ByteString;
move-result-object v0
invoke-virtual {v0}, Lcom/google/protobuf/ByteString;->toByteArray()[B
move-result-object v0
invoke-direct {v4, v1, v0}, Lorg/bitcoinj/protocols/payments/PaymentProtocol$Output;-><init>(Lorg/bitcoinj/core/Coin;[B)V
invoke-interface {v2, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z
goto :goto_15
.line 227
:cond_40
const/4 v1, 0x0
goto :goto_2f
.line 230
:cond_42
return-object v2
.end method
.method public getPayment(Ljava/util/List;Lorg/bitcoinj/core/Address;Ljava/lang/String;)Lorg/bitcoin/protocols/payments/Protos$Payment;
.registers 7
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/Transaction;",
">;",
"Lorg/bitcoinj/core/Address;",
"Ljava/lang/String;",
")",
"Lorg/bitcoin/protocols/payments/Protos$Payment;"
}
.end annotation
.prologue
.line 344
iget-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->paymentDetails:Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;
invoke-virtual {v0}, Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;->hasPaymentUrl()Z
move-result v0
if-eqz v0, :cond_3b
.line 345
invoke-interface {p1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_c
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_30
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/Transaction;
.line 346
invoke-virtual {v0}, Lorg/bitcoinj/core/Transaction;->getParams()Lorg/bitcoinj/core/NetworkParameters;
move-result-object v0
iget-object v2, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->params:Lorg/bitcoinj/core/NetworkParameters;
invoke-virtual {v0, v2}, Lorg/bitcoinj/core/NetworkParameters;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_c
.line 347
new-instance v0, Lorg/bitcoinj/protocols/payments/PaymentProtocolException$InvalidNetwork;
iget-object v1, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->params:Lorg/bitcoinj/core/NetworkParameters;
invoke-virtual {v1}, Lorg/bitcoinj/core/NetworkParameters;->getPaymentProtocolId()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Lorg/bitcoinj/protocols/payments/PaymentProtocolException$InvalidNetwork;-><init>(Ljava/lang/String;)V
throw v0
.line 348
:cond_30
iget-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->totalValue:Lorg/bitcoinj/core/Coin;
invoke-virtual {p0}, Lorg/bitcoinj/protocols/payments/PaymentSession;->getMerchantData()[B
move-result-object v1
invoke-static {p1, v0, p2, p3, v1}, Lorg/bitcoinj/protocols/payments/PaymentProtocol;->createPaymentMessage(Ljava/util/List;Lorg/bitcoinj/core/Coin;Lorg/bitcoinj/core/Address;Ljava/lang/String;[B)Lorg/bitcoin/protocols/payments/Protos$Payment;
move-result-object v0
.line 350
:goto_3a
return-object v0
:cond_3b
const/4 v0, 0x0
goto :goto_3a
.end method
.method public getPaymentDetails()Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;
.registers 2
.prologue
.line 431
iget-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->paymentDetails:Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;
return-object v0
.end method
.method public getPaymentRequest()Lorg/bitcoin/protocols/payments/Protos$PaymentRequest;
.registers 2
.prologue
.line 426
iget-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->paymentRequest:Lorg/bitcoin/protocols/payments/Protos$PaymentRequest;
return-object v0
.end method
.method public getPaymentUrl()Ljava/lang/String;
.registers 2
.prologue
.line 280
iget-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->paymentDetails:Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;
invoke-virtual {v0}, Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;->hasPaymentUrl()Z
move-result v0
if-eqz v0, :cond_f
.line 281
iget-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->paymentDetails:Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;
invoke-virtual {v0}, Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;->getPaymentUrl()Ljava/lang/String;
move-result-object v0
.line 282
:goto_e
return-object v0
:cond_f
const/4 v0, 0x0
goto :goto_e
.end method
.method public getSendRequest()Lorg/bitcoinj/wallet/SendRequest;
.registers 9
.prologue
.line 299
new-instance v1, Lorg/bitcoinj/core/Transaction;
iget-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->params:Lorg/bitcoinj/core/NetworkParameters;
invoke-direct {v1, v0}, Lorg/bitcoinj/core/Transaction;-><init>(Lorg/bitcoinj/core/NetworkParameters;)V
.line 300
iget-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->paymentDetails:Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;
invoke-virtual {v0}, Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;->getOutputsList()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v2
:goto_11
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_38
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoin/protocols/payments/Protos$Output;
.line 301
new-instance v3, Lorg/bitcoinj/core/TransactionOutput;
iget-object v4, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->params:Lorg/bitcoinj/core/NetworkParameters;
invoke-virtual {v0}, Lorg/bitcoin/protocols/payments/Protos$Output;->getAmount()J
move-result-wide v6
invoke-static {v6, v7}, Lorg/bitcoinj/core/Coin;->valueOf(J)Lorg/bitcoinj/core/Coin;
move-result-object v5
invoke-virtual {v0}, Lorg/bitcoin/protocols/payments/Protos$Output;->getScript()Lcom/google/protobuf/ByteString;
move-result-object v0
invoke-virtual {v0}, Lcom/google/protobuf/ByteString;->toByteArray()[B
move-result-object v0
invoke-direct {v3, v4, v1, v5, v0}, Lorg/bitcoinj/core/TransactionOutput;-><init>(Lorg/bitcoinj/core/NetworkParameters;Lorg/bitcoinj/core/Transaction;Lorg/bitcoinj/core/Coin;[B)V
invoke-virtual {v1, v3}, Lorg/bitcoinj/core/Transaction;->addOutput(Lorg/bitcoinj/core/TransactionOutput;)Lorg/bitcoinj/core/TransactionOutput;
goto :goto_11
.line 302
:cond_38
invoke-static {v1}, Lorg/bitcoinj/wallet/SendRequest;->forTx(Lorg/bitcoinj/core/Transaction;)Lorg/bitcoinj/wallet/SendRequest;
move-result-object v0
iget-object v1, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->paymentDetails:Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;
invoke-virtual {v0, v1}, Lorg/bitcoinj/wallet/SendRequest;->fromPaymentDetails(Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;)Lorg/bitcoinj/wallet/SendRequest;
move-result-object v0
return-object v0
.end method
.method public getValue()Lorg/bitcoinj/core/Coin;
.registers 2
.prologue
.line 247
iget-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->totalValue:Lorg/bitcoinj/core/Coin;
return-object v0
.end method
.method public isExpired()Z
.registers 5
.prologue
.line 271
iget-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->paymentDetails:Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;
invoke-virtual {v0}, Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;->hasExpires()Z
move-result v0
if-eqz v0, :cond_1b
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v0
const-wide/16 v2, 0x3e8
div-long/2addr v0, v2
iget-object v2, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->paymentDetails:Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;
invoke-virtual {v2}, Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;->getExpires()J
move-result-wide v2
cmp-long v0, v0, v2
if-lez v0, :cond_1b
const/4 v0, 0x1
:goto_1a
return v0
:cond_1b
const/4 v0, 0x0
goto :goto_1a
.end method
.method protected sendPayment(Ljava/net/URL;Lorg/bitcoin/protocols/payments/Protos$Payment;)Lcom/google/common/util/concurrent/y;
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/net/URL;",
"Lorg/bitcoin/protocols/payments/Protos$Payment;",
")",
"Lcom/google/common/util/concurrent/y",
"<",
"Lorg/bitcoinj/protocols/payments/PaymentProtocol$Ack;",
">;"
}
.end annotation
.prologue
.line 356
sget-object v0, Lorg/bitcoinj/protocols/payments/PaymentSession;->executor:Lcom/google/common/util/concurrent/ad;
new-instance v1, Lorg/bitcoinj/protocols/payments/PaymentSession$2;
invoke-direct {v1, p0, p1, p2}, Lorg/bitcoinj/protocols/payments/PaymentSession$2;-><init>(Lorg/bitcoinj/protocols/payments/PaymentSession;Ljava/net/URL;Lorg/bitcoin/protocols/payments/Protos$Payment;)V
invoke-interface {v0, v1}, Lcom/google/common/util/concurrent/ad;->b(Ljava/util/concurrent/Callable;)Lcom/google/common/util/concurrent/y;
move-result-object v0
return-object v0
.end method
.method public sendPayment(Ljava/util/List;Lorg/bitcoinj/core/Address;Ljava/lang/String;)Lcom/google/common/util/concurrent/y;
.registers 7
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/Transaction;",
">;",
"Lorg/bitcoinj/core/Address;",
"Ljava/lang/String;",
")",
"Lcom/google/common/util/concurrent/y",
"<",
"Lorg/bitcoinj/protocols/payments/PaymentProtocol$Ack;",
">;"
}
.end annotation
.prologue
.line 319
invoke-virtual {p0, p1, p2, p3}, Lorg/bitcoinj/protocols/payments/PaymentSession;->getPayment(Ljava/util/List;Lorg/bitcoinj/core/Address;Ljava/lang/String;)Lorg/bitcoin/protocols/payments/Protos$Payment;
move-result-object v0
.line 320
if-nez v0, :cond_8
.line 321
const/4 v0, 0x0
.line 330
:goto_7
return-object v0
.line 322
:cond_8
invoke-virtual {p0}, Lorg/bitcoinj/protocols/payments/PaymentSession;->isExpired()Z
move-result v1
if-eqz v1, :cond_16
.line 323
new-instance v0, Lorg/bitcoinj/protocols/payments/PaymentProtocolException$Expired;
const-string v1, "PaymentRequest is expired"
invoke-direct {v0, v1}, Lorg/bitcoinj/protocols/payments/PaymentProtocolException$Expired;-><init>(Ljava/lang/String;)V
throw v0
.line 326
:cond_16
:try_start_16
new-instance v1, Ljava/net/URL;
iget-object v2, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->paymentDetails:Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;
invoke-virtual {v2}, Lorg/bitcoin/protocols/payments/Protos$PaymentDetails;->getPaymentUrl()Ljava/lang/String;
move-result-object v2
invoke-direct {v1, v2}, Ljava/net/URL;-><init>(Ljava/lang/String;)V
:try_end_21
.catch Ljava/net/MalformedURLException; {:try_start_16 .. :try_end_21} :catch_26
.line 330
invoke-virtual {p0, v1, v0}, Lorg/bitcoinj/protocols/payments/PaymentSession;->sendPayment(Ljava/net/URL;Lorg/bitcoin/protocols/payments/Protos$Payment;)Lcom/google/common/util/concurrent/y;
move-result-object v0
goto :goto_7
.line 327
:catch_26
move-exception v0
.line 328
new-instance v1, Lorg/bitcoinj/protocols/payments/PaymentProtocolException$InvalidPaymentURL;
invoke-direct {v1, v0}, Lorg/bitcoinj/protocols/payments/PaymentProtocolException$InvalidPaymentURL;-><init>(Ljava/lang/Exception;)V
throw v1
.end method
.method public verifyPki()Lorg/bitcoinj/protocols/payments/PaymentProtocol$PkiVerificationData;
.registers 2
.prologue
.line 416
iget-object v0, p0, Lorg/bitcoinj/protocols/payments/PaymentSession;->pkiVerificationData:Lorg/bitcoinj/protocols/payments/PaymentProtocol$PkiVerificationData;
return-object v0
.end method