diff --git a/Gopkg.toml b/Gopkg.toml index 9ffe28add565f251284cd6375a7cc4163fe18529..90b77e21222338f0025053488999d73e798d7b50 100644 --- a/Gopkg.toml +++ b/Gopkg.toml @@ -6,10 +6,6 @@ name = "github.com/hashicorp/go-retryablehttp" version = "=v0.5.4" -[[constraint]] - name = "github.com/golang/protobuf" - version = "1.1.0" - [[constraint]] branch = "master" name = "golang.org/x/net" diff --git a/handler/generate_certificate.go b/handler/generate_certificate.go index 78769906a2e7f1aa90990db9e368087b4c252ad1..086ee2fb2dd865791bafd21f6ec8d2f6e58b5687 100644 --- a/handler/generate_certificate.go +++ b/handler/generate_certificate.go @@ -45,7 +45,7 @@ func (s *KeyStorageServerImpl) GenerateCertificate(ctx context.Context, in *api. Content: certificateBytes, } - result, errors, err := client.DoPutDataCall("keys", in.Uuid+"/"+api.KeyType.String(api.KeyType_CERTIFICATE), certificateMessage, versions.EntitiesManagementAgentApiVersion) + result, errors, err := client.PutData("keys", in.Uuid+"/"+api.KeyType.String(api.KeyType_CERTIFICATE), certificateMessage) generateCertificateResponse.StatusList = handlePutDataErrors(generateCertificateResponse.StatusList, errors, err) if generateCertificateResponse.StatusList == nil || len(generateCertificateResponse.StatusList) == 0 { diff --git a/handler/generate_keypair.go b/handler/generate_keypair.go index 02a308034306550469dd1001d7160bea648f56ee..a787c3dd68898c1b0f9788eb197a0052527129d5 100644 --- a/handler/generate_keypair.go +++ b/handler/generate_keypair.go @@ -30,7 +30,6 @@ import ( keyutils "code.vereign.com/code/key-storage-agent/utils" "code.vereign.com/code/viam-apis/key-storage-agent/api" "code.vereign.com/code/viam-apis/utils" - "code.vereign.com/code/viam-apis/versions" "golang.org/x/net/context" ) @@ -73,22 +72,19 @@ func (s *KeyStorageServerImpl) GenerateKeyPair(ctx context.Context, return generateKeyPairResponse, nil } encryptedPrivateKey := &api.Key{Content: encryptedPrivateKeyBytes} - result, errors, err := client.DoPutDataCall("keys", uuid+"/"+api.KeyType.String(api.KeyType_PRIVATE), - encryptedPrivateKey, versions.EntitiesManagementAgentApiVersion) + result, errors, err := client.PutData("keys", uuid+"/"+api.KeyType.String(api.KeyType_PRIVATE), encryptedPrivateKey) generateKeyPairResponse.StatusList = keyutils.HandlePutDataErrors(generateKeyPairResponse.StatusList, errors, err) if generateKeyPairResponse.StatusList == nil || len(generateKeyPairResponse.StatusList) == 0 { publicKey := &api.Key{Content: publicKeyBytes} - result, errors, err = client.DoPutDataCall("keys", uuid+"/"+api.KeyType.String(api.KeyType_PUBLIC), - publicKey, versions.EntitiesManagementAgentApiVersion) + result, errors, err = client.PutData("keys", uuid+"/"+api.KeyType.String(api.KeyType_PUBLIC), publicKey) generateKeyPairResponse.StatusList = keyutils.HandlePutDataErrors(generateKeyPairResponse.StatusList, errors, err) } //duplicate logic of ReserveKeyUUID if generateKeyPairResponse.StatusList == nil || len(generateKeyPairResponse.StatusList) == 0 { emptyKey := &api.Key{Content: []byte{}} - result, errors, err = client.DoPutDataCall("keys", uuid+"/"+api.KeyType.String(api.KeyType_CERTIFICATE), - emptyKey, versions.EntitiesManagementAgentApiVersion) + result, errors, err = client.PutData("keys", uuid+"/"+api.KeyType.String(api.KeyType_CERTIFICATE), emptyKey) generateKeyPairResponse.StatusList = keyutils.HandlePutDataErrors(generateKeyPairResponse.StatusList, errors, err) } @@ -103,7 +99,7 @@ func (s *KeyStorageServerImpl) GenerateKeyPair(ctx context.Context, encryptedAesKey := &api.Key{Content: encryptedAesKeyBytes} - result, errors, err = client.DoPutDataCall("keys", uuid+"/"+api.KeyType.String(api.KeyType_AES), encryptedAesKey, versions.EntitiesManagementAgentApiVersion) + result, errors, err = client.PutData("keys", uuid+"/"+api.KeyType.String(api.KeyType_AES), encryptedAesKey) generateKeyPairResponse.StatusList = keyutils.HandlePutDataErrors(generateKeyPairResponse.StatusList, errors, err) } @@ -118,7 +114,7 @@ func (s *KeyStorageServerImpl) GenerateKeyPair(ctx context.Context, encryptedNonce := &api.Key{Content: encryptedPrivateKeyNonceBytes} - result, errors, err = client.DoPutDataCall("keys", uuid+"/"+api.KeyType.String(api.KeyType_NONCE), encryptedNonce, versions.EntitiesManagementAgentApiVersion) + result, errors, err = client.PutData("keys", uuid+"/"+api.KeyType.String(api.KeyType_NONCE), encryptedNonce) generateKeyPairResponse.StatusList = keyutils.HandlePutDataErrors(generateKeyPairResponse.StatusList, errors, err) } diff --git a/handler/handler.go b/handler/handler.go index ce02346f7c78749b703392c61c5d74dfcafcc347..4c2ce23cb1b61be9694abca7ad1792dcdafc188d 100644 --- a/handler/handler.go +++ b/handler/handler.go @@ -22,10 +22,7 @@ import ( "errors" "log" "strings" - "code.vereign.com/code/viam-apis/clientutils" - "code.vereign.com/code/viam-apis/versions" - "github.com/golang/protobuf/proto" keyutils "code.vereign.com/code/key-storage-agent/utils" "code.vereign.com/code/viam-apis/authentication" @@ -100,25 +97,33 @@ func (s *KeyStorageServerImpl) GetKey(ctx context.Context, in *api.GetKeyRequest return getKeyResponse, nil } - data, err := client.DoGetDataCall("keys", in.Uuid+"/"+api.KeyType.String(in.KeyType)) + key := &api.Key{} + + hasData, errorsString, err := client.GetData("keys", in.Uuid+"/"+api.KeyType.String(in.KeyType), key) if err != nil { - log.Printf("grpc call DoGetDataCall to DataStorage failed: %s", err) + log.Printf("grpc call GetData to DataStorage failed: %s", err) getKeyResponse.Key = nil getKeyResponse.StatusList = utils.AddStatus(getKeyResponse.StatusList, "500", api.StatusType_ERROR, err.Error()) return getKeyResponse, nil } - if data.Errors != "" { + if errorsString != "" { getKeyResponse.Key = nil getKeyResponse.StatusList = utils.AddStatus(getKeyResponse.StatusList, - "500", api.StatusType_ERROR, data.Errors) - } else { - key := &api.Key{} - proto.Unmarshal(data.Data.Data, key) - getKeyResponse.Key = key + "500", api.StatusType_ERROR, errorsString) + } + + if !hasData { + log.Println("No such key " + in.Uuid) + getKeyResponse.Key = nil + getKeyResponse.StatusList = utils.AddStatus(getKeyResponse.StatusList, + "500", api.StatusType_ERROR, err.Error()) + return getKeyResponse, nil } + getKeyResponse.Key = key + return getKeyResponse, nil } @@ -142,29 +147,23 @@ func (s *KeyStorageServerImpl) SetKey(ctx context.Context, in *api.SetKeyRequest return setKeyResponse, nil } - data, err := client.DoGetDataCall("keys", in.Uuid+"/"+api.KeyType.String(in.KeyType)) + key := &api.Key{} + + _, _, err := client.GetData("keys", in.Uuid+"/"+api.KeyType.String(in.KeyType), key) if err != nil { - log.Printf("grpc call DoGetDataCall to DataStorage failed: %s", err) + log.Printf("grpc call GetData to DataStorage failed: %s", err) setKeyResponse.StatusList = utils.AddStatus(setKeyResponse.StatusList, "500", api.StatusType_ERROR, err.Error()) return setKeyResponse, nil } - if data.Errors != "" { - setKeyResponse.StatusList = utils.AddStatus(setKeyResponse.StatusList, - "400", api.StatusType_ERROR, data.Errors) - return setKeyResponse, nil - } - - key := &api.Key{} - proto.Unmarshal(data.Data.Data, key) - if key != nil && key.Content != nil && len(key.Content) > 0 { + if len(key.Content) > 0 { setKeyResponse.StatusList = utils.AddStatus(setKeyResponse.StatusList, "400", api.StatusType_ERROR, "Key is already set") return setKeyResponse, nil } - result, errors, err := client.DoPutDataCall("keys", in.Uuid+"/"+api.KeyType.String(in.KeyType), in.Key, versions.EntitiesManagementAgentApiVersion) + result, errors, err := client.PutData("keys", in.Uuid+"/"+api.KeyType.String(in.KeyType), in.Key) setKeyResponse.StatusList = keyutils.HandlePutDataErrors(setKeyResponse.StatusList, errors, err) if setKeyResponse.StatusList == nil || len(setKeyResponse.StatusList) == 0 { @@ -175,10 +174,9 @@ func (s *KeyStorageServerImpl) SetKey(ctx context.Context, in *api.SetKeyRequest if in.KeyType == api.KeyType_PUBLIC { keyContent := base64.StdEncoding.EncodeToString(in.Key.Content) - _, _, err = client.DoPutDataCallWithString(keyToKeyIdTable, keyContent, - in.Uuid, versions.EntitiesManagementAgentApiVersion) + _, _, err = client.PutString(keyToKeyIdTable, keyContent, in.Uuid) if err != nil { - log.Printf("can't DoPutDataCallWithString: %s", err) + log.Printf("can't PutString: %s", err) return nil, err } } @@ -205,16 +203,16 @@ func (s *KeyStorageServerImpl) ReserveKeyUUID(ctx context.Context, in *api.Reser Content: []byte{}, } - result, errors, err := client.DoPutDataCall("keys", uuid+"/"+api.KeyType.String(api.KeyType_PRIVATE), emptyKey, versions.EntitiesManagementAgentApiVersion) + result, errors, err := client.PutData("keys", uuid+"/"+api.KeyType.String(api.KeyType_PRIVATE), emptyKey) reserveKeyUUIDResponse.StatusList = keyutils.HandlePutDataErrors(reserveKeyUUIDResponse.StatusList, errors, err) if reserveKeyUUIDResponse.StatusList == nil || len(reserveKeyUUIDResponse.StatusList) == 0 { - result, errors, err = client.DoPutDataCall("keys", uuid+"/"+api.KeyType.String(api.KeyType_PUBLIC), emptyKey, versions.EntitiesManagementAgentApiVersion) + result, errors, err = client.PutData("keys", uuid+"/"+api.KeyType.String(api.KeyType_PUBLIC), emptyKey) reserveKeyUUIDResponse.StatusList = keyutils.HandlePutDataErrors(reserveKeyUUIDResponse.StatusList, errors, err) } if reserveKeyUUIDResponse.StatusList == nil || len(reserveKeyUUIDResponse.StatusList) == 0 { - result, errors, err = client.DoPutDataCall("keys", uuid+"/"+api.KeyType.String(api.KeyType_CERTIFICATE), emptyKey, versions.EntitiesManagementAgentApiVersion) + result, errors, err = client.PutData("keys", uuid+"/"+api.KeyType.String(api.KeyType_CERTIFICATE), emptyKey) reserveKeyUUIDResponse.StatusList = keyutils.HandlePutDataErrors(reserveKeyUUIDResponse.StatusList, errors, err) } @@ -238,10 +236,9 @@ func (s *KeyStorageServerImpl) GetKeyId(ctx context.Context, in *api.GetKeyIdByK keyIdResponse := &api.GetKeyIdByKeyResponse{} - response, err := dataStorageClient.DoGetDataCall(keyToKeyIdTable, in.PublicKey) - if err == nil && response.Data != nil && response.Data.Data != nil { - keyID := string(response.Data.Data) - keyIdResponse.KeyId = keyID + keyId, errorsString, err := dataStorageClient.GetString(keyToKeyIdTable, in.PublicKey) + if err == nil && errorsString == "" && keyId != "" { + keyIdResponse.KeyId = keyId return keyIdResponse, nil } else { if err != nil { @@ -260,17 +257,21 @@ func (s *KeyStorageServerImpl) GetKeyId(ctx context.Context, in *api.GetKeyIdByK for _, checkID := range entity.AuthenticationKeys { key := &api.Key{} - data, err := dataStorageClient.DoGetDataCall("keys", checkID+"/"+api.KeyType_PUBLIC.String()) + hasData, errorsString, err := dataStorageClient.GetData("keys", checkID+"/"+api.KeyType_PUBLIC.String(), key) if err != nil { - log.Printf("grpc call GetKeyId to DataStorage failed: %s", err) + log.Printf("grpc call GetData to DataStorage failed: %s", err) return nil, err } - if data.Errors != "" { - return nil, errors.New(data.Errors) - } else { - proto.Unmarshal(data.Data.Data, key) + if errorsString != "" { + log.Printf("Error: %s", errorsString) + return nil, errors.New(errorsString) + } + + if !hasData { + log.Println("No such checkID " + checkID) + return nil, errors.New("No such checkID " + checkID) } keyFromStorage := base64.StdEncoding.EncodeToString(key.Content) @@ -279,10 +280,9 @@ func (s *KeyStorageServerImpl) GetKeyId(ctx context.Context, in *api.GetKeyIdByK continue } - _, _, err = dataStorageClient.DoPutDataCallWithString(keyToKeyIdTable, in.PublicKey, - checkID, versions.EntitiesManagementAgentApiVersion) + _, _, err = dataStorageClient.PutString(keyToKeyIdTable, in.PublicKey, checkID) if err != nil { - log.Printf("can't DoPutDataCallWithString: %s", err) + log.Printf("can't PutString: %s", err) return nil, err } diff --git a/handler/manage_device_key.go b/handler/manage_device_key.go index 72a389523ec64a221ee2add91189beb7bb959259..9bae5c34ac768d941c29e22474055d0710dc31da 100644 --- a/handler/manage_device_key.go +++ b/handler/manage_device_key.go @@ -22,7 +22,6 @@ import ( "code.vereign.com/code/viam-apis/data-storage-agent/client" "code.vereign.com/code/viam-apis/key-storage-agent/api" "code.vereign.com/code/viam-apis/utils" - "code.vereign.com/code/viam-apis/versions" "golang.org/x/net/context" ) @@ -116,7 +115,7 @@ func updateKey(client *client.DataStorageClientImpl, uuid string, keyType api.Ke update(key) - _, errors, err := client.DoPutDataCall("keys", uuid+"/"+api.KeyType.String(keyType), key, versions.EntitiesManagementAgentApiVersion) + _, errors, err := client.PutData("keys", uuid+"/"+api.KeyType.String(keyType), key) statusList = keyutils.HandlePutDataErrors(statusList, errors, err) if statusList != nil && len(statusList) > 0 { return statusList diff --git a/utils/utils.go b/utils/utils.go index aaf072029e81bb2f67e244ae96f9cda74ea68bb3..a8158a3d5c73485866e9601c9a20c96646262425 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -36,7 +36,6 @@ import ( emclient "code.vereign.com/code/viam-apis/entities-management-agent/client" "code.vereign.com/code/viam-apis/key-storage-agent/api" "code.vereign.com/code/viam-apis/utils" - "github.com/golang/protobuf/proto" ) func GenerateUnusedUUID(client *client.DataStorageClientImpl) (string, error) { @@ -45,9 +44,10 @@ func GenerateUnusedUUID(client *client.DataStorageClientImpl) (string, error) { uuid, err := NewUUID() // check that uuid is not used - data, _ := client.DoGetDataCall("keys", uuid+"/"+api.KeyType.String(api.KeyType_PRIVATE)) + key := &api.Key{} - if data == nil || data.Errors != "" || err != nil { + hasData, _, err := client.GetData("keys", uuid+"/"+api.KeyType.String(api.KeyType_PRIVATE), key) + if err != nil || !hasData { return uuid, nil } if count >= 10 { @@ -136,14 +136,25 @@ func ReadPemBlockFromFile(fileName string) (*pem.Block, error) { func GetKey(client *client.DataStorageClientImpl, uuid string, keyType api.KeyType) (*api.Key, []*api.Status) { statusList := []*api.Status{} - data, _ := client.DoGetDataCall("keys", uuid+"/"+api.KeyType.String(keyType)) - if data.Errors != "" { - statusList = utils.AddStatus(statusList, "400", api.StatusType_ERROR, data.Errors) + key := &api.Key{} + + _, errorsString, err := client.GetData("keys", uuid+"/"+api.KeyType.String(keyType), key) + if err != nil { + statusList = utils.AddStatus(statusList, "400", api.StatusType_ERROR, errorsString) return nil, statusList } - key := &api.Key{} - proto.Unmarshal(data.Data.Data, key) + /* + if errorsString != "" { + statusList = utils.AddStatus(statusList, "400", api.StatusType_ERROR, errorsString) + return nil, statusList + } + + if !hasData { + statusList = utils.AddStatus(statusList, "400", api.StatusType_ERROR, errorsString) + return nil, statusList + } + */ return key, nil }