Skip to content
This repository was archived by the owner on Mar 28, 2023. It is now read-only.

Commit 318663d

Browse files
committed
Add identity.go unit test
1 parent 5a6b5e5 commit 318663d

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed

ipfs/identity_test.go

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package ipfs
2+
3+
import (
4+
"bytes"
5+
"encoding/hex"
6+
"github.com/ipfs/go-libp2p-crypto"
7+
"github.com/tyler-smith/go-bip39"
8+
"testing"
9+
)
10+
11+
var keyHex string = "080012ac12308209280201000282020100b962ce316a22e4aa1393c92b84925bf27cdd174edb06338ccc97a37698a83795cf5ccce76fb43734748d10d49a1c8ebe03ab7ac18ae18175e6475a7d6674d872209117d5d3c4f11f1994558a07fdbba490583c3af968b38c7abea26f5ee75472eb0829c919ad715153329bca0d1a9686b267f638c10d2f9328014d74aab216aeff00b772da0c567d225f5c2ffd1adc75d0848b9ced11c4c4a30299367a36a0bb34af7d3fbdf260d65b9a2bace264b964d063df396fb87705ae8e2a20aa7f382a0f268574bf2ab44205335e1f680b06f35c3c9b9653acf57e7019757cc0ecf5ac78afc0382aaecdedd7f16109282a00cf783f552931ffebafe5e65f3e1c3262a71a90c694f5c3df69faf750c9542f6b23718ec30dd476990b5d360cba343f50b98a915d5ac54d0f480775d2dd0a4d7f2df17f694b9f2900f0481c2eecf169429899af067122ae216c543f46067d145b7fb3a3763278363333a21457668288d393fe7474735fb62975ac9ff116c7963cc80bc59b57f6777369c817d0972bb8ee12861dd9b0698cdbec72e98619227c2fab4b68ded217a5d2b72f44fd7a19959907c5941bc0b33e5089de1f4627f5ac5c3b24f35970e47d549daa42fef8c9b116a254d87215ccb162a5f37f75d4b08d72153cc3eae01b6f042f9673ae15c2408c5978431b8a81ea4cebf90a2bcaf52d40f99649718b7314b5752ab2ef88aaeb31e102030100010282020061b722d80909bb5daa540b8554ab90ab90053973e71eadad5969d44f7ec7ac04daf81f491e27efb1467dd4913b6a321315fc1d08471bf6111f001d425beedae7cd22ad5d97f206e64da552311f652eb2df22a31cb2b9ed69ee88ed35a6e06832ea8fb2f6bd021ee8aee1ce1c022c318b6e1e3e3a4c07973c09aa2619889fb6352754495dd071106584e89ebeecba6bd9edbeef98179d7609efa23effe80b434d69c7d64cf2e1ff08fddf9585db0f1c69772e2d4b290822346c7da2d6f50779a331b92c3f0d44851f077ebbedf1f95e00886da9d4e2e617c03d762de74409a2b4f6282d396dc615e5781d52f870a3332a2847b9abad1f282bdf123ec18e3b40a3ce3c5683564fcc4fe71b9dcb7bd61d5e6264910ee532ca970a7a620fb42f1e8bd9de7767cc3632144afdc0b132e133b4abf1b2b62a7e2fdc6dbc86e67dc000964712e328089ca5ee31efae17897d49551035721243f956b4f487d9e6fb34e4c61eeb47745f9eb4e089e182c215ff7864a47f799f862808e1a7867c9e4b88de46be27285777930b79a7e50cfa7c33372329a52f1b3f466c6742deb48d1dbef27682ab69a0e0054f06656b16459c7cb7027af2c84b6e37ff6124f207896799f686027c2ece29ba38d4aef254c36292a29ee07436f86d8074a65ad575ef839f75fb195f717e565760935f1f5192164f828750498c13d70cb07520b3a927e89754010282010100dd82b0ed9c4c7f7fb0525f49f242bee7db4ba9164bfac7bb4555f14067ebef9f12a9e67eb3da39fb9e30930a3837c7ae57e8efba26f2ebfdc92cbbfbebe9903bfe9f451775aa3bbed2195b1d354805373136f408bdbe7e58a8f43e2cc594f1d00cfcddf8875091515e3dde700b7476ce3dadf560699bcd80b0022961b4a6ae6e4831aaba8fbd8b1f18076287d38a09f32ddf7a710d4baf049b80dfce7e1d1c19a028106e4bd4cb6cbb6fe9dcf75104c229f2234fb0b96203320cb7541869a23ac3badabd38587e6962d33245e931c2f8a5454e494e3eccf3e8fc034208b955bbdbb8704f59e2823736358fea8d58c621028889780a40b69c41878ace91d429a90282010100d64034b8ebfff3a8eeaa1fcea3026c0d1ba2a56233eda6510119490d41d7367448df6450d60ee373167db8e50df25546aff37246e8597563288c2b2ea52b48e747a2f2988d15934eb5be48c495c8a3ee7108c5749f3a7184afdee50fd80499d40ab680c893b853419a5f9b93b2c0cace8c7da2a783ca57ef9cd393ba34f909cfe742cffe4528d0e2cab529dafe36e52b01d8e3d7a0376df1121f01b7cda808ce72f46e5bb322806717a58d057d368eda32388faa76427bb99f515735d52e91748b0d564a864b1e3a22d26ac35ef80b3b65e87155abec052508ae714836280bd9da00ce5862cced9b0869c4e47f4bb2ffcdd91f59b349cd4528e5996808421979028201006ef3f6a19e47a719937d3f23b00884cd6847f6b3276dbf3beb9807d6c5f725389dc5a2a1d67eb9ca724b4c6bb30b25a70b7baf10a44fcbab7c683ee50a1f1cd3205030f0764cc5ce6838b12de93161036b50665e3684c38eaf5a60065715ab26164b56f814f76342c99cdddd6baf738f0cd024f79d0ea09a140f9120d2b726ea3099483658a78d970e972c6072b253178ee3c0d5fdddea15b9ba8ce046c557fcf1feff73efe1efdf4fe7d7d189c3f849356f870674b3f70738bbabdca0b9d0bbf4ac94c27105ca94091f56b034056beed601e81bc9e8a50a8baa280b9c89110b9f1c3c8d52ada5a1f8324e1b239fd2e657f9823a319086a7b01f2f85170099b902820101009b8d9639c4aeda5b869c61e787169518973de951795e4be87821c1962c7d727dcf02d2349695ccb19c5cbf471e6f1956ef1c9395c3d05f9814b2600fc7bfbb789fdc40c25d7c92ad0ceb10ae1a09c86bb009ac42d5f07ac6d961bd7159674dc053ded975c73a86c814aae1abc4969128917c0e020d7f7584f499f0a1bb202ced937c40c2ddb79aa16e8745d247cbd76af8365e86093ef54597e08740c9c1fc52d7c77bf07c08caad0ed015a92c95d5f5b98cb35211f68719e800088f7f2e0651553be3b0cbfbf2004793fa0bcb01d035d9f17f87b200f46345005223199ecdabe7c9ba071604af66661f54e289418ebe86d7e3191f40b0164c7116861fa8ce11028201005be415091cf086faf22b75d3748f680f860b8540c732574c2ea80d0bf00429891fe6606b6801ad819ad83a1db39be043df0c0c4e60d3bab734ab1649601e3337eb507119a47dd6dfbcff338e68f3b7d3b302de0d1d9ccf94b02ada88d1bb47a60adbbdb7bf51d34f953036dbfda662f6c52b734729a7fa6df27b4a69a723546173a1545800b91e606c2db8d911a94665ebe2b0582c515657e857a1503a68ab167296f7b61fbdcba6a60888e74021ef10aa4af70e5356e432bafd29cbc1c7b8b7695d11bf9a6633f057bd8dc82020339bf197b8a79f5b4bca4cebfd65f7c5e4ff5c20fe5932c5768b3af78596aff5450ec241e33e65fcb07651763fc1fcf20754"
12+
13+
func TestIdentityFromKey(t *testing.T) {
14+
keyBytes, err := hex.DecodeString(keyHex)
15+
if err != nil {
16+
t.Error(err)
17+
}
18+
identity, err := IdentityFromKey(keyBytes)
19+
if err != nil {
20+
t.Error(err)
21+
}
22+
if identity.PeerID != "QmdHkAQeKJobghWES9exVUaqXCeMw8katQitnXDKWuKi1F" {
23+
t.Error("Incorrect identity returned")
24+
}
25+
decodedKey, err := crypto.ConfigDecodeKey(identity.PrivKey)
26+
if err != nil {
27+
t.Error(err)
28+
}
29+
if !bytes.Equal(decodedKey, keyBytes) {
30+
t.Error("Incorrect private key returned")
31+
}
32+
}
33+
34+
func TestIdentityKeyFromSeed(t *testing.T) {
35+
seed := bip39.NewSeed("mule track design catch stairs remain produce evidence cannon opera hamster burst", "Secret Passphrase")
36+
key, err := IdentityKeyFromSeed(seed, 4096)
37+
if err != nil {
38+
t.Error(err)
39+
}
40+
keyBytes, err := hex.DecodeString(keyHex)
41+
if err != nil {
42+
t.Error(err)
43+
}
44+
if !bytes.Equal(key, keyBytes) {
45+
t.Error("Failed to extract correct private key from seed")
46+
}
47+
}
48+
49+
func TestDeterministicReader_Read(t *testing.T) {
50+
seed := bip39.NewSeed("mule track design catch stairs remain produce evidence cannon opera hamster burst", "Secret Passphrase")
51+
reader := &DeterministicReader{Seed: seed, Counter: 0}
52+
b := make([]byte, 32)
53+
reader.Read(b)
54+
if hex.EncodeToString(b) != "5742f7c29729cc98dc62bce3104b5b0a1c6f390625cffef34bf2fd471f79ae3b" {
55+
t.Error("Deterministic reader returned incorrect bytes")
56+
}
57+
if reader.Counter != 1 {
58+
t.Error("Deterministic Reader failed to increment counter")
59+
}
60+
b = make([]byte, 512)
61+
reader.Read(b)
62+
if hex.EncodeToString(b) != "ca55fa705e93030eb84041689294c9faae0d265ec1aec75c07bfaa3cb56a5a0a24f4c0cb50805fb46498e5e2adeb0e03f0e20dc3936dca0dc8fed0e0f1b48a1def01e07ba9fbcd54971bd95f11779a67633ce8bab5a809cc7780eea88f4dc42828bea89eb76e43d80b986a394f692dea9f6722f3834c6d680f9c50167339b98f510d246292afb93caa1bd6addd693c59c41a9629d09d4aa5935847c255eeb24c7a0610af5ec4c94abbbab92c27553245c3b41779033f139d396e69e748fb3d462c190fbbfbb85cda69a051c788fa0a3bd940a1c5abd15aa07102b17d2ec4ee0f227d32efa2253d88bef7f58520a23bc6b9144b051f3280f0b21fef3f968d22571d3e889f8514918be8b99e3111f524e5e99bc11584153ce56e76e4ff9de7d9b40a2851f2585a98201a80628919922973b5adff6468be4986ec745ad5dc53708b28862ce77fb52b2868641e5d18e767db8ba66e01e6a05975c882be9bf9c527e52a38186443c03655bdb4943e7b8cb0761a57e4bacd1bf247047863350e9f1cdc011303c3f7f61d9201a12a39b2c63c18693f867c1999a5c071fc8783a8dcf71480841e42559f5ae1f4ea13dfde95940dca0f99da8076b04211e938c97d77225f4de9c96c331019bc3ae40eb7f7d84053924aa3e00f4e3bf452ba7c2dacb56b2d9e7ee3b8582004d4c40a3b72c6741f200e11c61cbe00e29f941b6e90d3335535" {
63+
t.Error("Deterministic reader returned incorrect bytes")
64+
}
65+
if reader.Counter != 2 {
66+
t.Error("Deterministic Reader failed to increment counter")
67+
}
68+
}

0 commit comments

Comments
 (0)