Skip to content

Commit eb34407

Browse files
committed
Implement crypto operations natively
1 parent cfc3874 commit eb34407

11 files changed

Lines changed: 115 additions & 67 deletions

File tree

crypto/crypto.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,13 +82,19 @@ func Sha256HexString(str string) string {
8282
return hex.EncodeToString(hash[:])
8383
}
8484

85-
func DerivePublicKey(seedHexString string, network lightspark_crypto.BitcoinNetwork, derivationPath string) (string, error) {
85+
func DerivePublicKey(seedHexString string, derivationPath string) (string, error) {
8686
seedBytes, err := hex.DecodeString(seedHexString)
8787
if err != nil {
8888
return "", err
8989
}
9090

91-
return lightspark_crypto.DerivePublicKey(seedBytes, network, derivationPath)
91+
xpriv, err := DeriveXpriv(seedBytes, derivationPath)
92+
if err != nil {
93+
return "", err
94+
}
95+
96+
xpub := xpriv.PublicKey()
97+
return xpub.String(), nil
9298
}
9399

94100
func ECDH(seedBytes []byte, network lightspark_crypto.BitcoinNetwork, otherPubKey string) (string, error) {

crypto/signer.go

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"strconv"
1010
"strings"
1111

12+
"github.com/btcsuite/btcd/btcec/v2"
1213
"github.com/tyler-smith/go-bip32"
1314
)
1415

@@ -87,3 +88,47 @@ func GeneratePreimageAndPaymentHash(key []byte, nonce []byte) ([]byte, []byte, e
8788

8889
return preimage, paymentHash[:], nil
8990
}
91+
92+
func GetPerCommitmentPoint(seedBytes []byte, derivationPath string, perCommitmentPointIdx uint64) ([]byte, error) {
93+
secret, err := ReleasePerCommitmentSecret(seedBytes, derivationPath, perCommitmentPointIdx)
94+
if err != nil {
95+
return nil, err
96+
}
97+
98+
privKey, _ := btcec.PrivKeyFromBytes(secret)
99+
pubKey := privKey.PubKey()
100+
return pubKey.SerializeCompressed(), nil
101+
}
102+
103+
func ReleasePerCommitmentSecret(seedBytes []byte, derivationPath string, perCommitmentPointIdx uint64) ([]byte, error) {
104+
xpriv, err := DeriveXpriv(seedBytes, derivationPath)
105+
if err != nil {
106+
return nil, err
107+
}
108+
109+
privKeyHash := sha256.Sum256(xpriv.Key)
110+
channelSeed := privKeyHash[:]
111+
commitmentSeed := buildCommitmentSeed(channelSeed)
112+
commitmentSecret := buildCommitmentSecret(commitmentSeed[:], perCommitmentPointIdx)
113+
return commitmentSecret, nil
114+
}
115+
116+
func buildCommitmentSeed(channelSeed []byte) [32]byte {
117+
combined := append(channelSeed, []byte("commitment seed")...)
118+
return sha256.Sum256(combined)
119+
}
120+
121+
func buildCommitmentSecret(seed []byte, idx uint64) []byte {
122+
res := make([]byte, len(seed))
123+
copy(res, seed)
124+
125+
for i := range 48 {
126+
bitpos := 47 - i
127+
if (idx & (1 << bitpos)) == (1 << bitpos) {
128+
res[bitpos/8] ^= 1 << (bitpos & 7)
129+
hash := sha256.Sum256(res)
130+
res = hash[:]
131+
}
132+
}
133+
return res
134+
}

crypto/test/crypto_test.go

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,38 @@
22
package crypto_test
33

44
import (
5+
"encoding/hex"
56
"github.com/lightsparkdev/go-sdk/crypto"
67
"testing"
78

8-
lightspark_crypto "github.com/lightsparkdev/lightspark-crypto-uniffi/lightspark-crypto-go"
9+
"github.com/btcsuite/btcd/btcec/v2"
910
"github.com/stretchr/testify/require"
1011
)
1112

1213
func TestDerivePublicKey(t *testing.T) {
1314
privateKeySeed := "fffcf9f6f3f0edeae7e4e1dedbd8d5d2cfccc9c6c3c0bdbab7b4b1aeaba8a5a29f9c999693908d8a8784817e7b7875726f6c696663605d5a5754514e4b484542"
1415
derivationPath := "m/0/2147483647'/1"
1516

16-
publicKey, err := crypto.DerivePublicKey(privateKeySeed, lightspark_crypto.Mainnet, derivationPath)
17+
publicKey, err := crypto.DerivePublicKey(privateKeySeed, derivationPath)
1718
require.NoError(t, err)
1819
require.Equal(t, "xpub6DF8uhdarytz3FWdA8TvFSvvAh8dP3283MY7p2V4SeE2wyWmG5mg5EwVvmdMVCQcoNJxGoWaU9DCWh89LojfZ537wTfunKau47EL2dhHKon", publicKey)
1920
}
21+
22+
func TestCommitment(t *testing.T) {
23+
seedHexString := "000102030405060708090a0b0c0d0e0f"
24+
seedBytes, err := hex.DecodeString(seedHexString)
25+
require.NoError(t, err)
26+
27+
derivationPath := "m/3/2104864975"
28+
commitmentPointIdx := uint64(281474976710654)
29+
commitmentPoint, err := crypto.GetPerCommitmentPoint(seedBytes, derivationPath, commitmentPointIdx)
30+
require.NoError(t, err)
31+
32+
commitmentSecret, err := crypto.ReleasePerCommitmentSecret(seedBytes, derivationPath, commitmentPointIdx)
33+
require.NoError(t, err)
34+
35+
privKey, _ := btcec.PrivKeyFromBytes(commitmentSecret)
36+
pubKey := privKey.PubKey()
37+
serializedPubKey := pubKey.SerializeCompressed()
38+
require.Equal(t, commitmentPoint, serializedPubKey)
39+
}

examples/remote-signing-server/go.mod

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module github.com/lightsparkdev/go-sdk/examples/remote-signing-server
22

3-
go 1.22.0
3+
go 1.22.6
44

55
toolchain go1.23.2
66

@@ -13,16 +13,16 @@ require (
1313
github.com/DataDog/zstd v1.5.5 // indirect
1414
github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e // indirect
1515
github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec // indirect
16-
github.com/btcsuite/btcd v0.24.0 // indirect
17-
github.com/btcsuite/btcd/btcec/v2 v2.2.0 // indirect
16+
github.com/btcsuite/btcd v0.24.3-0.20240921052913-67b8efd3ba53 // indirect
17+
github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect
1818
github.com/btcsuite/btcd/btcutil v1.1.5 // indirect
1919
github.com/btcsuite/btcd/btcutil/psbt v1.1.9 // indirect
2020
github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect
2121
github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f // indirect
2222
github.com/bytedance/sonic v1.9.1 // indirect
2323
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect
2424
github.com/decred/dcrd/crypto/blake256 v1.0.1 // indirect
25-
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect
25+
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect
2626
github.com/gabriel-vasile/mimetype v1.4.2 // indirect
2727
github.com/gin-contrib/sse v0.1.0 // indirect
2828
github.com/go-playground/locales v0.14.1 // indirect
@@ -44,7 +44,7 @@ require (
4444
github.com/ugorji/go/codec v1.2.11 // indirect
4545
golang.org/x/arch v0.3.0 // indirect
4646
golang.org/x/crypto v0.23.0 // indirect
47-
golang.org/x/net v0.21.0 // indirect
47+
golang.org/x/net v0.24.0 // indirect
4848
golang.org/x/sys v0.26.0 // indirect
4949
golang.org/x/text v0.15.0 // indirect
5050
google.golang.org/protobuf v1.30.0 // indirect

examples/remote-signing-server/go.sum

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBA
88
github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ=
99
github.com/btcsuite/btcd v0.22.0-beta.0.20220111032746-97732e52810c/go.mod h1:tjmYdS6MLJ5/s0Fj4DbLgSbDHbEqLJrtnHecBFkdz5M=
1010
github.com/btcsuite/btcd v0.23.5-0.20231215221805-96c9fd8078fd/go.mod h1:nm3Bko6zh6bWP60UxwoT5LzdGJsQJaPo6HjduXq9p6A=
11-
github.com/btcsuite/btcd v0.24.0 h1:gL3uHE/IaFj6fcZSu03SvqPMSx7s/dPzfpG/atRwWdo=
12-
github.com/btcsuite/btcd v0.24.0/go.mod h1:K4IDc1593s8jKXIF7yS7yCTSxrknB9z0STzc2j6XgE4=
11+
github.com/btcsuite/btcd v0.24.3-0.20240921052913-67b8efd3ba53 h1:XOZ/wRGHkKv0AqxfDks5IkzaQ1Ge6fq322ZOOG5VIkU=
12+
github.com/btcsuite/btcd v0.24.3-0.20240921052913-67b8efd3ba53/go.mod h1:zHK7t7sw8XbsCkD64WePHE3r3k9/XoGAcf6mXV14c64=
1313
github.com/btcsuite/btcd/btcec/v2 v2.1.0/go.mod h1:2VzYrv4Gm4apmbVVsSq5bqf1Ec8v56E48Vt0Y/umPgA=
1414
github.com/btcsuite/btcd/btcec/v2 v2.1.3/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE=
15-
github.com/btcsuite/btcd/btcec/v2 v2.2.0 h1:fzn1qaOt32TuLjFlkzYSsBC35Q3KUjT1SwPxiMSCF5k=
16-
github.com/btcsuite/btcd/btcec/v2 v2.2.0/go.mod h1:U7MHm051Al6XmscBQ0BoNydpOTsFAn707034b5nY8zU=
15+
github.com/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurTXGPFfiQ=
16+
github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04=
1717
github.com/btcsuite/btcd/btcutil v1.0.0/go.mod h1:Uoxwv0pqYWhD//tfTiipkxNfdhG9UrLwaeswfjfdF0A=
1818
github.com/btcsuite/btcd/btcutil v1.1.0/go.mod h1:5OapHB7A2hBBWLm48mmw4MOHNJCcUBTwmWH/0Jn8VHE=
1919
github.com/btcsuite/btcd/btcutil v1.1.5 h1:+wER79R5670vs/ZusMTF1yTcRYE5GUsFbdjdisflzM8=
@@ -51,8 +51,8 @@ github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn
5151
github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y=
5252
github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo=
5353
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs=
54-
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs=
55-
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0=
54+
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnNEcHYvcCuK6dPZSg=
55+
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0=
5656
github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218=
5757
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
5858
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
@@ -139,8 +139,8 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO
139139
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
140140
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
141141
github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
142-
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
143-
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
142+
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
143+
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
144144
github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc=
145145
github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
146146
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
@@ -162,8 +162,8 @@ golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73r
162162
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
163163
golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
164164
golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
165-
golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4=
166-
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
165+
golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w=
166+
golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8=
167167
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
168168
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
169169
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=

go.mod

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,35 @@
11
module github.com/lightsparkdev/go-sdk
22

3-
go 1.22.0
3+
go 1.22.6
44

55
toolchain go1.23.2
66

77
require (
88
github.com/DataDog/zstd v1.5.5
99
github.com/lightsparkdev/lightspark-crypto-uniffi/lightspark-crypto-go v0.4.1
10-
github.com/stretchr/testify v1.8.4
10+
github.com/stretchr/testify v1.9.0
1111
golang.org/x/crypto v0.23.0
1212
)
1313

1414
require (
1515
github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e // indirect
1616
github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec // indirect
17+
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
1718
)
1819

1920
require (
20-
github.com/btcsuite/btcd/btcec/v2 v2.2.0 // indirect
21+
github.com/btcsuite/btcd/btcec/v2 v2.3.4
2122
github.com/btcsuite/btcd/btcutil v1.1.5
2223
github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect
2324
github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f // indirect
2425
github.com/decred/dcrd/crypto/blake256 v1.0.1 // indirect
25-
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0
26+
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0
2627
github.com/kr/pretty v0.3.1 // indirect
2728
golang.org/x/sys v0.26.0 // indirect
28-
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
2929
)
3030

3131
require (
32-
github.com/btcsuite/btcd v0.24.0
32+
github.com/btcsuite/btcd v0.24.3-0.20240921052913-67b8efd3ba53
3333
github.com/btcsuite/btcd/btcutil/psbt v1.1.9
3434
github.com/davecgh/go-spew v1.1.1 // indirect
3535
github.com/pmezard/go-difflib v1.0.0 // indirect

go.sum

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBA
88
github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ=
99
github.com/btcsuite/btcd v0.22.0-beta.0.20220111032746-97732e52810c/go.mod h1:tjmYdS6MLJ5/s0Fj4DbLgSbDHbEqLJrtnHecBFkdz5M=
1010
github.com/btcsuite/btcd v0.23.5-0.20231215221805-96c9fd8078fd/go.mod h1:nm3Bko6zh6bWP60UxwoT5LzdGJsQJaPo6HjduXq9p6A=
11-
github.com/btcsuite/btcd v0.24.0 h1:gL3uHE/IaFj6fcZSu03SvqPMSx7s/dPzfpG/atRwWdo=
12-
github.com/btcsuite/btcd v0.24.0/go.mod h1:K4IDc1593s8jKXIF7yS7yCTSxrknB9z0STzc2j6XgE4=
11+
github.com/btcsuite/btcd v0.24.3-0.20240921052913-67b8efd3ba53 h1:XOZ/wRGHkKv0AqxfDks5IkzaQ1Ge6fq322ZOOG5VIkU=
12+
github.com/btcsuite/btcd v0.24.3-0.20240921052913-67b8efd3ba53/go.mod h1:zHK7t7sw8XbsCkD64WePHE3r3k9/XoGAcf6mXV14c64=
1313
github.com/btcsuite/btcd/btcec/v2 v2.1.0/go.mod h1:2VzYrv4Gm4apmbVVsSq5bqf1Ec8v56E48Vt0Y/umPgA=
1414
github.com/btcsuite/btcd/btcec/v2 v2.1.3/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE=
15-
github.com/btcsuite/btcd/btcec/v2 v2.2.0 h1:fzn1qaOt32TuLjFlkzYSsBC35Q3KUjT1SwPxiMSCF5k=
16-
github.com/btcsuite/btcd/btcec/v2 v2.2.0/go.mod h1:U7MHm051Al6XmscBQ0BoNydpOTsFAn707034b5nY8zU=
15+
github.com/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurTXGPFfiQ=
16+
github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04=
1717
github.com/btcsuite/btcd/btcutil v1.0.0/go.mod h1:Uoxwv0pqYWhD//tfTiipkxNfdhG9UrLwaeswfjfdF0A=
1818
github.com/btcsuite/btcd/btcutil v1.1.0/go.mod h1:5OapHB7A2hBBWLm48mmw4MOHNJCcUBTwmWH/0Jn8VHE=
1919
github.com/btcsuite/btcd/btcutil v1.1.5 h1:+wER79R5670vs/ZusMTF1yTcRYE5GUsFbdjdisflzM8=
@@ -45,8 +45,8 @@ github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn
4545
github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y=
4646
github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo=
4747
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs=
48-
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs=
49-
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0=
48+
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnNEcHYvcCuK6dPZSg=
49+
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0=
5050
github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218=
5151
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
5252
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
@@ -93,8 +93,8 @@ github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/f
9393
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
9494
github.com/stretchr/testify v1.1.5-0.20170601210322-f6abca593680/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
9595
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
96-
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
97-
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
96+
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
97+
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
9898
github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc=
9999
github.com/tyler-smith/go-bip32 v1.0.0 h1:sDR9juArbUgX+bO/iblgZnMPeWY1KZMUC2AFUJdv5KE=
100100
github.com/tyler-smith/go-bip32 v1.0.0/go.mod h1:onot+eHknzV4BVPwrzqY5OoVpyCvnwD7lMawL5aQupE=

remotesigning/remote_signing.go

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -215,14 +215,9 @@ func HandleEcdhRequest(request *ECDHRequest, seedBytes []byte) (*ECDHResponse, e
215215

216216
func HandleGetPerCommitmentPointRequest(request *GetPerCommitmentPointRequest, seedBytes []byte) (*GetPerCommitmentPointResponse, error) {
217217
log.Println("Handling GET_PER_COMMITMENT_POINT webhook")
218-
bitcoinNetwork, err := bitcoinNetworkConversion(request.BitcoinNetwork)
219-
if err != nil {
220-
return nil, err
221-
}
222218

223-
perCommitmentPoint, err := lightspark_crypto.GetPerCommitmentPoint(
219+
perCommitmentPoint, err := crypto.GetPerCommitmentPoint(
224220
seedBytes,
225-
bitcoinNetwork,
226221
request.DerivationPath,
227222
request.PerCommitmentPointIdx)
228223
if err != nil {
@@ -240,14 +235,8 @@ func HandleGetPerCommitmentPointRequest(request *GetPerCommitmentPointRequest, s
240235

241236
func HandleReleasePerCommitmentSecretRequest(request *ReleasePerCommitmentSecretRequest, seedBytes []byte) (*ReleasePerCommitmentSecretResponse, error) {
242237
log.Println("Handling RELEASE_PER_COMMITMENT_SECRET webhook")
243-
bitcoinNetwork, err := bitcoinNetworkConversion(request.BitcoinNetwork)
244-
if err != nil {
245-
return nil, err
246-
}
247-
248-
perCommitmentSecret, err := lightspark_crypto.ReleasePerCommitmentSecret(
238+
perCommitmentSecret, err := crypto.ReleasePerCommitmentSecret(
249239
seedBytes,
250-
bitcoinNetwork,
251240
request.DerivationPath,
252241
request.PerCommitmentPointIdx)
253242
if err != nil {
@@ -265,11 +254,11 @@ func HandleReleasePerCommitmentSecretRequest(request *ReleasePerCommitmentSecret
265254

266255
func HandleInvoicePaymentHashRequest(request *InvoicePaymentHashRequest, seedBytes []byte) (*InvoicePaymentHashResponse, error) {
267256
log.Println("Handling REQUEST_INVOICE_PAYMENT_HASH webhook")
268-
nonce, err := lightspark_crypto.GeneratePreimageNonce(seedBytes)
257+
nonce, err := crypto.GeneratePreimageNonce()
269258
if err != nil {
270259
return nil, err
271260
}
272-
paymentHash, err := lightspark_crypto.GeneratePreimageHash(seedBytes, nonce)
261+
_, paymentHash, err := crypto.GeneratePreimageAndPaymentHash(seedBytes, nonce)
273262
if err != nil {
274263
return nil, err
275264
}
@@ -323,7 +312,7 @@ func HandleReleaseInvoicePreimageRequest(request *ReleasePaymentPreimageRequest,
323312
return nil, err
324313
}
325314

326-
preimage, err := lightspark_crypto.GeneratePreimage(seedBytes, nonceBytes)
315+
preimage, _, err := crypto.GeneratePreimageAndPaymentHash(seedBytes, nonceBytes)
327316
if err != nil {
328317
return nil, err
329318
}

services/signing_key_loader.go

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
package services
22

33
import (
4-
"encoding/hex"
54
"errors"
65

76
"github.com/lightsparkdev/go-sdk/crypto"
87
"github.com/lightsparkdev/go-sdk/objects"
98
"github.com/lightsparkdev/go-sdk/requester"
109
"github.com/lightsparkdev/go-sdk/scripts"
11-
lightspark_crypto "github.com/lightsparkdev/lightspark-crypto-uniffi/lightspark-crypto-go"
1210
)
1311

1412
type SigningKeyLoader struct {
@@ -67,23 +65,13 @@ func (s *SigningKeyLoader) loadSigningKeyFromMasterSeed() (requester.SigningKey,
6765
if s.masterSeedAndNetwork == nil {
6866
return nil, errors.New("invalid signing key loader")
6967
}
70-
var network lightspark_crypto.BitcoinNetwork
71-
if s.masterSeedAndNetwork.network == objects.BitcoinNetworkMainnet {
72-
network = lightspark_crypto.Mainnet
73-
} else if s.masterSeedAndNetwork.network == objects.BitcoinNetworkTestnet {
74-
network = lightspark_crypto.Testnet
75-
} else if s.masterSeedAndNetwork.network == objects.BitcoinNetworkRegtest {
76-
network = lightspark_crypto.Regtest
77-
} else {
78-
return nil, errors.New("invalid network")
79-
}
8068

8169
derivationPath := "m/5"
82-
key, error := lightspark_crypto.DerivePrivateKey(s.masterSeedAndNetwork.masterSeed, network, derivationPath)
70+
key, error := crypto.DeriveXpriv(s.masterSeedAndNetwork.masterSeed, derivationPath)
8371
if error != nil {
8472
return nil, error
8573
}
86-
keyBytes, error := hex.DecodeString(key)
74+
keyBytes := key.Key
8775
if error != nil {
8876
return nil, error
8977
}

services/test/local/local_wallet_address_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ func TestGetNodeWalletAddressWithKeys(t *testing.T) {
2323

2424
// Get the master xpub
2525
seed := env.MasterSeedHex
26-
ourMasterPubkey, err := crypto.DerivePublicKey(seed, lightspark_crypto.Regtest, "m")
26+
ourMasterPubkey, err := crypto.DerivePublicKey(seed, "m")
2727
require.NoError(t, err)
2828

2929
pubkey1, err := hex.DecodeString(address.MultisigWalletAddressValidationParameters.CounterpartyFundingPubkey)

0 commit comments

Comments
 (0)