"github.com/vapor/crypto"
"github.com/vapor/crypto/csp"
"github.com/vapor/crypto/ed25519"
+ edchainkd "github.com/vapor/crypto/ed25519/chainkd"
"github.com/vapor/crypto/sha3pool"
dbm "github.com/vapor/database/leveldb"
"github.com/vapor/errors"
func GetAccountIndexKey(xpubs []crypto.XPubKeyer) []byte {
var hash [32]byte
var xPubs []byte
- cpy := append([]crypto.XPubKeyer{}, xpubs[:]...)
- // switch
- sort.Sort(signers.EdSortKeys(cpy))
- for _, xpub := range cpy {
- xPubs = append(xPubs, xpub[:]...)
+ switch xpbs := xpubs[0].(type) {
+ case edchainkd.XPub:
+ // for i := 0; i < len(xpubs); i++ {
+
+ // }
+ cpy := append([]edchainkd.XPub{}, xpubs[:]...)
+
+ sort.Sort(signers.EdSortKeys(cpy))
+ for _, xpub := range cpy {
+ xPubs = append(xPubs, xpub[:]...)
+ }
}
sha3pool.Sum256(hash[:], xPubs)
return append(accountIndexPrefix, hash[:]...)
return ErrXPubFormat
}
- // TODO: it should use map[string]string to adapt several algorithm
+ // TODO: it will adapt sm2
var xPub chainkd.XPub
copy(xPub[:], data)
if h.cache.hasKey(xPub) {
"github.com/cespare/cp"
"github.com/davecgh/go-spew/spew"
- vcrypto "github.com/vapor/crypto"
edchainkd "github.com/vapor/crypto/ed25519/chainkd"
)
return d, newKeyCache(d)
}
-func tmpEdPubkeys(t *testing.T, r *rand.Rand) vcrypto.XPubKeyer {
+func tmpEdPubkeys(t *testing.T, r *rand.Rand) edchainkd.XPub {
var xpub edchainkd.XPub
pick := "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"5fddf28fe3861beee56d48b28cfdafa50c8df4e1237b80306be29deb3d20fbc7258eeeabfa256b150509fc0342f4680728797aea748f958956c73de1bdf81911","cipherparams":{"iv":"6a9a58c2a120b1d948514ab3ffbe3f1b"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"8055a78454e9b0c8848a900460cf9aa74a488917c687813fcf4c0851009322b6"},"mac":"73ce7c5bb1f42aaa303da6a742feef4eaffea8b3aea7081a92480069d8797a20"},"id":"df373d96-3b84-46ac-95c3-b7968450ef55","type":"bytom_kd","version":1,"alias":"upper","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"270ddc38fa12f8744d25b113b25289fc697a8177123102e47afb1c1c1bb5f516ec304dd08061e445a14555d1071846adefdde95b907dd390cbf55a149a4e7277","cipherparams":{"iv":"7562ba43329a4e39370c315124067b3f"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"5abfed905f31aeff2a7895d72eed088f7df880c3c17d982d690a0ea5dc18724e"},"mac":"f93e83911e1b15ceb0d20417c7879ad8def20947613d1bf28604059fe5fc212d"},"id":"4dcaee7f-c009-4a75-b660-e02051a5a52c","type":"bytom_kd","version":1,"alias":"with space surrounding","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"9dedc5455db3dc0ba8025355d7b16f5e51367c46aed3bc3d7985dcd28876f6547595ec699c43151da1e9ee355e07eb0b7d0242ca6708421febbde0f6feed5095","cipherparams":{"iv":"0b36f6f92731f01da7af7919ad808a89"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"cede58300bb12ed66facbabfc34b16067c93cb4e5cac329d93f476746bce347c"},"mac":"1b34c1d1692df46388122b41376f4ef9a5c78f94a363c115aea89fb31fd69058"},"id":"1ee1305e-6b4c-419a-9d5e-be84868115ec","type":"bytom_kd","version":1,"alias":"old_alias","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"de4ad11912ce4eec8b008f8b2dbc82b9acc219eaec1e3f0372a7345c7cea4d652a577583855e0805418b744dcc302d71aace6726fd3c45ba6f097186e77a8a5b","cipherparams":{"iv":"20a3f50c850d38d0247e00c589a844fa"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"c09787c2ade605cfa1fb0e6941de01aff62c38c61989a67305eb50159674bfb5"},"mac":"ec69ba8cc51c01d02ef190150249f96fb0e44548503a0f9a3ab7720e93d9e5a1"},"id":"d6f599d8-daee-4296-878c-3f9bcc58b91d","type":"bytom_kd","version":1,"alias":"bbs","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"e9e7a3d45a1e7b0e6ff9e311d085d80ba25dfd4a55bc5715b6c3901f612d63328230d1922dc3aeb408abba98f7fbe4d94c9827d0442d5b9898155a6373c9c09e","cipherparams":{"iv":"564f2946f55f666639567bf1f91a6e2e"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"acc126b866e214245a35ae413640ecd16fbb8f3fb2a50c51b45ddc1a2723625e"},"mac":"458796b6923f038d9a4bf0aee6db97987ebc874e03fa52b9fa461acf9b226b1f"},"id":"e6811a1c-bab8-4fbc-a988-5fae4794f07a","type":"bytom_kd","version":1,"alias":"bytom","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"81da54e2e60263c8d790179eac8176d4cc7f0b9ba860dd11a0b9c7e003ccc1597d2fd5ee7dd13c77cd3c0c8a35077b48042db110d326adf5f81df597edeaa3dc","cipherparams":{"iv":"76e31436327277bfb4a45ac5ab9ae0bb"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"e1af135a9ed9c727d6987eb9fc63b245c04e25c5f17a01f8a9a3ffa9ad259ad4"},"mac":"d17648238ecb557262a5ca63417a0d6fb27d796553a86821aa1974125dfcd5f2"},"id":"16af01fb-15c3-4644-b759-cdb411568a52","type":"bytom_kd","version":1,"alias":"xx0","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"b5db30ecca83301608d99b0fe3b38c2e8fdf079ab5839efa795854e6afd07521e45621ffdc652ce6919729bbb7f5aa5fd45d35896eb9b0839e09b8e954a7e4f9","cipherparams":{"iv":"69c3ad4aec9a782023de44e5c721801b"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"f12220450f02d28ba2f9644092335eef91b2c1bdd7f865b9384a23172d027335"},"mac":"3e1827274482c4d5fd6facae7596075067b24cbb125c93b67f8ea04a25a419fb"},"id":"15a2a780-6f7c-4602-8ebc-64235cca4ab8","type":"bytom_kd","version":1,"alias":"testkey","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"4bbd2c052a5090ef2beab47cedfae33b61361317637a15cf2173c044df4a832e4eee799921e7faab05506fa83924f9d07e0adacbbac8959dd0dcf75736f56d3f","cipherparams":{"iv":"abbc92889c924f909b5727d088e51d26"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"985ff18f023c2c930bac928c93e60709e34ffa59f1aecded72345953573c59d7"},"mac":"0aa524cc7cf9d777e8fd3ee262c607e26d3dcc9fa417e8a543383f3c41a35782"},"id":"39374a5d-af11-468b-9a7a-63f08901c541","type":"bytom_kd","version":1,"alias":"upper","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"5bf7df7b76579f20a3374e0ff97e4f6932e2b3442fea06464577d52b44800a150eb9146bed7415498057c15cbec4f4b3f86960894f7b581d9f271946b1c4705b","cipherparams":{"iv":"7a63c8196fe6b946ba371833903ff9e2"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"3b9214ff4edf20a865f751ac053a609dceaa937079a399366206d2b7fc38e7ca"},"mac":"4d2c655cbae86fc031009d5c142b1085488c9476f36b70b554afe4a5bdbfc073"},"id":"ad87dd9f-37e9-4a6a-960d-05d348116445","type":"bytom_kd","version":1,"alias":"with space surrounding","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"fcb3dae2a7c1d95b7e46b3e3910b76c941776f40c8302304e0ed348f2f4da27549789f430d7cbde47d9cbf5840e1a8ae830da5075a51ae239aa587d93e94f71c","cipherparams":{"iv":"57edd0c93a28dd44754ca28b038fac1b"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"b9aa5c1cd174c226a11352f486f5a86ab181ef363b29d74f0daf30ab1a305c60"},"mac":"1eaeb7fc66b8109fa0ba2823029390952222609f0b29e6ed9a8266b44f3a5869"},"id":"064dd98d-a965-43e3-bcea-dc62b7e1113f","type":"bytom_kd","version":1,"alias":"old_alias","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"1fb77dea5904592557e49afb230d63a8f1170994d7a208eedfcf34681dc906e2159e69ec3e46fa3b1a76c8cc81543b4cef30d69b0da22d4eafd6b72b6ee4ae7f","cipherparams":{"iv":"413527861d2c0aad877186097a5923f9"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"c8b0cba06417a3b95b0815d7a7e73d6ae9d1a1c3d1e0a940e9fc195d8ebabbe0"},"mac":"f4fc864f4ff44880cfe5088c544cf67921e3d92febf792d36c7b7da53709512d"},"id":"62e129b3-9e70-472b-9fed-869184a426a1","type":"bytom_kd","version":1,"alias":"bbs","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"db3496e3c213cd934293f056dc33e0c1c426f07ad6293a956920211a10a5d3d865d78733f14769a8165c99c847d08e2351612add3adfa18d7b33f02009c4e463","cipherparams":{"iv":"d7e6daa4c2583d7ff1f5bdf4c4d5a876"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"1f09b353eaf24c00961799257397945fd6fa09aa64bb9a634e60f293be210f78"},"mac":"0742d5bde2f11763fe9c6d4fd1810c80eddd79be639fd747552f17c53be46774"},"id":"177ce519-3782-4859-857a-ea507f3f5b03","type":"bytom_kd","version":1,"alias":"bytom","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"bb72dadfe1a77d62fe0f95ed77d8ddf1905e8a908d7319f634d54c8d6e9adcfef430797527226587c459ff22b4cbe54fcfdc10eec644f898c77928fdf5c8b2db","cipherparams":{"iv":"4315d6de7c66158f0a8ae1cf6acc4bce"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"e01bdc30c0f3976d45fb3ca3f3136f301d5ee91715ab11a8fe0ec67d414f1ade"},"mac":"338cf3abb31468f4b21ff3b29d1d438a7b2afa378828e0137fbea1c1bbf5a0c5"},"id":"b76100cf-2609-437b-95d2-885063beef02","type":"bytom_kd","version":1,"alias":"xx0","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"0ff4ca433051ff230ac354e40c834513d6b2c6c380fc849c69751e5b0cee2489298d5abf600c2f6ae665293e614e44fda4b5b31cf799ad527856592da655020c","cipherparams":{"iv":"dc78c0cde7663d54423dafee7de3e7d1"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"024a42a75eb0dd6322aa96fb3350f7d656439557acbf0dd32a7c2db98fb2fac8"},"mac":"b2614dfbdee27bb45e245474483db6fa44a6f7604595d33d8a20fc10173fc2b4"},"id":"4ee19766-6b55-4c08-89be-05159eaa4fcc","type":"bytom_kd","version":1,"alias":"testkey","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"1344e5f8a3521388185045d513e6ef86fc91d4256e49bb78627ac5b077026e4a299c57b3e227997d5832bc4a116ef3e9d0fbd81f8d0dcf047825e0475e7eb6dd","cipherparams":{"iv":"47a2a236f279fef286cbcf9f097474e3"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"41dc4de9b9a68fb4c39554674eb4eb47521b379dc35993492c3d650a2310399e"},"mac":"070ab5273f94d52d3ebf924286da661c1be96039d5f921ffd9a31294de355842"},"id":"3b4d642a-96cb-4555-aa9b-4fbbdabd5888","type":"bytom_kd","version":1,"alias":"upper","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"64fc4e4a5fce4a0051ad4e0380a33269e5e7725ab62135995302492e418bab8a3e6556de0277d58dae88eef99e5074fe3a88afdcf9a40e1e068fbef94d647da7","cipherparams":{"iv":"54c35679451ef32c71af83fe5b15c239"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"dfd1346737660bbe22cee3518a4362b255373faef02d599cda9319efd28c4cbc"},"mac":"6b66d83f732dbb6409d4e0553bf681162c3552cacc82906544e3454fb788523c"},"id":"7271ba94-6879-41ef-9d06-51901ebf391e","type":"bytom_kd","version":1,"alias":"with space surrounding","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"cc527bddaaf24261ede0c02dc2057752968204b1d99e5240ea487df298411f5f010f998981b6813c00b2ff3e98028fa576f6adf00ccf61240edf6ee596371f88","cipherparams":{"iv":"854ae1286994cec0021e6b1cc34b891b"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"5d6ca35d46bd4e6719a092c03b225438072f1ca6addffb929bfacb44d4312b32"},"mac":"bfd683c9e9ec1394153fd9ec1dbf7eb2802380a0734245e51cc065ee967c4e3f"},"id":"5cf71be5-89de-44fe-8130-94041bb0aeb2","type":"bytom_kd","version":1,"alias":"old_alias","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"a0663f716624fc4d5b713051dfc9387878db01cdc2591934231464f3eeb56eef76439128e06205fde833f678f814e43a5ec4057c61b0ce72d9640eea8336fd9b","cipherparams":{"iv":"4a7ca314189950b5a3532deb43ebc150"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"77a59d1e1837105f99fc334bffabfcd799a0fb02f5b77c9bd01c768d0032eae1"},"mac":"63486dc470e5c6da7402243c4f0df3542d89b6f485059f5e1b76cfc06de98e03"},"id":"9d12329d-c12c-4a9d-8bd8-00b483903c99","type":"bytom_kd","version":1,"alias":"bbs","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"54ef355b6db483427618df3fbf44c86d1e6b6ffed55e586a54d9c9671878f486ebe74b81b33574ca175d26e3cc79ef9ba72fea9c01dff3d99fb1528a77dfc5d1","cipherparams":{"iv":"b43170b4ad0cd0da96c9d1c8bfa9f37f"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"26768d02c24d347d0e964c7b21a0fcd2beb58453157e1f084be59353e88bdd0d"},"mac":"2d6dab26282c5e9ba167a85ed4423945984be6bf932b7474fec0b8846afa1bfa"},"id":"a2de40e2-1922-4af7-bd25-cd56274ee4ec","type":"bytom_kd","version":1,"alias":"bytom","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"503cb83dba1cde181796611145f3db36b7afaad2ae59b1eb51726669260e5b8c7b3bc52ecc218b4a3c444c3d188766cee283b73c8d1e3661e5badf2328127c24","cipherparams":{"iv":"b42ca00b2d381613e285985230417271"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"c21aafd4e7e24b87083582cd13b34ac738da2bc19c05373752250240b42e3a7c"},"mac":"14d169e3559973241b5dbd1bf4b5390754efb90045210475edf1773603d7fbb2"},"id":"cd7aecd2-dd31-423b-97cb-3422d675ae49","type":"bytom_kd","version":1,"alias":"xx0","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"24f707328ea0a856f278fcdb9c1b08cbfc6ae7c07e336fa0fb4ad826b1a0320ff9ee9954f7cd2e53e3f033c6027f07aab01ee7f71f0a832a58f175247be81fe4","cipherparams":{"iv":"866a8b61b3447580f9f45aa37bf3b4d7"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"5489d216401dbaf8c89fe5a13df2862dc998c2428a2b4b8989b1a97e9f553f62"},"mac":"8d2035f06e9a264c1cc99ef9b0be872a60ac7a1c79f16cb5a56ea41f7fd4789d"},"id":"a3fa8530-e99e-48ac-a3ff-28bd42d6ed30","type":"bytom_kd","version":1,"alias":"testkey","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"cd604456c6453c85fcd374c1cfbc4413300d379cd2d27efcd16d120b8ecb5fe98fddcfb57ebdad3a8ed695a06a1f03631be3f03364742e56b48b26e927faedc4","cipherparams":{"iv":"376dc9978dcbc860e458179fd1bcc438"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"61785a7c2b42d6ca56b793d60d385815130110d6c85f9278939aa3b6d6850a80"},"mac":"8732f82dee0982302cc7d63d185a38bff512f0d5016426595b354eeee969b634"},"id":"567d4f31-d742-48c0-b0d7-c678220a32be","type":"bytom_kd","version":1,"alias":"upper","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"d3f90ee63d04ae40f1c7887f9c588fe62a4d09fe6a49d9447b006cf2f3f16cf447a5eacb22f8186517faaa7974f99fdee5f407d3f7b196b03ab272b90bb22ef3","cipherparams":{"iv":"842a179487bda4895f8e54119b0ac2ed"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"778957e165a8608e04232a77403e49b4b023f7510a6ab04f42c2870157f4cf15"},"mac":"1bc5e23aacfaa9305ad44fea751e0b7d2d723bc0eb9dbbb0a62938022c2a256d"},"id":"cc243de5-2093-4df8-aac3-d645f919fc9e","type":"bytom_kd","version":1,"alias":"with space surrounding","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"b330f7ff0915e43bf8b44b2d94127bd9228c08bd9fd4c71b25bd522c7e4bfee5d121afbbb5a601343838277028fc0b9c4b3c08245964b40bfdae836f4bf9a1f3","cipherparams":{"iv":"0a0b2e519b8afe79a8681c672d70826e"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"dfbc4d71ba9f002943cbd3661d05ccdad89522368331eae6d0a5eb0f9804c677"},"mac":"eb2b405c44c8d6e23720da9627ac801b3f3ff87c8faa1b41c7b930e7672d3bc1"},"id":"60a8fe42-f6b1-4b79-b7ed-96d87eafa5db","type":"bytom_kd","version":1,"alias":"old_alias","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"c3d4be7515252517f4e5312e2d8b9f140954fc4550fb1ad30fb4cfedc9f09c98d166922033908649a5315610eda355aa83525fb44ccc53d56c5e2cce6d3b6e72","cipherparams":{"iv":"3d9389290e2eca79a15bb4cb51e7ddda"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"a7612a7e5b3c7cbef99fab1ba28647d9d5d1c31deb1114e45195047deb393199"},"mac":"d4f55ad13813785fb36a0c0afe09aa04e77946c07bda13f1e869686de816b158"},"id":"54172b2d-3815-4715-93eb-72f0c26c74c4","type":"bytom_kd","version":1,"alias":"bbs","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"ed1c59e82a78e99f69a96c3dfeb1c8f18609b64b472b89544649d55919cef06602c02ff2e1ed8c6fbbaf1d74f8898c90fda526075da687ebc7718a4e68132270","cipherparams":{"iv":"1e59b965b2e21a513afc4f52e74378b3"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"7c2059ff41330e30b0a5a61c72c4c3d0ce12a32cbc5cbe9f2d4a6831af12564d"},"mac":"4fdc7c89778c1ba7ef11dc9b6f3b9702c7bbb49bc6077580828db491144da699"},"id":"5a2ec05c-d8c2-4f33-8116-75c9d6f8ded7","type":"bytom_kd","version":1,"alias":"bytom","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"6f25237ae514e981488b6926d07ae9c1751811cea39f6faa0ccea5f456b866fb4a9c53e0c2a2e645fce01559fb757a309fb91dee01e90afc38e912713d4391c8","cipherparams":{"iv":"c5aa99e5ad2488ff48f48de8eca6c2ce"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"851016276adafa5141b6b01f9a9ed2830bb7d948338bc71f6a6c5aeb55b55e46"},"mac":"7750e7398f89c8f1e7cd5f2d3b09ba643d509980107bdd45d2536ba257bcaed0"},"id":"0b4bb36a-caf8-42f7-b9c7-67370472412b","type":"bytom_kd","version":1,"alias":"xx0","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"516f25acb1b7289f159111be0ea64557d3947c184f7e8d7323eb6f979812d793ac7204f0838df26d06af141c71156359007b483735f188b7f181ab7c052ea0a0","cipherparams":{"iv":"6240131dec521a3acd4a93f6a9efc717"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"b1c462cfe5e9c480e6f7b12520ff7ef76aee1f0cd964999e0e66122402a58081"},"mac":"cab1a107e972c223faaea8c7e6f04587a0b724ba042c0aee5f7c96c35bc825d7"},"id":"1ba5c834-6f7e-4b29-9b24-d39f4712031c","type":"bytom_kd","version":1,"alias":"testkey","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"de282f4e5f1d5bcd0aea687d0315d60db27a572afe8c3f884c7a677d535692947cc6f65bd241570cd468e729d4d495e26bd00b35b6f57ce6049b36ecd468c392","cipherparams":{"iv":"2523a382bb2fcfcccd2bf63d3d2f22b2"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"0bd50187044f72d15f844093590474a96b4f1d2071b6fab5958716cb053e3003"},"mac":"a9ccc3f225a82e65fc0fa2956004a63b3a96294b0927b3cae61f917ce2b754ae"},"id":"087ef656-ef71-4a75-8c42-ff517bdd2f47","type":"bytom_kd","version":1,"alias":"upper","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"85bb7be77b8fa785baa9d1d50b2e676557a57915ec2dea13c95144d4d2121730e2203a598faea82d00b4f456e984db503c0b64e635ff2fdad0e23ec6afcf793c","cipherparams":{"iv":"e03419f7f8bf320f8f365ecd7bdcc720"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"9c18cd578cd59e1cb906f10c3ef6cdeddf475765f787a6f0769fc0838ba8f791"},"mac":"254abb29202c51fd94af3adbbad1bb56ea8f4b65ccf77aff46ffc7ce5ac212e4"},"id":"11d31ab8-0209-4c8f-8c12-e92c31b1fcc7","type":"bytom_kd","version":1,"alias":"with space surrounding","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"5456483372375cc2850a11e7c5c75c09ab6e85836df9cb77ba2e78202a59b501ba9aea0e4eb98f829b95b93a9b9e0156848164134d26fcd725296e2a7b81cd82","cipherparams":{"iv":"6d5ab4403cb43168118a1b46f9b9c711"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"9f11e18b4cb6282bd314c33bcb4dd7992930b475d3f8788daaac0b53201bf29f"},"mac":"5beba922e28b2b27bd4ce73d49b3addaac3aef5978475da56e1d57daf53b1501"},"id":"7eac55e6-f22a-459b-9480-07a63a2c8455","type":"bytom_kd","version":1,"alias":"old_alias","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"db7127d2a33a50b7a160179c957480cc62fe8c888016f20322200110d278023f65e245de4d813e3a0fded023c50e8ed92c6f42875150b2a8267966d8f0a814d0","cipherparams":{"iv":"087a3875de8239634ef9170604d4d86e"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"e9659cef928d781d735b18eb4337a2443a589250571245410e16db7aac9a504b"},"mac":"f9432d8c8f6eaf4bba6ed5c599a2b908d77f6517f2a7a82ce24abc14ae8c0e6f"},"id":"f86dd700-22d4-4163-b826-9b3c3343ed84","type":"bytom_kd","version":1,"alias":"bbs","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"a994f071a694e9cc1b18e00c93a8d9852531698662547368476cbcf4a37f39da7aac10640e75f4fd57676e6810dda356ba5d4c72eae0865b8dd61e6a07e14125","cipherparams":{"iv":"cc5c2feabe4a7c8eeaaca872891d9b0b"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"d90c5f145728dbb7657cd31b06de6e01db3a74ba582369df17d042afd8bfadf5"},"mac":"6eb227215d36965c0ef9a9ae4819a0c1f0e1a66fab5a9078580e5ef88ebeeee9"},"id":"16d8218f-1240-43c0-aaa3-f293127982cf","type":"bytom_kd","version":1,"alias":"bytom","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"011eba196cc55a8d60d0d69d373918232ef77d9f6e46c3a6d9edbf24eeb8ed9a185029b4faa3759a2dc80da2139d4db71e85a5728d161ac2a7b46f0fa3e84745","cipherparams":{"iv":"1931d40f9bbe6d204c0ed8363d468156"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"3b99d01fe9744fc072c357f745fb593c9cfe5d6c55ef2a529f124bf93f1b22ba"},"mac":"e7b122faca6cdb2363cf02c42d26ef5567eec0ebd867d72dd4a446b21d01a4e7"},"id":"f8de67da-0bb3-4d05-ac1c-d6aa571d6e39","type":"bytom_kd","version":1,"alias":"xx0","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"b49d74fd7c90fc6417f3fa9086cbb58d68b4bdc743427ebcb23607a0ff5ccfe588ddff7331ec7e5530dc223a3dd41ab83e41af0bb92e232f0c2dd3c4b99ebf85","cipherparams":{"iv":"5ff0398be38f839e6e070727bc898f73"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"55b4755a4b7846e244e526c42278dd54357d5f301157bf59bbf514b382175a5e"},"mac":"98c1bcbef45cc738a5e76963c5b977f419ee096132d56024974b1f2a4e0babb6"},"id":"51963d4a-d161-43a7-b5d9-f78ab563d911","type":"bytom_kd","version":1,"alias":"testkey","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"9237cfc1a15fdfb5490de04be212e1c13d49aecd004d60b165dda587aa97e5d0a6e4f1b8e595bfc92de2b58667e3fb84043303c39884f3fdcc611a03fed66f25","cipherparams":{"iv":"7bb471a24d93a75c395c2e6249def27f"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"154838dd850c093e70e3932a017b55848b5d0710226041af573964eaac6d03b1"},"mac":"8cce8fa536e357675a601c23326744a06d3ee4321190c19b26cfc1ceb6740c58"},"id":"8709bd9f-ac38-4d76-898c-a6ddd1ae75be","type":"bytom_kd","version":1,"alias":"upper","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"acc222e793562d081434da5a342491bdb127ad7e77b28a1bbde4eafdb01e610adf83332a4ff8c75ea8db10fadd8edaee720c0c69622886bef9093adef5f12245","cipherparams":{"iv":"2fd53991226cb9c122e02d630e29e994"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"33ffcbc51ae46fa61c957d7d8adac6ba892918253b45b8c4c80cd9098abba678"},"mac":"a2a8d0d51e6f36bcd45fca6d00de473997e75ced12ac79b9166931e141d9ba7a"},"id":"2a3d5368-f47e-4d39-aade-daef07ef1e4f","type":"bytom_kd","version":1,"alias":"with space surrounding","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"2496fd83a34c2d2eb650b7f745c4f4a498e249e57b6fd3a6fc4dea49cd215ba507361c2efda6047dc17f2886e9e92c2099068b3c66b9774e71bedeb415d13ba7","cipherparams":{"iv":"ab9de49441997897f1b9c1c2dfd9e5fa"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"e0d77b85c64b2eb2c486f1fed73571c0b4b9de2eb6840e7d68d0dd2e43e76eb4"},"mac":"3f60c7c5d281d203f99480c17a01a44a07b2f5d3577d9fe9cc4a4d6d862cff2d"},"id":"1281aff9-dd6b-497c-905f-44c57e6ee0f2","type":"bytom_kd","version":1,"alias":"old_alias","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"2cd2ae86332cf1ab7cf73c27a4c119efa150cf3bb3972a51bc6b7b3aefb06dc11242702d4ab46da137933b35a360ae7df7e66cac5c6c8f60d365c44b153e5cd8","cipherparams":{"iv":"5a0aa7db77d8056d7f953b1e811a3621"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"3974d2ed7b7cf22f7194dc5577835a23f05d72e729abeb17c1e04c1311b636b2"},"mac":"003b147048b231a25402ed0f8d746cc3e4b3940bdd4241e4bff22c25ad70aa40"},"id":"216650de-d6bd-4a4f-95e5-fd7ac7ec4c24","type":"bytom_kd","version":1,"alias":"bbs","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"2e681a6679f5dfb6c795c8b03816e434b2ca61b4799ee6cc7c665267b69fe35f4f2aee0d96c22bfa71163a3f09535142b5c45cb399ddc693272d2780c635a648","cipherparams":{"iv":"ff620238f66bcf954555fa51c623c4b8"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"cb18017807bf34a04b83656ef56d4647b9d38db2623d09008e3cfbe3c673d3c0"},"mac":"5d6339d5faa4ae61717034f21dd16dc6c22dd046c67b72c237af278a16387c98"},"id":"2b30d255-fc73-449d-b963-7254de91b242","type":"bytom_kd","version":1,"alias":"bytom","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"ad16bc359c73b26c4ca74452071c8883577942893c63a42c315e6ed349fe05fb4479592494afb897f8a55df440d7906276022f46c11ea4e4240c54abf7b81c0c","cipherparams":{"iv":"95b56c4483ce1463f3e11ee4b6a5af70"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"a3b1dd39737a596babbab5c4f7b2c09aecd96662fd38b283076aa4887f9f41bf"},"mac":"bb76d3ce286ed44babf1b99909236319c208a737aa8f18dbb925d8d169a97865"},"id":"45475eb6-885e-4cff-bbca-00b6e2cfb9d3","type":"bytom_kd","version":1,"alias":"xx0","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
+++ /dev/null
-{"crypto":{"cipher":"aes-128-ctr","ciphertext":"d5b09b0f5f731e1bf903f563337b9ff22f41b7340a4b7fa93db8223d9abcfc4bfb1692effbbba3c53599f7c894fd79d4eb916536891ee9b629489a1a5dc24f8a","cipherparams":{"iv":"c0805fbcfe1ec487275c8a628e716c63"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":4096,"p":6,"r":8,"salt":"c78ac1073808d0a892bfee153c1539108ee5b28470542b96ad9022b14b93f8ad"},"mac":"564bad2f28df649e7bef39adf8b711c803af378e78f36feec74465bc26f52a3b"},"id":"9df2265f-0c1a-429f-9ef7-901001a3f0a5","type":"bytom_kd","version":1,"alias":"testkey","xpub":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
\ No newline at end of file
"github.com/vapor/blockchain/signers"
"github.com/vapor/consensus"
"github.com/vapor/crypto/csp"
- "github.com/vapor/crypto/ed25519/chainkd"
+ edchainkd "github.com/vapor/crypto/ed25519/chainkd"
"github.com/vapor/protocol/bc"
"github.com/vapor/protocol/bc/types"
"github.com/vapor/protocol/validation"
func mockCtrlProgram(txData types.TxData, insts []*signingInst) {
for i, input := range txData.Inputs {
- _, xPubs := mustGetRootKeys(insts[i].rootPrvKeys)
+ _, xPubs := mustGetEdRootKeys(insts[i].rootPrvKeys)
switch inp := input.TypedInput.(type) {
case *types.SpendInput:
panic(err)
}
- xPrvs, xPubs := mustGetRootKeys(inst.rootPrvKeys)
+ xPrvs, xPubs := mustGetEdRootKeys(inst.rootPrvKeys)
for _, xPrv := range xPrvs {
childPrv := xPrv.Derive(path)
sigHashBytes := tx.SigHash(uint32(i)).Byte32()
inp.Arguments = arguments
case *types.IssuanceInput:
path := signers.GetBip0032Path(&signers.Signer{KeyIndex: inst.keyIndex, DeriveRule: signers.BIP0032}, signers.AssetKeySpace)
- xPrvs, _ := mustGetRootKeys(inst.rootPrvKeys)
+ xPrvs, _ := mustGetEdRootKeys(inst.rootPrvKeys)
for _, xPrv := range xPrvs {
childPrv := xPrv.Derive(path)
sigHashBytes := tx.SigHash(uint32(i)).Byte32()
}
}
-func mustGetRootKeys(prvs []string) ([]chainkd.XPrv, []chainkd.XPub) {
- xPubs := make([]chainkd.XPub, len(prvs))
- xPrvs := make([]chainkd.XPrv, len(prvs))
+// must get ed25519 test keys
+func mustGetEdRootKeys(prvs []string) ([]edchainkd.XPrv, []edchainkd.XPub) {
+ xPubs := make([]edchainkd.XPub, len(prvs))
+ xPrvs := make([]edchainkd.XPrv, len(prvs))
for i, xPrv := range prvs {
xPrvBytes, err := hex.DecodeString(xPrv)
if err != nil {
var dest [64]byte
copy(dest[:], xPrv)
- xPrvs[i] = chainkd.XPrv(dest)
+ xPrvs[i] = edchainkd.XPrv(dest)
xPubs[i] = xPrvs[i].XPub()
}
return xPrvs, xPubs
}
+
+// TODO: must get sm2 test keys
+// func mustGetEdRootKeys(prvs []string) ([]edchainkd.XPrv, []edchainkd.XPub) {
+// xPubs := make([]edchainkd.XPub, len(prvs))
+// xPrvs := make([]edchainkd.XPrv, len(prvs))
+// for i, xPrv := range prvs {
+// xPrvBytes, err := hex.DecodeString(xPrv)
+// if err != nil {
+// panic(err)
+// }
+
+// if len(xPrvBytes) != 64 {
+// panic("the size of xPrv must 64")
+// }
+
+// var dest [64]byte
+// copy(dest[:], xPrv)
+// xPrvs[i] = edchainkd.XPrv(dest)
+// xPubs[i] = xPrvs[i].XPub()
+// }
+// return xPrvs, xPubs
+// }
"github.com/vapor/blockchain/signers"
"github.com/vapor/blockchain/txbuilder"
"github.com/vapor/consensus"
- "github.com/vapor/crypto/ed25519/chainkd"
+ vcrypto "github.com/vapor/crypto"
"github.com/vapor/database"
dbm "github.com/vapor/database/leveldb"
"github.com/vapor/database/storage"
txs := []*types.Tx{}
for i := 0; i < txNumber; i++ {
testAccountAlias := fmt.Sprintf("testAccount%d", i)
- testAccount, err := accountManager.Create([]chainkd.XPub{xpub.XPub}, 1, testAccountAlias, signers.BIP0044)
+ testAccount, err := accountManager.Create([]vcrypto.XPubKeyer{xpub.XPub}, 1, testAccountAlias, signers.BIP0044)
if err != nil {
return nil, err
}
txs := []*types.Tx{}
for i := 0; i < txNumber; i++ {
testAccountAlias := fmt.Sprintf("testAccount%d", i)
- testAccount, err := accountManager.Create([]chainkd.XPub{xpub1.XPub, xpub2.XPub}, 2, testAccountAlias, signers.BIP0044)
+ testAccount, err := accountManager.Create([]vcrypto.XPubKeyer{xpub1.XPub, xpub2.XPub}, 2, testAccountAlias, signers.BIP0044)
if err != nil {
return nil, err
}
txs := []*types.Tx{}
for i := 0; i < txNumber; i++ {
testAccountAlias := fmt.Sprintf("testAccount%d", i)
- testAccount, err := accountManager.Create([]chainkd.XPub{xpub1.XPub, xpub2.XPub}, 2, testAccountAlias, signers.BIP0044)
+ testAccount, err := accountManager.Create([]vcrypto.XPubKeyer{xpub1.XPub, xpub2.XPub}, 2, testAccountAlias, signers.BIP0044)
if err != nil {
return nil, err
}
"fmt"
cfg "github.com/vapor/config"
- "github.com/vapor/crypto/ed25519/chainkd"
+ vcrypto "github.com/vapor/crypto"
+ edchainkd "github.com/vapor/crypto/ed25519/chainkd"
"github.com/vapor/util"
)
}
fmt.Println("dataMap", dataMap)
- xpub := new(chainkd.XPub)
+ // TODO: it will adapt sm2
+ xpub := new(edchainkd.XPub)
if err := xpub.UnmarshalText([]byte(dataMap["xpub"].(string))); err != nil {
return false
}
var key1 = struct {
Password string
- XPub chainkd.XPub `json:"xpubs"`
+ XPub vcrypto.XPubKeyer `json:"xpubs"`
}{XPub: *xpub, Password: "123456"}
if _, exitCode := util.ClientCall("/delete-key", &key1); exitCode != util.Success {
"github.com/vapor/account"
"github.com/vapor/blockchain/pseudohsm"
"github.com/vapor/blockchain/signers"
- "github.com/vapor/crypto/ed25519/chainkd"
+ vcrypto "github.com/vapor/crypto"
dbm "github.com/vapor/database/leveldb"
"github.com/vapor/protocol/bc/types"
"github.com/vapor/protocol/validation"
t.Fatal(err)
}
- testAccount, err := accountManager.Create([]chainkd.XPub{xpub.XPub}, 1, "testAccount", signers.BIP0044)
+ testAccount, err := accountManager.Create([]vcrypto.XPubKeyer{xpub.XPub}, 1, "testAccount", signers.BIP0044)
if err != nil {
t.Fatal(err)
}
t.Fatal(err)
}
- testAccount, err := accountManager.Create([]chainkd.XPub{xpub.XPub}, 1, "testAccount1", signers.BIP0044)
+ testAccount, err := accountManager.Create([]vcrypto.XPubKeyer{xpub.XPub}, 1, "testAccount1", signers.BIP0044)
if err != nil {
t.Fatal(err)
}
- signer, err := signers.Create("account", []chainkd.XPub{xpub.XPub}, 1, 2, signers.BIP0032)
+ signer, err := signers.Create("account", []vcrypto.XPubKeyer{xpub.XPub}, 1, 2, signers.BIP0032)
if err != nil {
t.Fatal(err)
}
t.Fatal(err)
}
- testAccount, err := accountManager.Create([]chainkd.XPub{xpub1.XPub, xpub2.XPub}, 2, "testAccount", signers.BIP0044)
+ testAccount, err := accountManager.Create([]vcrypto.XPubKeyer{xpub1.XPub, xpub2.XPub}, 2, "testAccount", signers.BIP0044)
if err != nil {
t.Fatal(err)
}
t.Fatal(err)
}
- testAccount, err := accountManager.Create([]chainkd.XPub{xpub1.XPub, xpub2.XPub}, 2, "testAccount", signers.BIP0044)
+ testAccount, err := accountManager.Create([]vcrypto.XPubKeyer{xpub1.XPub, xpub2.XPub}, 2, "testAccount", signers.BIP0044)
if err != nil {
t.Fatal(err)
}
- signer, err := signers.Create("account", []chainkd.XPub{xpub1.XPub, xpub2.XPub}, 2, 2, signers.BIP0032)
+ signer, err := signers.Create("account", []vcrypto.XPubKeyer{xpub1.XPub, xpub2.XPub}, 2, 2, signers.BIP0032)
if err != nil {
t.Fatal(err)
}
t.Fatal(err)
}
- testAccount, err := accountManager.Create([]chainkd.XPub{xpub1.XPub, xpub2.XPub}, 2, "testAccount", signers.BIP0044)
+ testAccount, err := accountManager.Create([]vcrypto.XPubKeyer{xpub1.XPub, xpub2.XPub}, 2, "testAccount", signers.BIP0044)
if err != nil {
t.Fatal(err)
}
t.Fatal(err)
}
- testAccount, err := accountManager.Create([]chainkd.XPub{xpub1.XPub, xpub2.XPub}, 2, "testAccount", signers.BIP0044)
+ testAccount, err := accountManager.Create([]vcrypto.XPubKeyer{xpub1.XPub, xpub2.XPub}, 2, "testAccount", signers.BIP0044)
if err != nil {
t.Fatal(err)
}
- signer, err := signers.Create("account", []chainkd.XPub{xpub1.XPub, xpub2.XPub}, 2, 2, signers.BIP0032)
+ signer, err := signers.Create("account", []vcrypto.XPubKeyer{xpub1.XPub, xpub2.XPub}, 2, 2, signers.BIP0032)
if err != nil {
t.Fatal(err)
}
"github.com/vapor/blockchain/txbuilder"
"github.com/vapor/common"
"github.com/vapor/consensus"
- "github.com/vapor/crypto/ed25519/chainkd"
+ "github.com/vapor/crypto/csp"
+ edchainkd "github.com/vapor/crypto/ed25519/chainkd"
"github.com/vapor/crypto/sha3pool"
dbm "github.com/vapor/database/leveldb"
"github.com/vapor/errors"
return err
}
-func (g *TxGenerator) getPubkey(keyAlias string) *chainkd.XPub {
+func (g *TxGenerator) getPubkey(keyAlias string) *edchainkd.XPub {
pubKeys := g.Hsm.ListKeys()
for i, key := range pubKeys {
if key.Alias == keyAlias {
}
func (g *TxGenerator) createAccount(name string, keys []string, quorum int) error {
- xpubs := []chainkd.XPub{}
+ // TODO: it will adapt sm2 test util
+ xpubs := []edchainkd.XPub{}
for _, alias := range keys {
xpub := g.getPubkey(alias)
if xpub == nil {
switch address.(type) {
case *common.AddressWitnessPubKeyHash:
sigInst.AddRawWitnessKeys(signer.XPubs, path, signer.Quorum)
- derivedXPubs := chainkd.DeriveXPubs(signer.XPubs, path)
+ derivedXPubs := csp.DeriveXPubs(signer.XPubs, path)
derivedPK := derivedXPubs[0].PublicKey()
sigInst.WitnessComponents = append(sigInst.WitnessComponents, txbuilder.DataWitness([]byte(derivedPK)))
if err != nil {
return nil, err
}
- derivedXPubs := chainkd.DeriveXPubs(signer.XPubs, path)
- derivedPKs := chainkd.XPubKeys(derivedXPubs)
+ derivedXPubs := csp.DeriveXPubs(signer.XPubs, path)
+ derivedPKs := csp.XPubKeys(derivedXPubs)
script, err := vmutil.P2SPMultiSigProgram(derivedPKs, signer.Quorum)
if err != nil {
return nil, err
"github.com/vapor/blockchain/pseudohsm"
"github.com/vapor/blockchain/txbuilder"
"github.com/vapor/consensus"
- "github.com/vapor/crypto/ed25519/chainkd"
+ vcrypto "github.com/vapor/crypto"
"github.com/vapor/database"
dbm "github.com/vapor/database/leveldb"
"github.com/vapor/event"
// MockSign sign a tx
func MockSign(tpl *txbuilder.Template, hsm *pseudohsm.HSM, password string) (bool, error) {
- err := txbuilder.Sign(nil, tpl, password, func(_ context.Context, xpub chainkd.XPub, path [][]byte, data [32]byte, password string) ([]byte, error) {
+ err := txbuilder.Sign(nil, tpl, password, func(_ context.Context, xpub vcrypto.XPubKeyer, path [][]byte, data [32]byte, password string) ([]byte, error) {
return hsm.XSign(xpub, path, data[:], password)
})
if err != nil {
"github.com/vapor/asset"
"github.com/vapor/blockchain/pseudohsm"
"github.com/vapor/blockchain/signers"
- "github.com/vapor/crypto/ed25519/chainkd"
+ edchainkd "github.com/vapor/crypto/ed25519/chainkd"
dbm "github.com/vapor/database/leveldb"
"github.com/vapor/event"
"github.com/vapor/protocol"
return ctx.Wallet.AccountMgr.CreateAddress(acc.ID, change)
}
-func (ctx *walletTestContext) getPubkey(keyAlias string) *chainkd.XPub {
+func (ctx *walletTestContext) getPubkey(keyAlias string) *edchainkd.XPub {
+ // TODO: it will adapt sm2 test util
pubKeys := ctx.Wallet.Hsm.ListKeys()
for i, key := range pubKeys {
if key.Alias == keyAlias {
}
func (ctx *walletTestContext) createAccount(name string, keys []string, quorum int) error {
- xpubs := []chainkd.XPub{}
+ // TODO: it will adapt sm2 test util
+ xpubs := []edchainkd.XPub{}
for _, alias := range keys {
xpub := ctx.getPubkey(alias)
if xpub == nil {
"github.com/vapor/account"
"github.com/vapor/blockchain/signers"
- "github.com/vapor/crypto/ed25519/chainkd"
+ vcrypto "github.com/vapor/crypto"
"github.com/vapor/crypto/sha3pool"
dbm "github.com/vapor/database/leveldb"
"github.com/vapor/errors"
// recoveryState used to record the status of a recovery process.
type recoveryState struct {
// XPubs recovery account xPubs
- XPubs []chainkd.XPub
+ XPubs []vcrypto.XPubKeyer
// The time to start the recovery task, used to detemine whether
// recovery task is completed.
return nil
}
-func (m *recoveryManager) AcctResurrect(xPubs []chainkd.XPub) error {
+func (m *recoveryManager) AcctResurrect(xPubs []vcrypto.XPubKeyer) error {
m.mu.Lock()
defer m.mu.Unlock()
return nil
}
-func genAcctAlias(xPubs []chainkd.XPub, index uint64) string {
+func genAcctAlias(xPubs []vcrypto.XPubKeyer, index uint64) string {
var tmp []byte
for _, xPub := range xPubs {
tmp = append(tmp, xPub[:6]...)
"github.com/vapor/blockchain/txbuilder"
"github.com/vapor/common"
"github.com/vapor/consensus"
- "github.com/vapor/crypto/ed25519/chainkd"
+ vcrypto "github.com/vapor/crypto"
dbm "github.com/vapor/database/leveldb"
"github.com/vapor/errors"
"github.com/vapor/protocol/bc"
return tplBuilder, nil
}
-func MockTxsP2PKH(acctMgr *account.Manager, xPub chainkd.XPub, multiTypeAccount bool) ([]*types.Tx, error) {
+func MockTxsP2PKH(acctMgr *account.Manager, xPub vcrypto.XPubKeyer, multiTypeAccount bool) ([]*types.Tx, error) {
txs := []*types.Tx{}
accts := []*account.Account{}
for i := uint32(1); i < 32; i = i + 1 + rand.Uint32()%5 {
if multiTypeAccount {
deriveRule = uint8(rand.Uint32() % 2)
}
- acct, err := account.CreateAccount([]chainkd.XPub{xPub}, 1, alias, uint64(i), deriveRule)
+ acct, err := account.CreateAccount([]vcrypto.XPubKeyer{xPub}, 1, alias, uint64(i), deriveRule)
if err != nil {
return nil, err
}
acctMgr := account.NewManager(testDB, nil)
recoveryMgr := newRecoveryManager(testDB, acctMgr)
recoveryMgr.state = newRecoveryState()
- recoveryMgr.state.XPubs = []chainkd.XPub{xpub.XPub}
+ recoveryMgr.state.XPubs = []vcrypto.XPubKeyer{xpub.XPub}
recoveryMgr.state.XPubsStatus = newBranchRecoveryState(acctRecoveryWindow)
recoveryMgr.state.StartTime = time.Now()
recoveryMgr.commitStatusInfo()
- if err := recoveryMgr.AcctResurrect([]chainkd.XPub{xpub.XPub}); err != nil {
+ if err := recoveryMgr.AcctResurrect([]vcrypto.XPubKeyer{xpub.XPub}); err != nil {
t.Fatal("TestXPubsRecoveryLock err:", err)
}
- if err := recoveryMgr.AcctResurrect([]chainkd.XPub{xpub.XPub}); err != errors.Root(ErrRecoveryBusy) {
+ if err := recoveryMgr.AcctResurrect([]vcrypto.XPubKeyer{xpub.XPub}); err != errors.Root(ErrRecoveryBusy) {
t.Fatal("TestXPubsRecoveryLock err:", err)
}
t.Fatal("TestXPubsRecoveryLock err:", err)
}
recoveryMgr.finished()
- if err := recoveryMgr.AcctResurrect([]chainkd.XPub{xpub.XPub}); err != nil {
+ if err := recoveryMgr.AcctResurrect([]vcrypto.XPubKeyer{xpub.XPub}); err != nil {
t.Fatal("TestXPubsRecoveryLock err:", err)
}
}
acctMgr := account.NewManager(testDB, nil)
recoveryMgr := newRecoveryManager(testDB, acctMgr)
- acc1 := &account.Account{ID: "testA", Alias: "test1", Signer: &signers.Signer{XPubs: []chainkd.XPub{xpub.XPub}, KeyIndex: 1, DeriveRule: signers.BIP0044}}
+ acc1 := &account.Account{ID: "testA", Alias: "test1", Signer: &signers.Signer{XPubs: []vcrypto.XPubKeyer{xpub.XPub}, KeyIndex: 1, DeriveRule: signers.BIP0044}}
acc2 := &account.Account{ID: "testB", Alias: "test2"}
- acc3 := &account.Account{ID: "testC", Alias: "test3", Signer: &signers.Signer{XPubs: []chainkd.XPub{xpub.XPub}, KeyIndex: 2, DeriveRule: 3}}
- acc4 := &account.Account{ID: "testD", Alias: "test4", Signer: &signers.Signer{XPubs: []chainkd.XPub{xpub.XPub}, KeyIndex: 3, DeriveRule: signers.BIP0032}}
+ acc3 := &account.Account{ID: "testC", Alias: "test3", Signer: &signers.Signer{XPubs: []vcrypto.XPubKeyer{xpub.XPub}, KeyIndex: 2, DeriveRule: 3}}
+ acc4 := &account.Account{ID: "testD", Alias: "test4", Signer: &signers.Signer{XPubs: []vcrypto.XPubKeyer{xpub.XPub}, KeyIndex: 3, DeriveRule: signers.BIP0032}}
recoveryMgr.state.stateForScope(acc1)
recoveryMgr.state.stateForScope(acc3)
recoveryMgr := newRecoveryManager(recoveryDB, recAcctMgr)
cases := []struct {
- xPubs []chainkd.XPub
+ xPubs []vcrypto.XPubKeyer
err error
}{
- {[]chainkd.XPub{xpub.XPub}, nil},
- {[]chainkd.XPub{xpub.XPub, xpub.XPub}, signers.ErrDupeXPub},
- {[]chainkd.XPub{}, signers.ErrNoXPubs},
+ {[]vcrypto.XPubKeyer{xpub.XPub}, nil},
+ {[]vcrypto.XPubKeyer{xpub.XPub, xpub.XPub}, signers.ErrDupeXPub},
+ {[]vcrypto.XPubKeyer{}, signers.ErrNoXPubs},
}
for _, c := range cases {
recoveryMgr := newRecoveryManager(recoveryDB, recAcctMgr)
- acct := &account.Account{ID: "testA", Alias: "test1", Signer: &signers.Signer{XPubs: []chainkd.XPub{xpub.XPub}, KeyIndex: 1, DeriveRule: 3}}
+ acct := &account.Account{ID: "testA", Alias: "test1", Signer: &signers.Signer{XPubs: []vcrypto.XPubKeyer{xpub.XPub}, KeyIndex: 1, DeriveRule: 3}}
cases := []struct {
accounts []*account.Account
acctMgr := account.NewManager(testDB, nil)
recoveryMgr := newRecoveryManager(testDB, acctMgr)
- acc1 := &account.Account{ID: "testA", Alias: "test1", Signer: &signers.Signer{XPubs: []chainkd.XPub{xpub1.XPub}, KeyIndex: 1, DeriveRule: signers.BIP0044}}
- acc2 := &account.Account{ID: "testB", Alias: "test2", Signer: &signers.Signer{XPubs: []chainkd.XPub{xpub2.XPub}, KeyIndex: 1, DeriveRule: signers.BIP0032}}
- acc3 := &account.Account{ID: "testC", Alias: "test3", Signer: &signers.Signer{XPubs: []chainkd.XPub{xpub2.XPub}, KeyIndex: 2, DeriveRule: signers.BIP0044}}
+ acc1 := &account.Account{ID: "testA", Alias: "test1", Signer: &signers.Signer{XPubs: []vcrypto.XPubKeyer{xpub1.XPub}, KeyIndex: 1, DeriveRule: signers.BIP0044}}
+ acc2 := &account.Account{ID: "testB", Alias: "test2", Signer: &signers.Signer{XPubs: []vcrypto.XPubKeyer{xpub2.XPub}, KeyIndex: 1, DeriveRule: signers.BIP0032}}
+ acc3 := &account.Account{ID: "testC", Alias: "test3", Signer: &signers.Signer{XPubs: []vcrypto.XPubKeyer{xpub2.XPub}, KeyIndex: 2, DeriveRule: signers.BIP0044}}
cp1 := &account.CtrlProgram{AccountID: acc1.ID, Address: "address1", KeyIndex: 10, Change: false}
cp2 := &account.CtrlProgram{AccountID: acc1.ID, Address: "address1", KeyIndex: 20, Change: true}
}
recoveryMgr.state.XPubsStatus = newBranchRecoveryState(acctRecoveryWindow)
- recoveryMgr.state.XPubs = []chainkd.XPub{xpub1.XPub}
+ recoveryMgr.state.XPubs = []vcrypto.XPubKeyer{xpub1.XPub}
recoveryMgr.state.stateForScope(acc1)
recoveryMgr.state.stateForScope(acc2)
recoveryMgr.state.stateForScope(acc3)
recoveryMgr := newRecoveryManager(testDB, acctMgr)
// StatusInit init recovery status manager.
recoveryMgr.state = newRecoveryState()
- recoveryMgr.state.XPubs = []chainkd.XPub{xpub.XPub}
+ recoveryMgr.state.XPubs = []vcrypto.XPubKeyer{xpub.XPub}
recoveryMgr.state.XPubsStatus = newBranchRecoveryState(acctRecoveryWindow)
recoveryMgr.state.StartTime = time.Now()
t.Fatalf("TestLoadStatusInfo StartTime reload err")
}
- acct := &account.Account{ID: "testA", Alias: "test1", Signer: &signers.Signer{XPubs: []chainkd.XPub{xpub.XPub}, KeyIndex: 1, DeriveRule: 3}}
+ acct := &account.Account{ID: "testA", Alias: "test1", Signer: &signers.Signer{XPubs: []vcrypto.XPubKeyer{xpub.XPub}, KeyIndex: 1, DeriveRule: 3}}
recoveryMgr.state.AccountsStatus[acct.ID] = newAddressRecoveryState(addrRecoveryWindow, acct)
if err := recoveryMgr.commitStatusInfo(); err != nil {
t.Fatal("TestLoadStatusInfo err:", err)
contractIndexResidue := uint64(5)
acctMgr := account.NewManager(testDB, nil)
recoveryMgr := newRecoveryManager(testDB, acctMgr)
- acct := &account.Account{ID: "testA", Alias: "test1", Signer: &signers.Signer{XPubs: []chainkd.XPub{xpub1.XPub}, KeyIndex: 1, DeriveRule: signers.BIP0044}}
+ acct := &account.Account{ID: "testA", Alias: "test1", Signer: &signers.Signer{XPubs: []vcrypto.XPubKeyer{xpub1.XPub}, KeyIndex: 1, DeriveRule: signers.BIP0044}}
cp1 := &account.CtrlProgram{AccountID: acct.ID, Address: "address1", KeyIndex: 10, Change: false}
}
recoveryMgr.state.XPubsStatus = newBranchRecoveryState(acctRecoveryWindow)
- recoveryMgr.state.XPubs = []chainkd.XPub{xpub1.XPub}
+ recoveryMgr.state.XPubs = []vcrypto.XPubKeyer{xpub1.XPub}
recoveryMgr.state.stateForScope(acct)
cases := []struct {
"github.com/vapor/blockchain/query"
"github.com/vapor/blockchain/signers"
"github.com/vapor/consensus"
- "github.com/vapor/crypto/ed25519/chainkd"
+ vcrypto "github.com/vapor/crypto"
dbm "github.com/vapor/database/leveldb"
"github.com/vapor/event"
"github.com/vapor/protocol/bc/types"
t.Fatal(err)
}
- testAccount, err := accountManager.Create([]chainkd.XPub{xpub1.XPub}, 1, "testAccount", signers.BIP0044)
+ testAccount, err := accountManager.Create([]vcrypto.XPubKeyer{xpub1.XPub}, 1, "testAccount", signers.BIP0044)
if err != nil {
t.Fatal(err)
}
controlProg.KeyIndex = 1
reg := asset.NewRegistry(testDB, nil)
- asset, err := reg.Define([]chainkd.XPub{xpub1.XPub}, 1, nil, 0, "TESTASSET", nil)
+ asset, err := reg.Define([]vcrypto.XPubKeyer{xpub1.XPub}, 1, nil, 0, "TESTASSET", nil)
if err != nil {
t.Fatal(err)
}
"github.com/vapor/blockchain/txbuilder"
"github.com/vapor/config"
"github.com/vapor/consensus"
- "github.com/vapor/crypto/ed25519/chainkd"
+ vcrypto "github.com/vapor/crypto"
"github.com/vapor/database"
dbm "github.com/vapor/database/leveldb"
"github.com/vapor/event"
t.Fatal(err)
}
- testAccount, err := accountManager.Create([]chainkd.XPub{xpub1.XPub}, 1, "testAccount", signers.BIP0044)
+ testAccount, err := accountManager.Create([]vcrypto.XPubKeyer{xpub1.XPub}, 1, "testAccount", signers.BIP0044)
if err != nil {
t.Fatal(err)
}
controlProg.KeyIndex = 1
reg := asset.NewRegistry(testDB, chain)
- asset, err := reg.Define([]chainkd.XPub{xpub1.XPub}, 1, nil, 0, "TESTASSET", nil)
+ asset, err := reg.Define([]vcrypto.XPubKeyer{xpub1.XPub}, 1, nil, 0, "TESTASSET", nil)
if err != nil {
t.Fatal(err)
}
t.Fatal(err)
}
- testAccount, err := accountManager.Create([]chainkd.XPub{xpub1.XPub}, 1, "testAccount", signers.BIP0044)
+ testAccount, err := accountManager.Create([]vcrypto.XPubKeyer{xpub1.XPub}, 1, "testAccount", signers.BIP0044)
if err != nil {
t.Fatal(err)
}
controlProg.KeyIndex = 1
reg := asset.NewRegistry(testDB, chain)
- asset, err := reg.Define([]chainkd.XPub{xpub1.XPub}, 1, nil, 0, "TESTASSET", nil)
+ asset, err := reg.Define([]vcrypto.XPubKeyer{xpub1.XPub}, 1, nil, 0, "TESTASSET", nil)
if err != nil {
t.Fatal(err)
}