Files
zeekay 73646704fa Update dependencies and copyright year
- Update luxfi/crypto to v1.17.15, luxfi/ids to v1.1.3
- Update copyright year to 2025 across source files
- Remove ledger.go.disabled (used incorrect luxfi/node/ids import)
2025-12-11 05:19:37 +00:00

78 lines
1.8 KiB
Go

// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
// See the file LICENSE for licensing terms.
//go:build ledger
// +build ledger
package ledger
import (
"testing"
"github.com/stretchr/testify/require"
"github.com/luxfi/crypto/secp256k1"
"github.com/luxfi/node/utils/formatting/address"
"github.com/luxfi/node/utils/hashing"
)
const (
chainAlias = "P"
hrp = "testnet"
)
// TestLedger will be skipped if a ledger is not connected.
func TestLedger(t *testing.T) {
require := require.New(t)
// Initialize Ledger
device, err := New()
if err != nil {
t.Skip("ledger not detected")
}
// Get version
version, err := device.Version()
require.NoError(err)
t.Logf("version: %s\n", version)
// Get Testnet Address
addr, err := device.Address(hrp, 0)
require.NoError(err)
paddr, err := address.Format(chainAlias, hrp, addr[:])
require.NoError(err)
t.Logf("address: %s shortID: %s\n", paddr, addr)
// Get Extended Addresses
addresses, err := device.Addresses([]uint32{0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
require.NoError(err)
for i, taddr := range addresses {
paddr, err := address.Format(chainAlias, hrp, taddr[:])
require.NoError(err)
t.Logf("address(%d): %s shortID: %s\n", i, paddr, taddr)
// Ensure first derived address matches directly requested address
if i == 0 {
require.Equal(addr, taddr, "address mismatch at index 0")
}
}
// Sign Hash
rawHash := hashing.ComputeHash256([]byte{0x1, 0x2, 0x3, 0x4})
indices := []uint32{1, 3}
sigs, err := device.SignHash(rawHash, indices)
require.NoError(err)
require.Len(sigs, 2)
for i, addrIndex := range indices {
sig := sigs[i]
pk, err := secp256k1.RecoverPublicKeyFromHash(rawHash, sig)
require.NoError(err)
require.Equal(addresses[addrIndex], pk.Address())
}
// Disconnect
require.NoError(device.Disconnect())
}