github.com/linapex/ethereum-dpos-chinese@v0.0.0-20190316121959-b78b3a4a1ece/signer/storage/aes_gcm_storage_test.go (about) 1 2 //<developer> 3 // <name>linapex 曹一峰</name> 4 // <email>linapex@163.com</email> 5 // <wx>superexc</wx> 6 // <qqgroup>128148617</qqgroup> 7 // <url>https://jsq.ink</url> 8 // <role>pku engineer</role> 9 // <date>2019-03-16 12:09:46</date> 10 //</624342668146642944> 11 12 // 13 package storage 14 15 import ( 16 "bytes" 17 "fmt" 18 "io/ioutil" 19 "testing" 20 21 "github.com/ethereum/go-ethereum/common" 22 "github.com/ethereum/go-ethereum/log" 23 "github.com/mattn/go-colorable" 24 ) 25 26 func TestEncryption(t *testing.T) { 27 //键:=[]字节(“aes256key-32字符1234567890”) 28 //明文:=[]字节(值) 29 key := []byte("AES256Key-32Characters1234567890") 30 plaintext := []byte("exampleplaintext") 31 32 c, iv, err := encrypt(key, plaintext) 33 if err != nil { 34 t.Fatal(err) 35 } 36 fmt.Printf("Ciphertext %x, nonce %x\n", c, iv) 37 38 p, err := decrypt(key, iv, c) 39 if err != nil { 40 t.Fatal(err) 41 } 42 fmt.Printf("Plaintext %v\n", string(p)) 43 if !bytes.Equal(plaintext, p) { 44 t.Errorf("Failed: expected plaintext recovery, got %v expected %v", string(plaintext), string(p)) 45 } 46 } 47 48 func TestFileStorage(t *testing.T) { 49 50 a := map[string]storedCredential{ 51 "secret": { 52 Iv: common.Hex2Bytes("cdb30036279601aeee60f16b"), 53 CipherText: common.Hex2Bytes("f311ac49859d7260c2c464c28ffac122daf6be801d3cfd3edcbde7e00c9ff74f"), 54 }, 55 "secret2": { 56 Iv: common.Hex2Bytes("afb8a7579bf971db9f8ceeed"), 57 CipherText: common.Hex2Bytes("2df87baf86b5073ef1f03e3cc738de75b511400f5465bb0ddeacf47ae4dc267d"), 58 }, 59 } 60 d, err := ioutil.TempDir("", "eth-encrypted-storage-test") 61 if err != nil { 62 t.Fatal(err) 63 } 64 stored := &AESEncryptedStorage{ 65 filename: fmt.Sprintf("%v/vault.json", d), 66 key: []byte("AES256Key-32Characters1234567890"), 67 } 68 stored.writeEncryptedStorage(a) 69 read := &AESEncryptedStorage{ 70 filename: fmt.Sprintf("%v/vault.json", d), 71 key: []byte("AES256Key-32Characters1234567890"), 72 } 73 creds, err := read.readEncryptedStorage() 74 if err != nil { 75 t.Fatal(err) 76 } 77 for k, v := range a { 78 if v2, exist := creds[k]; !exist { 79 t.Errorf("Missing entry %v", k) 80 } else { 81 if !bytes.Equal(v.CipherText, v2.CipherText) { 82 t.Errorf("Wrong ciphertext, expected %x got %x", v.CipherText, v2.CipherText) 83 } 84 if !bytes.Equal(v.Iv, v2.Iv) { 85 t.Errorf("Wrong iv") 86 } 87 } 88 } 89 } 90 func TestEnd2End(t *testing.T) { 91 log.Root().SetHandler(log.LvlFilterHandler(log.Lvl(3), log.StreamHandler(colorable.NewColorableStderr(), log.TerminalFormat(true)))) 92 93 d, err := ioutil.TempDir("", "eth-encrypted-storage-test") 94 if err != nil { 95 t.Fatal(err) 96 } 97 98 s1 := &AESEncryptedStorage{ 99 filename: fmt.Sprintf("%v/vault.json", d), 100 key: []byte("AES256Key-32Characters1234567890"), 101 } 102 s2 := &AESEncryptedStorage{ 103 filename: fmt.Sprintf("%v/vault.json", d), 104 key: []byte("AES256Key-32Characters1234567890"), 105 } 106 107 s1.Put("bazonk", "foobar") 108 if v := s2.Get("bazonk"); v != "foobar" { 109 t.Errorf("Expected bazonk->foobar, got '%v'", v) 110 } 111 } 112