Skip to content

Commit fa7f932

Browse files
committed
Merge branch 'payment-req'
2 parents b22740e + e142de9 commit fa7f932

File tree

6 files changed

+822
-316
lines changed

6 files changed

+822
-316
lines changed

api/firmware/btc.go

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -232,10 +232,11 @@ type BTCTxInput struct {
232232

233233
// BTCTx is the data needed to sign a btc transaction.
234234
type BTCTx struct {
235-
Version uint32
236-
Inputs []*BTCTxInput
237-
Outputs []*messages.BTCSignOutputRequest
238-
Locktime uint32
235+
Version uint32
236+
Inputs []*BTCTxInput
237+
Outputs []*messages.BTCSignOutputRequest
238+
Locktime uint32
239+
PaymentRequests []*messages.BTCPaymentRequestRequest
239240
}
240241

241242
// BTCSign signs a bitcoin or bitcoin-like transaction. The previous transactions of the inputs
@@ -387,6 +388,22 @@ func (device *Device) BTCSign(
387388
if err != nil {
388389
return nil, err
389390
}
391+
case messages.BTCSignNextResponse_PAYMENT_REQUEST:
392+
paymentRequestIndex := next.Index
393+
if int(paymentRequestIndex) >= len(tx.PaymentRequests) {
394+
return nil, errp.New("payment request index out of bounds")
395+
}
396+
paymentRequest := tx.PaymentRequests[paymentRequestIndex]
397+
next, err = device.nestedQueryBtcSign(
398+
&messages.BTCRequest{
399+
Request: &messages.BTCRequest_PaymentRequest{
400+
PaymentRequest: paymentRequest,
401+
},
402+
},
403+
)
404+
if err != nil {
405+
return nil, err
406+
}
390407
case messages.BTCSignNextResponse_DONE:
391408
return signatures, nil
392409
}

0 commit comments

Comments
 (0)