Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: return keyfile struct for vkey/skey #12

Merged
merged 1 commit into from
Sep 8, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 30 additions & 35 deletions bursa.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,56 +80,56 @@ func GetPaymentKey(accountKey bip32.XPrv, num uint32) bip32.XPrv {
return accountKey.Derive(0).Derive(num)
}

func GetPaymentVKey(paymentKey bip32.XPrv) string {
func GetPaymentVKey(paymentKey bip32.XPrv) KeyFile {
keyCbor, err := cbor.Marshal(paymentKey.Public().PublicKey())
if err != nil {
panic(err)
}
return GetKeyFile(
"PaymentVerificationKeyShelley_ed25519",
"Payment Verification Key",
keyCbor,
)
return KeyFile{
Type: "PaymentVerificationKeyShelley_ed25519",
Description: "Payment Verification Key",
CborHex: fmt.Sprintf("%x", keyCbor),
}
}

func GetPaymentSKey(paymentKey bip32.XPrv) string {
func GetPaymentSKey(paymentKey bip32.XPrv) KeyFile {
keyCbor, err := cbor.Marshal(GetExtendedPrivateKey(paymentKey, paymentKey.Public().PublicKey()))
if err != nil {
panic(err)
}
return GetKeyFile(
"PaymentExtendedSigningKeyShelley_ed25519_bip32",
"Payment Signing Key",
keyCbor,
)
return KeyFile{
Type: "PaymentExtendedSigningKeyShelley_ed25519_bip32",
Description: "Payment Signing Key",
CborHex: fmt.Sprintf("%x", keyCbor),
}
}

func GetStakeKey(accountKey bip32.XPrv, num uint32) bip32.XPrv {
return accountKey.Derive(2).Derive(num)
}

func GetStakeVKey(stakeKey bip32.XPrv) string {
func GetStakeVKey(stakeKey bip32.XPrv) KeyFile {
keyCbor, err := cbor.Marshal(stakeKey.Public().PublicKey())
if err != nil {
panic(err)
}
return GetKeyFile(
"StakeVerificationKeyShelley_ed25519",
"Stake Verification Key",
keyCbor,
)
return KeyFile{
Type: "StakeVerificationKeyShelley_ed25519",
Description: "Stake Verification Key",
CborHex: fmt.Sprintf("%x", keyCbor),
}
}

func GetStakeSKey(stakeKey bip32.XPrv) string {
func GetStakeSKey(stakeKey bip32.XPrv) KeyFile {
keyCbor, err := cbor.Marshal(GetExtendedPrivateKey(stakeKey, stakeKey.Public().PublicKey()))
if err != nil {
panic(err)
}
return GetKeyFile(
"StakeExtendedSigningKeyShelley_ed25519_bip32",
"Stake Signing Key",
keyCbor,
)
return KeyFile{
Type: "StakeExtendedSigningKeyShelley_ed25519_bip32",
Description: "Stake Signing Key",
CborHex: fmt.Sprintf("%x", keyCbor),
}
}

func GetAddress(accountKey bip32.XPrv, net string, num uint32) *address.BaseAddress {
Expand Down Expand Up @@ -161,14 +161,9 @@ func GetExtendedPrivateKey(privateKey []byte, publicKey []byte) bip32.XPrv {
return xprv
}

func GetKeyFile(keyType string, desc string, data []byte) string {
tmp := KeyFile{
Type: keyType,
Description: desc,
CborHex: fmt.Sprintf("%x", data),
}
func GetKeyFile(keyFile KeyFile) string {
// Use 4 spaces for indent
ret, err := json.MarshalIndent(tmp, "", " ")
ret, err := json.MarshalIndent(keyFile, "", " ")
if err != nil {
return ""
}
Expand Down Expand Up @@ -202,8 +197,8 @@ func Run() {
fmt.Printf("PAYMENT_ADDRESS=%s\n", addr.String())
fmt.Printf("STAKE_ADDRESS=%s\n", addr.ToReward().String())

fmt.Printf("payment.vkey=%s", GetPaymentVKey(GetPaymentKey(accountKey, 0)))
fmt.Printf("payment.skey=%s", GetPaymentSKey(GetPaymentKey(accountKey, 0)))
fmt.Printf("stake.vkey=%s", GetStakeVKey(GetStakeKey(accountKey, 0)))
fmt.Printf("stake.vkey=%s", GetStakeSKey(GetStakeKey(accountKey, 0)))
fmt.Printf("payment.vkey=%s", GetKeyFile(GetPaymentVKey(GetPaymentKey(accountKey, 0))))
fmt.Printf("payment.skey=%s", GetKeyFile(GetPaymentSKey(GetPaymentKey(accountKey, 0))))
fmt.Printf("stake.vkey=%s", GetKeyFile(GetStakeVKey(GetStakeKey(accountKey, 0))))
fmt.Printf("stake.vkey=%s", GetKeyFile(GetStakeSKey(GetStakeKey(accountKey, 0))))
}
Loading