Skip to content

Commit

Permalink
Merge pull request #55 from blinklabs-io/feat/skey-extended
Browse files Browse the repository at this point in the history
feat: support both skey and extended skey
  • Loading branch information
wolf31o2 committed Dec 16, 2023
2 parents 6f98da7 + 00638f5 commit 7e5e656
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 3 deletions.
33 changes: 30 additions & 3 deletions bursa.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,10 @@ type Wallet struct {
StakeAddress string `json:"stake_address"`
PaymentVKey KeyFile `json:"payment_kvey"`
PaymentSKey KeyFile `json:"payment_skey"`
PaymentESKey KeyFile `json:"payment_extended_skey"`
StakeVKey KeyFile `json:"stake_vkey"`
StakeSKey KeyFile `json:"stake_skey"`
StakeESKey KeyFile `json:"stake_extended_skey"`
}

func NewWallet(
Expand All @@ -63,8 +65,10 @@ func NewWallet(
StakeAddress: addr.ToReward().String(),
PaymentVKey: GetPaymentVKey(paymentKey),
PaymentSKey: GetPaymentSKey(paymentKey),
PaymentESKey: GetPaymentExtendedSKey(paymentKey),
StakeVKey: GetStakeVKey(stakeKey),
StakeSKey: GetStakeSKey(stakeKey),
StakeESKey: GetStakeExtendedSKey(stakeKey),
}
return w, nil
}
Expand Down Expand Up @@ -128,6 +132,18 @@ func GetPaymentVKey(paymentKey bip32.XPrv) KeyFile {
}

func GetPaymentSKey(paymentKey bip32.XPrv) KeyFile {
keyCbor, err := cbor.Marshal(paymentKey[:32])
if err != nil {
panic(err)
}
return KeyFile{
Type: "PaymentSigningKeyShelley_ed25519",
Description: "Payment Signing Key",
CborHex: fmt.Sprintf("%x", keyCbor),
}
}

func GetPaymentExtendedSKey(paymentKey bip32.XPrv) KeyFile {
keyCbor, err := cbor.Marshal(
GetExtendedPrivateKey(paymentKey, paymentKey.Public().PublicKey()),
)
Expand All @@ -136,11 +152,10 @@ func GetPaymentSKey(paymentKey bip32.XPrv) KeyFile {
}
return KeyFile{
Type: "PaymentExtendedSigningKeyShelley_ed25519_bip32",
Description: "Payment Signing Key",
Description: "Payment Extended Signing Key (BIP32)",
CborHex: fmt.Sprintf("%x", keyCbor),
}
}

func GetStakeKey(accountKey bip32.XPrv, num uint32) bip32.XPrv {
return accountKey.Derive(2).Derive(num)
}
Expand All @@ -158,6 +173,18 @@ func GetStakeVKey(stakeKey bip32.XPrv) KeyFile {
}

func GetStakeSKey(stakeKey bip32.XPrv) KeyFile {
keyCbor, err := cbor.Marshal(stakeKey[:32])
if err != nil {
panic(err)
}
return KeyFile{
Type: "StakeSigningKeyShelley_ed25519",
Description: "Stake Signing Key",
CborHex: fmt.Sprintf("%x", keyCbor),
}
}

func GetStakeExtendedSKey(stakeKey bip32.XPrv) KeyFile {
keyCbor, err := cbor.Marshal(
GetExtendedPrivateKey(stakeKey, stakeKey.Public().PublicKey()),
)
Expand All @@ -166,7 +193,7 @@ func GetStakeSKey(stakeKey bip32.XPrv) KeyFile {
}
return KeyFile{
Type: "StakeExtendedSigningKeyShelley_ed25519_bip32",
Description: "Stake Signing Key",
Description: "Stake Extended Signing Key (BIP32)",
CborHex: fmt.Sprintf("%x", keyCbor),
}
}
Expand Down
4 changes: 4 additions & 0 deletions internal/cli/cli.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,10 @@ func Run() {

fmt.Printf("payment.vkey=%s\n", bursa.GetKeyFile(w.PaymentVKey))
fmt.Printf("payment.skey=%s\n", bursa.GetKeyFile(w.PaymentSKey))
fmt.Printf("paymentExtended.skey=%s\n", bursa.GetKeyFile(w.PaymentESKey))
fmt.Printf("stake.vkey=%s\n", bursa.GetKeyFile(w.StakeVKey))
fmt.Printf("stake.skey=%s\n", bursa.GetKeyFile(w.StakeSKey))
fmt.Printf("stakeExtended.skey=%s\n", bursa.GetKeyFile(w.StakeESKey))
} else {
fmt.Printf("Output dir: %v\n", *flagOutput)
_, err := os.Stat(*flagOutput)
Expand All @@ -80,8 +82,10 @@ func Run() {
{"stake.addr": w.StakeAddress},
{"payment.vkey": bursa.GetKeyFile(w.PaymentVKey)},
{"payment.skey": bursa.GetKeyFile(w.PaymentSKey)},
{"paymentExtended.skey": bursa.GetKeyFile(w.PaymentESKey)},
{"stake.vkey": bursa.GetKeyFile(w.StakeVKey)},
{"stake.skey": bursa.GetKeyFile(w.StakeSKey)},
{"stakeExtended.skey": bursa.GetKeyFile(w.StakeESKey)},
}
var g errgroup.Group
for _, m := range fileMap {
Expand Down

0 comments on commit 7e5e656

Please sign in to comment.