2014-10-31 12:37:43 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								package  crypto  
						 
					
						
							
								
									
										
										
										
											2014-06-29 16:02:23 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-11-14 20:58:09 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// import (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	"github.com/ethereum/go-ethereum/ethdb"  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	// "io/ioutil"  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	"fmt"  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	"os"  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	"path"  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	"testing"  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// )  
						 
					
						
							
								
									
										
										
										
											2014-06-29 16:02:23 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-11-14 20:58:09 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// // test if persistence layer works  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// func TestDBKeyManager(t *testing.T) {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	memdb, _ := ethdb.NewMemDatabase()  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	keyManager0 := NewDBKeyManager(memdb)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	err := keyManager0.Init("", 0, false)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	if err != nil {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 		t.Error("Unexpected error: ", err)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	keyManager1 := NewDBKeyManager(memdb)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	err = keyManager1.Init("", 0, false)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	if err != nil {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 		t.Error("Unexpected error: ", err)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	if string(keyManager0.PrivateKey()) != string(keyManager1.PrivateKey()) {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 		t.Error("Expected private keys %x, %x, to be identical via db persistence", keyManager0.PrivateKey(), keyManager1.PrivateKey())  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	err = keyManager1.Init("", 0, true)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	if err != nil {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 		t.Error("Unexpected error: ", err)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	if string(keyManager0.PrivateKey()) == string(keyManager1.PrivateKey()) {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 		t.Error("Expected private keys %x, %x, to be be different despite db persistence if force generate", keyManager0.PrivateKey(), keyManager1.PrivateKey())  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// }  
						 
					
						
							
								
									
										
										
										
											2014-06-29 16:02:23 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-11-14 20:58:09 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// func TestFileKeyManager(t *testing.T) {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	basedir0 := "/tmp/ethtest0"  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	os.RemoveAll(basedir0)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	os.Mkdir(basedir0, 0777)  
						 
					
						
							
								
									
										
										
										
											2014-06-29 16:02:23 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-11-14 20:58:09 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// 	keyManager0 := NewFileKeyManager(basedir0)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	err := keyManager0.Init("", 0, false)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	if err != nil {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 		t.Error("Unexpected error: ", err)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	}  
						 
					
						
							
								
									
										
										
										
											2014-06-29 16:02:23 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-11-14 20:58:09 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// 	keyManager1 := NewFileKeyManager(basedir0)  
						 
					
						
							
								
									
										
										
										
											2014-06-29 16:02:23 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-11-14 20:58:09 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// 	err = keyManager1.Init("", 0, false)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	if err != nil {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 		t.Error("Unexpected error: ", err)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	if string(keyManager0.PrivateKey()) != string(keyManager1.PrivateKey()) {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 		t.Error("Expected private keys %x, %x, to be identical via db persistence", keyManager0.PrivateKey(), keyManager1.PrivateKey())  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	}  
						 
					
						
							
								
									
										
										
										
											2014-06-29 16:02:23 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-11-14 20:58:09 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// 	err = keyManager1.Init("", 0, true)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	if err != nil {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 		t.Error("Unexpected error: ", err)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	if string(keyManager0.PrivateKey()) == string(keyManager1.PrivateKey()) {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 		t.Error("Expected private keys %x, %x, to be be different despite db persistence if force generate", keyManager0.PrivateKey(), keyManager1.PrivateKey())  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// }  
						 
					
						
							
								
									
										
										
										
											2014-06-29 16:02:23 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-11-14 20:58:09 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// // cursor errors  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// func TestCursorErrors(t *testing.T) {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	memdb, _ := ethdb.NewMemDatabase()  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	keyManager0 := NewDBKeyManager(memdb)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	err := keyManager0.Init("", 0, false)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	err = keyManager0.Init("", 1, false)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	if err == nil {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 		t.Error("Expected cursor error")  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	err = keyManager0.SetCursor(1)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	if err == nil {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 		t.Error("Expected cursor error")  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// }  
						 
					
						
							
								
									
										
										
										
											2014-06-29 16:02:23 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-11-14 20:58:09 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// func TestExportImport(t *testing.T) {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	memdb, _ := ethdb.NewMemDatabase()  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	keyManager0 := NewDBKeyManager(memdb)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	err := keyManager0.Init("", 0, false)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	basedir0 := "/tmp/ethtest0"  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	os.RemoveAll(basedir0)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	os.Mkdir(basedir0, 0777)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	keyManager0.Export(basedir0)  
						 
					
						
							
								
									
										
										
										
											2014-06-29 16:02:23 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-11-14 20:58:09 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// 	keyManager1 := NewFileKeyManager(basedir0)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	err = keyManager1.Init("", 0, false)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	if err != nil {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 		t.Error("Unexpected error: ", err)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	fmt.Printf("keyRing: %v\n", keyManager0.KeyPair())  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	fmt.Printf("keyRing: %v\n", keyManager1.KeyPair())  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	if string(keyManager0.PrivateKey()) != string(keyManager1.PrivateKey()) {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 		t.Error("Expected private keys %x, %x, to be identical via export to filestore basedir", keyManager0.PrivateKey(), keyManager1.PrivateKey())  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	path.Join("")  
						 
					
						
							
								
									
										
										
										
											2014-06-29 16:02:23 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-11-14 20:58:09 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// 	// memdb, _ = ethdb.NewMemDatabase()  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	// keyManager2 := NewDBKeyManager(memdb)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	// err = keyManager2.InitFromSecretsFile("", 0, path.Join(basedir0, "default.prv"))  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	// if err != nil {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	// 	t.Error("Unexpected error: ", err)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	// }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	// if string(keyManager0.PrivateKey()) != string(keyManager2.PrivateKey()) {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	// 	t.Error("Expected private keys %s, %s, to be identical via export/import prv", keyManager0.PrivateKey(), keyManager1.PrivateKey())  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	// }  
						 
					
						
							
								
									
										
										
										
											2014-06-29 16:02:23 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-11-14 20:58:09 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// 	// memdb, _ = ethdb.NewMemDatabase()  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	// keyManager3 := NewDBKeyManager(memdb)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	// err = keyManager3.InitFromSecretsFile("", 0, path.Join(basedir0, "default.mne"))  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	// if err != nil {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	// 	t.Error("Unexpected error: ", err)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	// }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	// if string(keyManager0.PrivateKey()) != string(keyManager3.PrivateKey()) {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	// 	t.Error("Expected private keys %s, %s, to be identical via export/import mnemonic file", keyManager0.PrivateKey(), keyManager1.PrivateKey())  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 	// }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// }