key v1 after upgrade
This commit is contained in:
parent
2bc1991c09
commit
bade30ba1a
@ -66,8 +66,8 @@ func (h *GprcHandler) Keygen(ctx context.Context, req *nockchain.KeygenRequest)
|
||||
PrivateKey: base58.Encode(masterKey.PrivateKey),
|
||||
Address: address,
|
||||
ChainCode: base58.Encode(masterKey.ChainCode),
|
||||
ImportPrivateKey: base58.Encode(crypto.SerializeExtend(masterKey.ChainCode, privBytes, 0, crypto.KeyType_PRIVATE)),
|
||||
ImportPublicKey: base58.Encode(crypto.SerializeExtend(masterKey.ChainCode, masterKey.PublicKey, 0, crypto.KeyType_PUBLIC)),
|
||||
ImportPrivateKey: base58.Encode(crypto.SerializeExtend(masterKey.ChainCode, privBytes, int(req.Version), crypto.KeyType_PRIVATE)),
|
||||
ImportPublicKey: base58.Encode(crypto.SerializeExtend(masterKey.ChainCode, masterKey.PublicKey, int(req.Version), crypto.KeyType_PUBLIC)),
|
||||
Version: req.Version,
|
||||
}, nil
|
||||
}
|
||||
@ -118,8 +118,8 @@ func (h *GprcHandler) ImportKeys(ctx context.Context, req *nockchain.ImportKeysR
|
||||
PrivateKey: base58.Encode(masterKey.PrivateKey),
|
||||
Address: address,
|
||||
ChainCode: base58.Encode(masterKey.ChainCode),
|
||||
ImportPrivateKey: base58.Encode(crypto.SerializeExtend(masterKey.ChainCode, privBytes, 0, crypto.KeyType_PRIVATE)),
|
||||
ImportPublicKey: base58.Encode(crypto.SerializeExtend(masterKey.ChainCode, masterKey.PublicKey, 0, crypto.KeyType_PUBLIC)),
|
||||
ImportPrivateKey: base58.Encode(crypto.SerializeExtend(masterKey.ChainCode, privBytes, int(req.Version), crypto.KeyType_PRIVATE)),
|
||||
ImportPublicKey: base58.Encode(crypto.SerializeExtend(masterKey.ChainCode, masterKey.PublicKey, int(req.Version), crypto.KeyType_PUBLIC)),
|
||||
Version: req.Version,
|
||||
}, nil
|
||||
case strings.HasPrefix(req.Key, "zpub"):
|
||||
@ -155,7 +155,7 @@ func (h *GprcHandler) ImportKeys(ctx context.Context, req *nockchain.ImportKeysR
|
||||
Address: address,
|
||||
ChainCode: base58.Encode(chainCode),
|
||||
ImportPrivateKey: "",
|
||||
ImportPublicKey: base58.Encode(crypto.SerializeExtend(chainCode, publicKey, 0, crypto.KeyType_PUBLIC)),
|
||||
ImportPublicKey: base58.Encode(crypto.SerializeExtend(chainCode, publicKey, int(req.Version), crypto.KeyType_PUBLIC)),
|
||||
Version: req.Version,
|
||||
}, nil
|
||||
default:
|
||||
@ -196,8 +196,8 @@ func (h *GprcHandler) ImportKeys(ctx context.Context, req *nockchain.ImportKeysR
|
||||
PrivateKey: base58.Encode(masterKey.PrivateKey),
|
||||
Address: address,
|
||||
ChainCode: base58.Encode(masterKey.ChainCode),
|
||||
ImportPrivateKey: base58.Encode(crypto.SerializeExtend(masterKey.ChainCode, privBytes, 0, crypto.KeyType_PRIVATE)),
|
||||
ImportPublicKey: base58.Encode(crypto.SerializeExtend(masterKey.ChainCode, masterKey.PublicKey, 0, crypto.KeyType_PUBLIC)),
|
||||
ImportPrivateKey: base58.Encode(crypto.SerializeExtend(masterKey.ChainCode, privBytes, int(req.Version), crypto.KeyType_PRIVATE)),
|
||||
ImportPublicKey: base58.Encode(crypto.SerializeExtend(masterKey.ChainCode, masterKey.PublicKey, int(req.Version), crypto.KeyType_PUBLIC)),
|
||||
Version: req.Version,
|
||||
}, nil
|
||||
case nockchain.ImportType_SEEDPHRASE:
|
||||
@ -223,8 +223,8 @@ func (h *GprcHandler) ImportKeys(ctx context.Context, req *nockchain.ImportKeysR
|
||||
PrivateKey: base58.Encode(masterKey.PrivateKey),
|
||||
Address: address,
|
||||
ChainCode: base58.Encode(masterKey.ChainCode),
|
||||
ImportPrivateKey: base58.Encode(crypto.SerializeExtend(masterKey.ChainCode, privBytes, 0, crypto.KeyType_PRIVATE)),
|
||||
ImportPublicKey: base58.Encode(crypto.SerializeExtend(masterKey.ChainCode, masterKey.PublicKey, 0, crypto.KeyType_PUBLIC)),
|
||||
ImportPrivateKey: base58.Encode(crypto.SerializeExtend(masterKey.ChainCode, privBytes, int(req.Version), crypto.KeyType_PRIVATE)),
|
||||
ImportPublicKey: base58.Encode(crypto.SerializeExtend(masterKey.ChainCode, masterKey.PublicKey, int(req.Version), crypto.KeyType_PUBLIC)),
|
||||
Version: req.Version,
|
||||
}, nil
|
||||
case nockchain.ImportType_WATCH_ONLY:
|
||||
@ -350,7 +350,7 @@ func (h *GprcHandler) DeriveChild(ctx context.Context, req *nockchain.DeriveChil
|
||||
Address: address,
|
||||
PrivateKey: "",
|
||||
ChainCode: base58.Encode(childKey.ChainCode),
|
||||
Version: req.Version,
|
||||
Version: req.Version,
|
||||
}, nil
|
||||
default:
|
||||
return nil, fmt.Errorf("invalid extended key")
|
||||
|
||||
@ -103,18 +103,18 @@ func TestKeyGenV1(t *testing.T) {
|
||||
|
||||
// assert import priv/pubkey
|
||||
privBytes := append([]byte{0x00}, masterKey.PrivateKey...)
|
||||
importPrivKey := crypto.SerializeExtend(masterKey.ChainCode, privBytes, 0, crypto.KeyType_PRIVATE)
|
||||
importPrivKey := crypto.SerializeExtend(masterKey.ChainCode, privBytes, 1, crypto.KeyType_PRIVATE)
|
||||
assert.Len(t, importPrivKey, 83)
|
||||
importPubKey := crypto.SerializeExtend(masterKey.ChainCode, masterKey.PublicKey, 0, crypto.KeyType_PUBLIC)
|
||||
importPubKey := crypto.SerializeExtend(masterKey.ChainCode, masterKey.PublicKey, 1, crypto.KeyType_PUBLIC)
|
||||
assert.Len(t, importPubKey, 147)
|
||||
|
||||
assert.Equal(t,
|
||||
base58.Encode(importPrivKey),
|
||||
"zprvLpf3WSvYWmHRd4ifBMKZTDRa4s5sNBZo7cLx7PhFsYvdCEwv6WdHnDFYHFFvd4sKy1DcSpU4xAohfutPqVpsKGsyCdwLgZDpVH7sHSM382d6",
|
||||
"zprvLxxkCBq3s5HYzjhcW8wh3FhHSt5YowSGApRdHsptZQrtcCdqibUo7qwqfa7qkazttRgcaRwy4YYwv9DLhmUNcMG9uAtsgaPkfwyiGkf5Bpib",
|
||||
)
|
||||
assert.Equal(t,
|
||||
base58.Encode(importPubKey),
|
||||
"zpub2jgndknkQprVYB9YTkv6VAteaXtW1rQcGMVtNEsuKUJay8MkBm5VW5LyFLYhpQyE1hChW2ZkCiN6BCcTF2wBNiVeCzu7sFP4kaV5DVHZDY3BsdYXimDjQ8GCw6o1qWH8w6kTZrMwkA8o7BSLZ6vk1BHHASi6P2qNSeDBw2No6fAHAr5xvEnUY7Xqa63m4jXYcgFD",
|
||||
"zpub2kRJ7D6VCvzVfDg5e6iXb4T2ea97QJKN6JzjTArrhgZzwHo6rmT8Z3mEp11T67fNvU8ZWLcTTFS17NLwvYs7ErmqCJQNrtjRgVcvZNeWBebpztihXzrhvHZumDiejPmLb6QQNhkPhhK3uyS6XBbaPybqGDdWAgHKvPHkKirVsSJWEmDJYEj8ePN4ufscv1DL2pTD",
|
||||
)
|
||||
}
|
||||
func TestImportKey(t *testing.T) {
|
||||
@ -125,34 +125,36 @@ func TestImportKey(t *testing.T) {
|
||||
errStr string
|
||||
}
|
||||
|
||||
correctImportPrivKey := base58.Decode("zprvLpf3WSvYWmHRd3jj5oR8UXr7bi88pGnfJXj1dM9RnwJwu1MLo6fZzcKauqpxL2W7dk2fmjYKAUzavbyaGpnvqY5QndcrUzsBrPQAHXNnhiXx")
|
||||
correctImportPrivKeyV0 := base58.Decode("zprvLpf3WSvYWmHRd3jj5oR8UXr7bi88pGnfJXj1dM9RnwJwu1MLo6fZzcKauqpxL2W7dk2fmjYKAUzavbyaGpnvqY5QndcrUzsBrPQAHXNnhiXx")
|
||||
correctImportPrivKeyV1 := base58.Decode("zprvLxxkCBq3s5HYziigQb3G4a7pyj7pG2f8MjogoqH4UoFDJy3GRBX5LF1tJAgsTYdgZAVfuM2DGrjqAqJX96SS8cTbVAaPV23834G1GqgfEEg7")
|
||||
invalidImportPrivKeyPrefix := make([]byte, 83)
|
||||
copy(invalidImportPrivKeyPrefix[:], correctImportPrivKey)
|
||||
copy(invalidImportPrivKeyPrefix[:], correctImportPrivKeyV0)
|
||||
invalidImportPrivKeyPrefix[46] = 0x01
|
||||
|
||||
invalidImportPrivKeyChecksum := make([]byte, 83)
|
||||
copy(invalidImportPrivKeyChecksum[:], correctImportPrivKey)
|
||||
copy(invalidImportPrivKeyChecksum[:], correctImportPrivKeyV0)
|
||||
copy(invalidImportPrivKeyChecksum[79:], []byte{1, 2, 3, 4})
|
||||
|
||||
correctImportPubkey := base58.Decode("zpub2jgndknkQprVYB4X4mqREyn7ZTUE5zp9qkSugdpiqhC5NSeNBceafoz6jGSLEpzJhaLryvY8MF6TokwZN627UXhsg5zd2U12woEL82UtZaLHRL8PZi8YiQnE41BiNJwkfpWjzAbq8mwbAHV3nXUEFgJW2BKCz4GmfoMCkCUDhJppYh5KFsMUkN41DzsfFZHuFrzo")
|
||||
correctImportPubkeyV0 := base58.Decode("zpub2jgndknkQprVYB4X4mqREyn7ZTUE5zp9qkSugdpiqhC5NSeNBceafoz6jGSLEpzJhaLryvY8MF6TokwZN627UXhsg5zd2U12woEL82UtZaLHRL8PZi8YiQnE41BiNJwkfpWjzAbq8mwbAHV3nXUEFgJW2BKCz4GmfoMCkCUDhJppYh5KFsMUkN41DzsfFZHuFrzo")
|
||||
correctImportPubkeyV1 := base58.Decode("zpub2kRJ7D6VCvzVfDb4F7drLsLVdViqUSiufhwkmZogDuTVLc5ird2DinQNHvu5WXgTcMGizEaqbnANjvg43bx3Lfz4fPVt27MPsiNBTuqqXgtvYbJZNwmXEa5vt87MGCRxKpAgo1zH6K7qy5Uokc94eUd47xEcmhij9YRm8twvU5y3ccCessJ8rdtEZahX6pv8RFBi")
|
||||
invalidImportPubkeyChecksum := make([]byte, 147)
|
||||
copy(invalidImportPubkeyChecksum[:], correctImportPubkey)
|
||||
copy(invalidImportPubkeyChecksum[:], correctImportPubkeyV0)
|
||||
copy(invalidImportPubkeyChecksum[143:], []byte{1, 2, 3, 4})
|
||||
|
||||
responseV0 := &nockchain.ImportKeysResponse{
|
||||
Address: "34VqjU7ojQXWiFZz7kvXe1xfxhbdimmqqUAgp21XGESLqJSXxHkqrcquWirFcCPPj1pmSL4pRc8GndZoiiK8ijeYjgcJ3QR7fb2s4b2WdJhDao4Dx7gw3NRSt4RjXawqUQw6",
|
||||
PrivateKey: "3B8Q5ZTHH63h9DT6WSwNZhea5zvtueuKpxk3qwZJEjsg",
|
||||
ChainCode: "2ztGPxS8xYzMXoAHf3HMbMuyh4siew8X4Kz4KuTXvqX8",
|
||||
ImportPrivateKey: base58.Encode(correctImportPrivKey),
|
||||
ImportPublicKey: base58.Encode(correctImportPubkey),
|
||||
ImportPrivateKey: base58.Encode(correctImportPrivKeyV0),
|
||||
ImportPublicKey: base58.Encode(correctImportPubkeyV0),
|
||||
Version: 0,
|
||||
}
|
||||
responseV1 := &nockchain.ImportKeysResponse{
|
||||
Address: "BAmYAxgpVrJeFqqPnKAZHVZZdmVfzrgu7bBqcRBNca8HpxQofzUZG8Q",
|
||||
PrivateKey: "3B8Q5ZTHH63h9DT6WSwNZhea5zvtueuKpxk3qwZJEjsg",
|
||||
ChainCode: "2ztGPxS8xYzMXoAHf3HMbMuyh4siew8X4Kz4KuTXvqX8",
|
||||
ImportPrivateKey: base58.Encode(correctImportPrivKey),
|
||||
ImportPublicKey: base58.Encode(correctImportPubkey),
|
||||
ImportPrivateKey: base58.Encode(correctImportPrivKeyV1),
|
||||
ImportPublicKey: base58.Encode(correctImportPubkeyV1),
|
||||
Version: 1,
|
||||
}
|
||||
|
||||
@ -161,7 +163,7 @@ func TestImportKey(t *testing.T) {
|
||||
PrivateKey: "",
|
||||
ChainCode: "2ztGPxS8xYzMXoAHf3HMbMuyh4siew8X4Kz4KuTXvqX8",
|
||||
ImportPrivateKey: "",
|
||||
ImportPublicKey: base58.Encode(correctImportPubkey),
|
||||
ImportPublicKey: base58.Encode(correctImportPubkeyV0),
|
||||
Version: 0,
|
||||
}
|
||||
responseV1ReadOnly := &nockchain.ImportKeysResponse{
|
||||
@ -169,7 +171,7 @@ func TestImportKey(t *testing.T) {
|
||||
PrivateKey: "",
|
||||
ChainCode: "2ztGPxS8xYzMXoAHf3HMbMuyh4siew8X4Kz4KuTXvqX8",
|
||||
ImportPrivateKey: "",
|
||||
ImportPublicKey: base58.Encode(correctImportPubkey),
|
||||
ImportPublicKey: base58.Encode(correctImportPubkeyV1),
|
||||
Version: 1,
|
||||
}
|
||||
|
||||
@ -228,7 +230,7 @@ func TestImportKey(t *testing.T) {
|
||||
// case success import priv key v0
|
||||
{
|
||||
req: &nockchain.ImportKeysRequest{
|
||||
Key: base58.Encode(correctImportPrivKey),
|
||||
Key: base58.Encode(correctImportPrivKeyV0),
|
||||
ImportType: nockchain.ImportType_EXTENDED_KEY,
|
||||
Version: 0,
|
||||
},
|
||||
@ -239,7 +241,7 @@ func TestImportKey(t *testing.T) {
|
||||
// case success import priv key v1
|
||||
{
|
||||
req: &nockchain.ImportKeysRequest{
|
||||
Key: base58.Encode(correctImportPrivKey),
|
||||
Key: base58.Encode(correctImportPrivKeyV1),
|
||||
ImportType: nockchain.ImportType_EXTENDED_KEY,
|
||||
Version: 1,
|
||||
},
|
||||
@ -271,7 +273,7 @@ func TestImportKey(t *testing.T) {
|
||||
// case success import pub key v0
|
||||
{
|
||||
req: &nockchain.ImportKeysRequest{
|
||||
Key: base58.Encode(correctImportPubkey),
|
||||
Key: base58.Encode(correctImportPubkeyV0),
|
||||
ImportType: nockchain.ImportType_EXTENDED_KEY,
|
||||
Version: 0,
|
||||
},
|
||||
@ -282,7 +284,7 @@ func TestImportKey(t *testing.T) {
|
||||
// case success import pub key v1
|
||||
{
|
||||
req: &nockchain.ImportKeysRequest{
|
||||
Key: base58.Encode(correctImportPubkey),
|
||||
Key: base58.Encode(correctImportPubkeyV1),
|
||||
ImportType: nockchain.ImportType_EXTENDED_KEY,
|
||||
Version: 1,
|
||||
},
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user