check and make keystore if required on receiving device
This commit is contained in:
parent
9bb1e75939
commit
61904182c5
|
@ -348,6 +348,26 @@ func (ppr *PairingPayloadRepository) validateKeys(password string) error {
|
|||
}
|
||||
|
||||
func (ppr *PairingPayloadRepository) storeKeys(keyStorePath string) error {
|
||||
if keyStorePath == "" {
|
||||
return fmt.Errorf("keyStorePath can not be empty")
|
||||
}
|
||||
|
||||
_, lastDir := filepath.Split(keyStorePath)
|
||||
|
||||
// If lastDir == "keystore" we presume we need to create the rest of the keystore path
|
||||
// else we presume the provided keystore is valid
|
||||
if lastDir == "keystore" {
|
||||
if ppr.multiaccount == nil || ppr.multiaccount.KeyUID == "" {
|
||||
return fmt.Errorf("no known Key UID")
|
||||
}
|
||||
keyStorePath = filepath.Join(keyStorePath, ppr.multiaccount.KeyUID)
|
||||
|
||||
err := os.MkdirAll(keyStorePath, 0777)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
for name, data := range ppr.keys {
|
||||
accountKey := new(keystore.EncryptedKeyJSONV3)
|
||||
if err := json.Unmarshal(data, &accountKey); err != nil {
|
||||
|
|
|
@ -20,7 +20,7 @@ import (
|
|||
|
||||
var (
|
||||
password = "password"
|
||||
keyUID = "0xdeadbeef"
|
||||
keyUID = "0x6b9a74f33316e02479c33ed23cf16e0408dca3e1b9ab8f361630859543eb0d46"
|
||||
expected = multiaccounts.Account{
|
||||
Name: "cool account",
|
||||
KeyUID: keyUID,
|
||||
|
@ -66,6 +66,16 @@ func makeKeystores(t *testing.T) (string, string, func()) {
|
|||
emptyKeyStoreDir, err := ioutil.TempDir(os.TempDir(), "accounts_empty")
|
||||
require.NoError(t, err)
|
||||
|
||||
keyStoreDir = filepath.Join(keyStoreDir, "keystore", keyUID)
|
||||
// TODO test case where the keystore dir does not yet exist because the device is new
|
||||
emptyKeyStoreDir = filepath.Join(emptyKeyStoreDir, "keystore", keyUID)
|
||||
|
||||
err = os.MkdirAll(keyStoreDir, 0777)
|
||||
require.NoError(t, err)
|
||||
|
||||
err = os.MkdirAll(emptyKeyStoreDir, 0777)
|
||||
require.NoError(t, err)
|
||||
|
||||
return keyStoreDir, emptyKeyStoreDir, func() {
|
||||
os.RemoveAll(keyStoreDir)
|
||||
os.RemoveAll(emptyKeyStoreDir)
|
||||
|
@ -189,12 +199,12 @@ func (pms *PayloadMarshallerSuite) TestPayloadMarshaller_MarshalToProtobuf() {
|
|||
// TEST PairingPayloadMarshaller 1 MarshalToProtobuf()
|
||||
pb, err := ppm.MarshalToProtobuf()
|
||||
pms.Require().NoError(err)
|
||||
pms.Require().Len(pb, 1216)
|
||||
pms.Require().Len(pb, 1384)
|
||||
|
||||
h := sha256.New()
|
||||
h.Write(pb)
|
||||
hashA := []byte{0x70, 0xf2, 0xe5, 0x37, 0xff, 0x7d, 0x2d, 0x7b, 0x8a, 0x4b, 0x53, 0x1f, 0xfe, 0x3e, 0xea, 0x5e, 0x4d, 0xe1, 0xad, 0x44, 0xe8, 0x22, 0x5c, 0x84, 0x30, 0xd6, 0x75, 0x1a, 0xbd, 0x53, 0x59, 0xce}
|
||||
hashB := []byte{0xeb, 0xb7, 0x34, 0x94, 0x1d, 0x8d, 0x88, 0xdf, 0xa2, 0xfa, 0xc2, 0x9e, 0x11, 0xba, 0xa5, 0xc5, 0x95, 0x51, 0x73, 0xb, 0x9a, 0xb1, 0x92, 0xf9, 0xa2, 0x55, 0x5f, 0x50, 0x81, 0xe2, 0xf9, 0x46}
|
||||
hashA := []byte{0xe5, 0x34, 0x2e, 0xf1, 0x81, 0x72, 0xab, 0xc3, 0xde, 0x54, 0xbc, 0x8e, 0xd8, 0x34, 0xbe, 0xab, 0xd, 0xe8, 0x84, 0x53, 0xa2, 0x14, 0x9b, 0xbe, 0xc5, 0xe5, 0xce, 0xa5, 0xe9, 0x6d, 0xbc, 0xdd}
|
||||
hashB := []byte{0x98, 0x2b, 0x3d, 0x8b, 0x7c, 0x6a, 0x3e, 0xdc, 0x3, 0xb1, 0xbf, 0xf1, 0x50, 0x15, 0xa5, 0x0, 0xa8, 0xba, 0xae, 0xf9, 0x38, 0xa8, 0x65, 0xd8, 0xf0, 0x93, 0xca, 0xbc, 0x47, 0x5d, 0x84, 0x23}
|
||||
|
||||
// Because file-walk will pull files in an unpredictable order from a target dir
|
||||
// there are 2 potential valid hashes, because there are 2 key files in the test dir
|
||||
|
|
Loading…
Reference in New Issue