Skip to content
Snippets Groups Projects
Commit 69f3ffa5 authored by Gospodin Bodurov's avatar Gospodin Bodurov
Browse files

Merge branch 'hyperledger-audit-log' into 'master'

Refactor agent with new client logic

See merge request !33
parents a805c8bc 5cd82414
No related branches found
No related tags found
1 merge request!33Refactor agent with new client logic
package server package config
import ( import (
"log" "log"
"code.vereign.com/code/viam-apis/authentication"
"github.com/spf13/viper" "github.com/spf13/viper"
) )
var certificationMethod string var SystemAuth = &authentication.Authentication{
var p PEMReader Uuid: "undefined",
var certificatePEM []byte Session: "undefined",
var privateKeyPEM []byte }
var caCertificatePEM []byte
var vereignCaCertificatePEM []byte var CertificationMethod string
var vereignCaKeyPEM []byte var P PEMReader
var CertificatePEM []byte
var PrivateKeyPEM []byte
var CaCertificatePEM []byte
var VereignCaCertificatePEM []byte
var VereignCaKeyPEM []byte
var MaxMessageSize int
var GrpcListenAddress string
var RestListenAddress string
var DataStorageUrl string
var CertDir string
func SetConfigValues() { func SetConfigValues() {
// Set Default Values For Config Variables // Set Default Values For Config Variables
...@@ -39,16 +53,16 @@ func SetConfigValues() { ...@@ -39,16 +53,16 @@ func SetConfigValues() {
viper.SetDefault("certificationVereignKeyFile", "vereign_ca.key") viper.SetDefault("certificationVereignKeyFile", "vereign_ca.key")
/* /*
// Vault Defaults // Vault Defaults
viper.SetDefault("certificationMethod", "2") viper.SetDefault("certificationMethod", "2")
viper.SetDefault("certificationURL", "http://10.6.10.119:8200") viper.SetDefault("certificationURL", "http://10.6.10.119:8200")
viper.SetDefault("certificationToken", "") viper.SetDefault("certificationToken", "")
viper.SetDefault("certificationPath", "/developers/data/devteam/cert") viper.SetDefault("certificationPath", "/developers/data/devteam/cert")
viper.SetDefault("certificationCertFile", "certificateKey") viper.SetDefault("certificationCertFile", "certificateKey")
viper.SetDefault("certificationKeyFile", "privateKey") viper.SetDefault("certificationKeyFile", "privateKey")
viper.SetDefault("certificationCaCertFile", "caCertificateKey") viper.SetDefault("certificationCaCertFile", "caCertificateKey")
viper.SetDefault("certificationVereignCertFile", "vereignCaCertificateKey") viper.SetDefault("certificationVereignCertFile", "vereignCaCertificateKey")
viper.SetDefault("certificationVereignKeyFile", "vereignCaPrivateKey") viper.SetDefault("certificationVereignKeyFile", "vereignCaPrivateKey")
*/ */
// Read Config File // Read Config File
...@@ -58,53 +72,69 @@ func SetConfigValues() { ...@@ -58,53 +72,69 @@ func SetConfigValues() {
log.Printf("can't read config: %s, will use default values", err) log.Printf("can't read config: %s, will use default values", err)
} }
certificationMethod = viper.GetString("certificationMethod") CertificationMethod = viper.GetString("certificationMethod")
if certificationMethod == "1" { if CertificationMethod == "1" {
// Read From File System // Read From File System
p = FilePEMReader{certificationURL: viper.GetString("certificationURL"), P = FilePEMReader{certificationURL: viper.GetString("certificationURL"),
certificationToken: viper.GetString("certificationToken"), certificationToken: viper.GetString("certificationToken"),
certificationPath: viper.GetString("certificationPath"), certificationPath: viper.GetString("certificationPath"),
certificationCertFile: viper.GetString("certificationCertFile"), certificationCertFile: viper.GetString("certificationCertFile"),
certificationKeyFile: viper.GetString("certificationKeyFile"), certificationKeyFile: viper.GetString("certificationKeyFile"),
certificationCaCertFile: viper.GetString("certificationCaCertFile"), certificationCaCertFile: viper.GetString("certificationCaCertFile"),
certificationVereignCertFile: viper.GetString("certificationVereignCertFile"), certificationVereignCertFile: viper.GetString("certificationVereignCertFile"),
certificationVereignKeyFile: viper.GetString("certificationVereignKeyFile")} certificationVereignKeyFile: viper.GetString("certificationVereignKeyFile")}
} else if certificationMethod == "2" { } else if CertificationMethod == "2" {
// Read From Vault // Read From Vault
p = VaultPEMReader{certificationURL: viper.GetString("certificationURL"), P = VaultPEMReader{certificationURL: viper.GetString("certificationURL"),
certificationToken: viper.GetString("certificationToken"), certificationToken: viper.GetString("certificationToken"),
certificationPath: viper.GetString("certificationPath"), certificationPath: viper.GetString("certificationPath"),
certificationCertFile: viper.GetString("certificationCertFile"), certificationCertFile: viper.GetString("certificationCertFile"),
certificationKeyFile: viper.GetString("certificationKeyFile"), certificationKeyFile: viper.GetString("certificationKeyFile"),
certificationCaCertFile: viper.GetString("certificationCaCertFile"), certificationCaCertFile: viper.GetString("certificationCaCertFile"),
certificationVereignCertFile: viper.GetString("certificationVereignCertFile"), certificationVereignCertFile: viper.GetString("certificationVereignCertFile"),
certificationVereignKeyFile: viper.GetString("certificationVereignKeyFile")} certificationVereignKeyFile: viper.GetString("certificationVereignKeyFile")}
} }
// Print all config values to log file // Print all config values to log file
log.Printf("All Settings From Config:") log.Printf("All Settings From Config:")
as := viper.AllSettings() as := viper.AllSettings()
for key, _ := range as { for key, _ := range as {
log.Printf("%s => %s", key, viper.GetString(key)) log.Printf("%s => %s", key, viper.GetString(key))
} }
GrpcListenAddress = viper.GetString("grpcListenAddress")
RestListenAddress = viper.GetString("restListenAddress")
DataStorageUrl = viper.GetString("dataStorageUrl")
SystemAuth.Uuid = viper.GetString("viamUUID")
SystemAuth.Session = viper.GetString("viamSession")
MaxMessageSize = viper.GetInt("maxMessageSize")
CertificatePEM = GetCertificatePEM()
PrivateKeyPEM = GetPrivateKeyPEM()
CaCertificatePEM = GetCaCertificatePEM()
VereignCaCertificatePEM = GetVereignCaCertificatePEM()
VereignCaKeyPEM = GetVereignCaKeyPEM()
} }
func GetCertificatePEM() []byte { func GetCertificatePEM() []byte {
return p.readCertificatePEM() return P.readCertificatePEM()
} }
func GetPrivateKeyPEM() []byte { func GetPrivateKeyPEM() []byte {
return p.readPrivateKeyPEM() return P.readPrivateKeyPEM()
} }
func GetCaCertificatePEM() []byte { func GetCaCertificatePEM() []byte {
return p.readCaCertificatePEM() return P.readCaCertificatePEM()
} }
func GetVereignCaCertificatePEM() []byte { func GetVereignCaCertificatePEM() []byte {
return p.readVereignCaCertificatePEM() return P.readVereignCaCertificatePEM()
} }
func GetVereignCaKeyPEM() []byte { func GetVereignCaKeyPEM() []byte {
return p.readVereignCaKeyPEM() return P.readVereignCaKeyPEM()
} }
\ No newline at end of file
package server package config
import ( import (
"log"
"io/ioutil" "io/ioutil"
"log"
vc "github.com/hashicorp/vault/api" vc "github.com/hashicorp/vault/api"
) )
...@@ -15,70 +16,70 @@ type PEMReader interface { ...@@ -15,70 +16,70 @@ type PEMReader interface {
} }
type FilePEMReader struct { type FilePEMReader struct {
certificationURL string certificationURL string
certificationToken string certificationToken string
certificationPath string certificationPath string
certificationCertFile string certificationCertFile string
certificationKeyFile string certificationKeyFile string
certificationCaCertFile string certificationCaCertFile string
certificationVereignCertFile string certificationVereignCertFile string
certificationVereignKeyFile string certificationVereignKeyFile string
} }
func (f FilePEMReader) readCertificatePEM() []byte { func (f FilePEMReader) readCertificatePEM() []byte {
pem, err := ioutil.ReadFile(f.certificationPath + "/" + f.certificationCertFile) pem, err := ioutil.ReadFile(f.certificationPath + "/" + f.certificationCertFile)
if err != nil { if err != nil {
log.Printf("Error: %v", err) log.Printf("Error: %v", err)
return []byte("") return []byte("")
} }
return pem return pem
} }
func (f FilePEMReader) readPrivateKeyPEM() []byte { func (f FilePEMReader) readPrivateKeyPEM() []byte {
pem, err := ioutil.ReadFile(f.certificationPath + "/" + f.certificationKeyFile) pem, err := ioutil.ReadFile(f.certificationPath + "/" + f.certificationKeyFile)
if err != nil { if err != nil {
log.Printf("Error: %v", err) log.Printf("Error: %v", err)
return []byte("") return []byte("")
} }
return pem return pem
} }
func (f FilePEMReader) readCaCertificatePEM() []byte { func (f FilePEMReader) readCaCertificatePEM() []byte {
pem, err := ioutil.ReadFile(f.certificationPath + "/" + f.certificationCaCertFile) pem, err := ioutil.ReadFile(f.certificationPath + "/" + f.certificationCaCertFile)
if err != nil { if err != nil {
log.Printf("Error: %v", err) log.Printf("Error: %v", err)
return []byte("") return []byte("")
} }
return pem return pem
} }
func (f FilePEMReader) readVereignCaCertificatePEM() []byte { func (f FilePEMReader) readVereignCaCertificatePEM() []byte {
pem, err := ioutil.ReadFile(f.certificationPath + "/" + f.certificationVereignCertFile) pem, err := ioutil.ReadFile(f.certificationPath + "/" + f.certificationVereignCertFile)
if err != nil { if err != nil {
log.Printf("Error: %v", err) log.Printf("Error: %v", err)
return []byte("") return []byte("")
} }
return pem return pem
} }
func (f FilePEMReader) readVereignCaKeyPEM() []byte { func (f FilePEMReader) readVereignCaKeyPEM() []byte {
pem, err := ioutil.ReadFile(f.certificationPath + "/" + f.certificationVereignKeyFile) pem, err := ioutil.ReadFile(f.certificationPath + "/" + f.certificationVereignKeyFile)
if err != nil { if err != nil {
log.Printf("Error: %v", err) log.Printf("Error: %v", err)
return []byte("") return []byte("")
} }
return pem return pem
} }
type VaultPEMReader struct { type VaultPEMReader struct {
certificationURL string certificationURL string
certificationToken string certificationToken string
certificationPath string certificationPath string
certificationCertFile string certificationCertFile string
certificationKeyFile string certificationKeyFile string
certificationCaCertFile string certificationCaCertFile string
certificationVereignCertFile string certificationVereignCertFile string
certificationVereignKeyFile string certificationVereignKeyFile string
} }
func (v VaultPEMReader) readCertificatePEM() []byte { func (v VaultPEMReader) readCertificatePEM() []byte {
...@@ -97,7 +98,7 @@ func (v VaultPEMReader) readCertificatePEM() []byte { ...@@ -97,7 +98,7 @@ func (v VaultPEMReader) readCertificatePEM() []byte {
if err != nil { if err != nil {
log.Printf("Error: VAULT Can't read value, %s", err) log.Printf("Error: VAULT Can't read value, %s", err)
} }
pemMap := secretValues.Data["data"].(map[string]interface{}) pemMap := secretValues.Data["data"].(map[string]interface{})
for propName, propValue := range pemMap { for propName, propValue := range pemMap {
...@@ -124,7 +125,7 @@ func (v VaultPEMReader) readPrivateKeyPEM() []byte { ...@@ -124,7 +125,7 @@ func (v VaultPEMReader) readPrivateKeyPEM() []byte {
if err != nil { if err != nil {
log.Printf("Error: VAULT Can't read value, %s", err) log.Printf("Error: VAULT Can't read value, %s", err)
} }
pemMap := secretValues.Data["data"].(map[string]interface{}) pemMap := secretValues.Data["data"].(map[string]interface{})
for propName, propValue := range pemMap { for propName, propValue := range pemMap {
...@@ -151,7 +152,7 @@ func (v VaultPEMReader) readCaCertificatePEM() []byte { ...@@ -151,7 +152,7 @@ func (v VaultPEMReader) readCaCertificatePEM() []byte {
if err != nil { if err != nil {
log.Printf("Error: VAULT Can't read value, %s", err) log.Printf("Error: VAULT Can't read value, %s", err)
} }
pemMap := secretValues.Data["data"].(map[string]interface{}) pemMap := secretValues.Data["data"].(map[string]interface{})
for propName, propValue := range pemMap { for propName, propValue := range pemMap {
...@@ -178,7 +179,7 @@ func (v VaultPEMReader) readVereignCaCertificatePEM() []byte { ...@@ -178,7 +179,7 @@ func (v VaultPEMReader) readVereignCaCertificatePEM() []byte {
if err != nil { if err != nil {
log.Printf("Error: VAULT Can't read value, %s", err) log.Printf("Error: VAULT Can't read value, %s", err)
} }
pemMap := secretValues.Data["data"].(map[string]interface{}) pemMap := secretValues.Data["data"].(map[string]interface{})
for propName, propValue := range pemMap { for propName, propValue := range pemMap {
...@@ -205,7 +206,7 @@ func (v VaultPEMReader) readVereignCaKeyPEM() []byte { ...@@ -205,7 +206,7 @@ func (v VaultPEMReader) readVereignCaKeyPEM() []byte {
if err != nil { if err != nil {
log.Printf("Error: VAULT Can't read value, %s", err) log.Printf("Error: VAULT Can't read value, %s", err)
} }
pemMap := secretValues.Data["data"].(map[string]interface{}) pemMap := secretValues.Data["data"].(map[string]interface{})
for propName, propValue := range pemMap { for propName, propValue := range pemMap {
...@@ -214,4 +215,4 @@ func (v VaultPEMReader) readVereignCaKeyPEM() []byte { ...@@ -214,4 +215,4 @@ func (v VaultPEMReader) readVereignCaKeyPEM() []byte {
} }
} }
return []byte("") return []byte("")
} }
\ No newline at end of file
...@@ -18,7 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. ...@@ -18,7 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package handler package handler
import ( import (
"log"
"crypto/aes" "crypto/aes"
"crypto/cipher" "crypto/cipher"
"crypto/rand" "crypto/rand"
...@@ -26,8 +25,9 @@ import ( ...@@ -26,8 +25,9 @@ import (
"crypto/sha256" "crypto/sha256"
"crypto/x509" "crypto/x509"
"encoding/pem" "encoding/pem"
"log"
"code.vereign.com/code/viam-apis/data-storage-agent/client" 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/key-storage-agent/api"
"code.vereign.com/code/viam-apis/utils" "code.vereign.com/code/viam-apis/utils"
"code.vereign.com/code/viam-apis/versions" "code.vereign.com/code/viam-apis/versions"
...@@ -39,13 +39,12 @@ func (s *KeyStorageServerImpl) GenerateKeyPair(ctx context.Context, ...@@ -39,13 +39,12 @@ func (s *KeyStorageServerImpl) GenerateKeyPair(ctx context.Context,
auth := s.CreateAuthentication(ctx) auth := s.CreateAuthentication(ctx)
client := &client.DataStorageClientImpl{} client := keyutils.CreateDataStorageClient(auth)
client.SetUpClient(auth, s.DataStorageUrl, s.CertPEM, s.KeyPEM, s.CaCertPEM, s.MaxMessageSize)
defer client.CloseClient() defer client.CloseClient()
generateKeyPairResponse := &api.GenerateKeyPairResponse{} generateKeyPairResponse := &api.GenerateKeyPairResponse{}
uuid, err := generateUnusedUUID(client) uuid, err := keyutils.GenerateUnusedUUID(client)
if err != nil { if err != nil {
log.Printf("Error: %v", err) log.Printf("Error: %v", err)
generateKeyPairResponse.StatusList = utils.AddStatus(generateKeyPairResponse.StatusList, generateKeyPairResponse.StatusList = utils.AddStatus(generateKeyPairResponse.StatusList,
...@@ -76,13 +75,13 @@ func (s *KeyStorageServerImpl) GenerateKeyPair(ctx context.Context, ...@@ -76,13 +75,13 @@ func (s *KeyStorageServerImpl) GenerateKeyPair(ctx context.Context,
encryptedPrivateKey := &api.Key{Content: encryptedPrivateKeyBytes} encryptedPrivateKey := &api.Key{Content: encryptedPrivateKeyBytes}
result, errors, err := client.DoPutDataCall("keys", uuid+"/"+api.KeyType.String(api.KeyType_PRIVATE), result, errors, err := client.DoPutDataCall("keys", uuid+"/"+api.KeyType.String(api.KeyType_PRIVATE),
encryptedPrivateKey, versions.EntitiesManagementAgentApiVersion) encryptedPrivateKey, versions.EntitiesManagementAgentApiVersion)
generateKeyPairResponse.StatusList = handlePutDataErrors(generateKeyPairResponse.StatusList, errors, err) generateKeyPairResponse.StatusList = keyutils.HandlePutDataErrors(generateKeyPairResponse.StatusList, errors, err)
if generateKeyPairResponse.StatusList == nil || len(generateKeyPairResponse.StatusList) == 0 { if generateKeyPairResponse.StatusList == nil || len(generateKeyPairResponse.StatusList) == 0 {
publicKey := &api.Key{Content: publicKeyBytes} publicKey := &api.Key{Content: publicKeyBytes}
result, errors, err = client.DoPutDataCall("keys", uuid+"/"+api.KeyType.String(api.KeyType_PUBLIC), result, errors, err = client.DoPutDataCall("keys", uuid+"/"+api.KeyType.String(api.KeyType_PUBLIC),
publicKey, versions.EntitiesManagementAgentApiVersion) publicKey, versions.EntitiesManagementAgentApiVersion)
generateKeyPairResponse.StatusList = handlePutDataErrors(generateKeyPairResponse.StatusList, errors, err) generateKeyPairResponse.StatusList = keyutils.HandlePutDataErrors(generateKeyPairResponse.StatusList, errors, err)
} }
//duplicate logic of ReserveKeyUUID //duplicate logic of ReserveKeyUUID
...@@ -90,7 +89,7 @@ func (s *KeyStorageServerImpl) GenerateKeyPair(ctx context.Context, ...@@ -90,7 +89,7 @@ func (s *KeyStorageServerImpl) GenerateKeyPair(ctx context.Context,
emptyKey := &api.Key{Content: []byte{}} emptyKey := &api.Key{Content: []byte{}}
result, errors, err = client.DoPutDataCall("keys", uuid+"/"+api.KeyType.String(api.KeyType_CERTIFICATE), result, errors, err = client.DoPutDataCall("keys", uuid+"/"+api.KeyType.String(api.KeyType_CERTIFICATE),
emptyKey, versions.EntitiesManagementAgentApiVersion) emptyKey, versions.EntitiesManagementAgentApiVersion)
generateKeyPairResponse.StatusList = handlePutDataErrors(generateKeyPairResponse.StatusList, errors, err) generateKeyPairResponse.StatusList = keyutils.HandlePutDataErrors(generateKeyPairResponse.StatusList, errors, err)
} }
if generateKeyPairResponse.StatusList == nil || len(generateKeyPairResponse.StatusList) == 0 { if generateKeyPairResponse.StatusList == nil || len(generateKeyPairResponse.StatusList) == 0 {
...@@ -105,7 +104,7 @@ func (s *KeyStorageServerImpl) GenerateKeyPair(ctx context.Context, ...@@ -105,7 +104,7 @@ func (s *KeyStorageServerImpl) GenerateKeyPair(ctx context.Context,
encryptedAesKey := &api.Key{Content: encryptedAesKeyBytes} 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.DoPutDataCall("keys", uuid+"/"+api.KeyType.String(api.KeyType_AES), encryptedAesKey, versions.EntitiesManagementAgentApiVersion)
generateKeyPairResponse.StatusList = handlePutDataErrors(generateKeyPairResponse.StatusList, errors, err) generateKeyPairResponse.StatusList = keyutils.HandlePutDataErrors(generateKeyPairResponse.StatusList, errors, err)
} }
if generateKeyPairResponse.StatusList == nil || len(generateKeyPairResponse.StatusList) == 0 { if generateKeyPairResponse.StatusList == nil || len(generateKeyPairResponse.StatusList) == 0 {
...@@ -120,7 +119,7 @@ func (s *KeyStorageServerImpl) GenerateKeyPair(ctx context.Context, ...@@ -120,7 +119,7 @@ func (s *KeyStorageServerImpl) GenerateKeyPair(ctx context.Context,
encryptedNonce := &api.Key{Content: encryptedPrivateKeyNonceBytes} 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.DoPutDataCall("keys", uuid+"/"+api.KeyType.String(api.KeyType_NONCE), encryptedNonce, versions.EntitiesManagementAgentApiVersion)
generateKeyPairResponse.StatusList = handlePutDataErrors(generateKeyPairResponse.StatusList, errors, err) generateKeyPairResponse.StatusList = keyutils.HandlePutDataErrors(generateKeyPairResponse.StatusList, errors, err)
} }
if generateKeyPairResponse.StatusList == nil || len(generateKeyPairResponse.StatusList) == 0 { if generateKeyPairResponse.StatusList == nil || len(generateKeyPairResponse.StatusList) == 0 {
...@@ -177,7 +176,7 @@ func generateKeyPair(keySize int) ([]byte, []byte, error) { ...@@ -177,7 +176,7 @@ func generateKeyPair(keySize int) ([]byte, []byte, error) {
} }
func rsaEncryptWithServerKey(certPEM []byte, message []byte, label []byte) ([]byte, error) { func rsaEncryptWithServerKey(certPEM []byte, message []byte, label []byte) ([]byte, error) {
serverCertificate, err := readCertificateFromPEM(certPEM) serverCertificate, err := keyutils.ReadCertificateFromPEM(certPEM)
if err != nil { if err != nil {
log.Printf("Error: %v", err) log.Printf("Error: %v", err)
return nil, err return nil, err
......
...@@ -24,8 +24,8 @@ import ( ...@@ -24,8 +24,8 @@ import (
"code.vereign.com/code/viam-apis/versions" "code.vereign.com/code/viam-apis/versions"
"github.com/golang/protobuf/proto" "github.com/golang/protobuf/proto"
keyutils "code.vereign.com/code/key-storage-agent/utils"
"code.vereign.com/code/viam-apis/authentication" "code.vereign.com/code/viam-apis/authentication"
"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/key-storage-agent/api"
"code.vereign.com/code/viam-apis/utils" "code.vereign.com/code/viam-apis/utils"
"golang.org/x/net/context" "golang.org/x/net/context"
...@@ -34,13 +34,13 @@ import ( ...@@ -34,13 +34,13 @@ import (
// Server represents the gRPC server // Server represents the gRPC server
type KeyStorageServerImpl struct { type KeyStorageServerImpl struct {
DataStorageUrl string DataStorageUrl string
CertPEM []byte CertPEM []byte
KeyPEM []byte KeyPEM []byte
CaCertPEM []byte CaCertPEM []byte
VereignCertPEM []byte VereignCertPEM []byte
VereignPrivateKeyPEM []byte VereignPrivateKeyPEM []byte
MaxMessageSize int MaxMessageSize int
} }
var version = "undefined" var version = "undefined"
...@@ -64,8 +64,7 @@ func (s *KeyStorageServerImpl) CreateAuthentication(ctx context.Context) *authen ...@@ -64,8 +64,7 @@ func (s *KeyStorageServerImpl) CreateAuthentication(ctx context.Context) *authen
func (s *KeyStorageServerImpl) GetKey(ctx context.Context, in *api.GetKeyRequest) (*api.GetKeyResponse, error) { func (s *KeyStorageServerImpl) GetKey(ctx context.Context, in *api.GetKeyRequest) (*api.GetKeyResponse, error) {
auth := s.CreateAuthentication(ctx) auth := s.CreateAuthentication(ctx)
client := &client.DataStorageClientImpl{} client := keyutils.CreateDataStorageClient(auth)
client.SetUpClient(auth, s.DataStorageUrl, s.CertPEM, s.KeyPEM, s.CaCertPEM, s.MaxMessageSize)
defer client.CloseClient() defer client.CloseClient()
getKeyResponse := &api.GetKeyResponse{} getKeyResponse := &api.GetKeyResponse{}
...@@ -112,8 +111,7 @@ func (s *KeyStorageServerImpl) GetKey(ctx context.Context, in *api.GetKeyRequest ...@@ -112,8 +111,7 @@ func (s *KeyStorageServerImpl) GetKey(ctx context.Context, in *api.GetKeyRequest
func (s *KeyStorageServerImpl) SetKey(ctx context.Context, in *api.SetKeyRequest) (*api.SetKeyResponse, error) { func (s *KeyStorageServerImpl) SetKey(ctx context.Context, in *api.SetKeyRequest) (*api.SetKeyResponse, error) {
auth := s.CreateAuthentication(ctx) auth := s.CreateAuthentication(ctx)
client := &client.DataStorageClientImpl{} client := keyutils.CreateDataStorageClient(auth)
client.SetUpClient(auth, s.DataStorageUrl, s.CertPEM, s.KeyPEM, s.CaCertPEM, s.MaxMessageSize)
defer client.CloseClient() defer client.CloseClient()
setKeyResponse := &api.SetKeyResponse{} setKeyResponse := &api.SetKeyResponse{}
...@@ -147,7 +145,7 @@ func (s *KeyStorageServerImpl) SetKey(ctx context.Context, in *api.SetKeyRequest ...@@ -147,7 +145,7 @@ func (s *KeyStorageServerImpl) SetKey(ctx context.Context, in *api.SetKeyRequest
} }
result, errors, err := client.DoPutDataCall("keys", in.Uuid+"/"+api.KeyType.String(in.KeyType), in.Key, versions.EntitiesManagementAgentApiVersion) result, errors, err := client.DoPutDataCall("keys", in.Uuid+"/"+api.KeyType.String(in.KeyType), in.Key, versions.EntitiesManagementAgentApiVersion)
setKeyResponse.StatusList = handlePutDataErrors(setKeyResponse.StatusList, errors, err) setKeyResponse.StatusList = keyutils.HandlePutDataErrors(setKeyResponse.StatusList, errors, err)
if setKeyResponse.StatusList == nil || len(setKeyResponse.StatusList) == 0 { if setKeyResponse.StatusList == nil || len(setKeyResponse.StatusList) == 0 {
setKeyResponse.StatusList = utils.AddStatus(setKeyResponse.StatusList, setKeyResponse.StatusList = utils.AddStatus(setKeyResponse.StatusList,
...@@ -160,13 +158,12 @@ func (s *KeyStorageServerImpl) SetKey(ctx context.Context, in *api.SetKeyRequest ...@@ -160,13 +158,12 @@ func (s *KeyStorageServerImpl) SetKey(ctx context.Context, in *api.SetKeyRequest
func (s *KeyStorageServerImpl) ReserveKeyUUID(ctx context.Context, in *api.ReserveKeyUUIDRequest) (*api.ReserveKeyUUIDResponse, error) { func (s *KeyStorageServerImpl) ReserveKeyUUID(ctx context.Context, in *api.ReserveKeyUUIDRequest) (*api.ReserveKeyUUIDResponse, error) {
auth := s.CreateAuthentication(ctx) auth := s.CreateAuthentication(ctx)
client := &client.DataStorageClientImpl{} client := keyutils.CreateDataStorageClient(auth)
client.SetUpClient(auth, s.DataStorageUrl, s.CertPEM, s.KeyPEM, s.CaCertPEM, s.MaxMessageSize)
defer client.CloseClient() defer client.CloseClient()
reserveKeyUUIDResponse := &api.ReserveKeyUUIDResponse{} reserveKeyUUIDResponse := &api.ReserveKeyUUIDResponse{}
uuid, err := generateUnusedUUID(client) uuid, err := keyutils.GenerateUnusedUUID(client)
if err != nil { if err != nil {
log.Printf("Error: %v", err) log.Printf("Error: %v", err)
reserveKeyUUIDResponse.StatusList = utils.AddStatus(reserveKeyUUIDResponse.StatusList, reserveKeyUUIDResponse.StatusList = utils.AddStatus(reserveKeyUUIDResponse.StatusList,
...@@ -178,16 +175,16 @@ func (s *KeyStorageServerImpl) ReserveKeyUUID(ctx context.Context, in *api.Reser ...@@ -178,16 +175,16 @@ func (s *KeyStorageServerImpl) ReserveKeyUUID(ctx context.Context, in *api.Reser
} }
result, errors, err := client.DoPutDataCall("keys", uuid+"/"+api.KeyType.String(api.KeyType_PRIVATE), emptyKey, versions.EntitiesManagementAgentApiVersion) result, errors, err := client.DoPutDataCall("keys", uuid+"/"+api.KeyType.String(api.KeyType_PRIVATE), emptyKey, versions.EntitiesManagementAgentApiVersion)
reserveKeyUUIDResponse.StatusList = handlePutDataErrors(reserveKeyUUIDResponse.StatusList, errors, err) reserveKeyUUIDResponse.StatusList = keyutils.HandlePutDataErrors(reserveKeyUUIDResponse.StatusList, errors, err)
if reserveKeyUUIDResponse.StatusList == nil || len(reserveKeyUUIDResponse.StatusList) == 0 { 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.DoPutDataCall("keys", uuid+"/"+api.KeyType.String(api.KeyType_PUBLIC), emptyKey, versions.EntitiesManagementAgentApiVersion)
reserveKeyUUIDResponse.StatusList = handlePutDataErrors(reserveKeyUUIDResponse.StatusList, errors, err) reserveKeyUUIDResponse.StatusList = keyutils.HandlePutDataErrors(reserveKeyUUIDResponse.StatusList, errors, err)
} }
if reserveKeyUUIDResponse.StatusList == nil || len(reserveKeyUUIDResponse.StatusList) == 0 { 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.DoPutDataCall("keys", uuid+"/"+api.KeyType.String(api.KeyType_CERTIFICATE), emptyKey, versions.EntitiesManagementAgentApiVersion)
reserveKeyUUIDResponse.StatusList = handlePutDataErrors(reserveKeyUUIDResponse.StatusList, errors, err) reserveKeyUUIDResponse.StatusList = keyutils.HandlePutDataErrors(reserveKeyUUIDResponse.StatusList, errors, err)
} }
if reserveKeyUUIDResponse.StatusList == nil || len(reserveKeyUUIDResponse.StatusList) == 0 { if reserveKeyUUIDResponse.StatusList == nil || len(reserveKeyUUIDResponse.StatusList) == 0 {
...@@ -202,4 +199,4 @@ func (s *KeyStorageServerImpl) ReserveKeyUUID(ctx context.Context, in *api.Reser ...@@ -202,4 +199,4 @@ func (s *KeyStorageServerImpl) ReserveKeyUUID(ctx context.Context, in *api.Reser
func (s *KeyStorageServerImpl) GetVersionKSA(ctx context.Context, in *api.GetVersionKSAMessage) (*api.GetVersionKSAResponseMessage, error) { func (s *KeyStorageServerImpl) GetVersionKSA(ctx context.Context, in *api.GetVersionKSAMessage) (*api.GetVersionKSAResponseMessage, error) {
log.Println("Version: " + version) log.Println("Version: " + version)
return &api.GetVersionKSAResponseMessage{Version: version, Errors: ""}, nil return &api.GetVersionKSAResponseMessage{Version: version, Errors: ""}, nil
} }
\ No newline at end of file
...@@ -18,6 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. ...@@ -18,6 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package handler package handler
import ( import (
keyutils "code.vereign.com/code/key-storage-agent/utils"
"code.vereign.com/code/viam-apis/data-storage-agent/client" "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/key-storage-agent/api"
"code.vereign.com/code/viam-apis/utils" "code.vereign.com/code/viam-apis/utils"
...@@ -28,8 +29,7 @@ import ( ...@@ -28,8 +29,7 @@ import (
func (s *KeyStorageServerImpl) Revoke(ctx context.Context, in *api.RevokeRequest) (*api.RevokeResponse, error) { func (s *KeyStorageServerImpl) Revoke(ctx context.Context, in *api.RevokeRequest) (*api.RevokeResponse, error) {
auth := s.CreateAuthentication(ctx) auth := s.CreateAuthentication(ctx)
client := &client.DataStorageClientImpl{} client := keyutils.CreateDataStorageClient(auth)
client.SetUpClient(auth, s.DataStorageUrl, s.CertPEM, s.KeyPEM, s.CaCertPEM, s.MaxMessageSize)
defer client.CloseClient() defer client.CloseClient()
revokeResponse := &api.RevokeResponse{} revokeResponse := &api.RevokeResponse{}
...@@ -55,7 +55,7 @@ func (s *KeyStorageServerImpl) Revoke(ctx context.Context, in *api.RevokeRequest ...@@ -55,7 +55,7 @@ func (s *KeyStorageServerImpl) Revoke(ctx context.Context, in *api.RevokeRequest
func revokeKey(client *client.DataStorageClientImpl, uuid string, keyType api.KeyType) []*api.Status { func revokeKey(client *client.DataStorageClientImpl, uuid string, keyType api.KeyType) []*api.Status {
key, statusList := getKey(client, uuid, keyType) key, statusList := keyutils.GetKey(client, uuid, keyType)
if statusList != nil { if statusList != nil {
return statusList return statusList
} }
...@@ -63,7 +63,7 @@ func revokeKey(client *client.DataStorageClientImpl, uuid string, keyType api.Ke ...@@ -63,7 +63,7 @@ func revokeKey(client *client.DataStorageClientImpl, uuid string, keyType api.Ke
key.Revoked = true key.Revoked = true
_, errors, err := client.DoPutDataCall("keys", uuid+"/"+api.KeyType.String(keyType), key, versions.EntitiesManagementAgentApiVersion) _, errors, err := client.DoPutDataCall("keys", uuid+"/"+api.KeyType.String(keyType), key, versions.EntitiesManagementAgentApiVersion)
statusList = handlePutDataErrors(statusList, errors, err) statusList = keyutils.HandlePutDataErrors(statusList, errors, err)
if statusList != nil && len(statusList) > 0 { if statusList != nil && len(statusList) > 0 {
return statusList return statusList
} }
......
...@@ -20,24 +20,24 @@ package main ...@@ -20,24 +20,24 @@ package main
import ( import (
"log" "log"
"code.vereign.com/code/key-storage-agent/config"
"code.vereign.com/code/key-storage-agent/server" "code.vereign.com/code/key-storage-agent/server"
"github.com/spf13/viper"
) )
// main start a gRPC server and waits for connection // main start a gRPC server and waits for connection
func main() { func main() {
server.SetConfigValues() config.SetConfigValues()
grpcAddress := viper.GetString("grpcListenAddress") grpcAddress := config.GrpcListenAddress
restAddress := viper.GetString("restListenAddress") restAddress := config.RestListenAddress
dataStorageAddress := viper.GetString("dataStorageUrl") dataStorageAddress := config.DataStorageUrl
certPem := server.GetCertificatePEM() certPem := config.CertificatePEM
keyPem := server.GetPrivateKeyPEM() keyPem := config.PrivateKeyPEM
caCertPem := server.GetCaCertificatePEM() caCertPem := config.CaCertificatePEM
vereignCaCertificatePem := server.GetVereignCaCertificatePEM() vereignCaCertificatePem := config.VereignCaCertificatePEM
vereignCaKeyPem := server.GetVereignCaKeyPEM() vereignCaKeyPem := config.VereignCaKeyPEM
maxMessageSize := viper.GetInt("maxMessageSize") maxMessageSize := config.MaxMessageSize
// fire the gRPC server in a goroutine // fire the gRPC server in a goroutine
go func() { go func() {
......
...@@ -18,24 +18,25 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. ...@@ -18,24 +18,25 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
import ( import (
"crypto/tls"
"crypto/x509"
"fmt" "fmt"
"log" "log"
"net" "net"
"net/http" "net/http"
"strings" "strings"
"crypto/x509"
"crypto/tls" "code.vereign.com/code/key-storage-agent/config"
"github.com/grpc-ecosystem/grpc-gateway/runtime"
"golang.org/x/net/context"
"code.vereign.com/code/key-storage-agent/handler" "code.vereign.com/code/key-storage-agent/handler"
"code.vereign.com/code/key-storage-agent/session" "code.vereign.com/code/key-storage-agent/session"
"code.vereign.com/code/key-storage-agent/utils"
"code.vereign.com/code/viam-apis/authentication" "code.vereign.com/code/viam-apis/authentication"
"code.vereign.com/code/viam-apis/data-storage-agent/client"
api "code.vereign.com/code/viam-apis/key-storage-agent/api" api "code.vereign.com/code/viam-apis/key-storage-agent/api"
"github.com/grpc-ecosystem/grpc-gateway/runtime"
"golang.org/x/net/context"
"google.golang.org/grpc" "google.golang.org/grpc"
"google.golang.org/grpc/credentials" "google.golang.org/grpc/credentials"
"google.golang.org/grpc/metadata" "google.golang.org/grpc/metadata"
"github.com/spf13/viper"
) )
// private type for Context keys // private type for Context keys
...@@ -66,12 +67,11 @@ func authenticateClient(ctx context.Context, s *handler.KeyStorageServerImpl, in ...@@ -66,12 +67,11 @@ func authenticateClient(ctx context.Context, s *handler.KeyStorageServerImpl, in
} }
viamAuth := &authentication.Authentication{ viamAuth := &authentication.Authentication{
Uuid: viper.GetString("viamUUID"), Uuid: config.SystemAuth.Uuid,
Session: viper.GetString("viamSession"), Session: config.SystemAuth.Session,
} }
sessionClient := &client.DataStorageClientImpl{} sessionClient := utils.CreateDataStorageClient(viamAuth)
sessionClient.SetUpClient(viamAuth, viper.GetString("dataStorageUrl"), pkgCertPEM, pkgKeyPEM, pkgCaCertPEM, viper.GetInt("maxMessageSize"))
defer sessionClient.CloseClient() defer sessionClient.CloseClient()
if clientAuth.Uuid == viamAuth.Uuid { if clientAuth.Uuid == viamAuth.Uuid {
...@@ -123,46 +123,46 @@ func StartGRPCServer(address string, certPEM, privateKeyPEM, caCertPEM, vereignC ...@@ -123,46 +123,46 @@ func StartGRPCServer(address string, certPEM, privateKeyPEM, caCertPEM, vereignC
// create a server instance // create a server instance
s := handler.KeyStorageServerImpl{ s := handler.KeyStorageServerImpl{
DataStorageUrl: dataStorageAddress, DataStorageUrl: dataStorageAddress,
CertPEM: certPEM, CertPEM: certPEM,
KeyPEM: privateKeyPEM, KeyPEM: privateKeyPEM,
CaCertPEM: caCertPEM, CaCertPEM: caCertPEM,
VereignCertPEM: vereignCertPEM, VereignCertPEM: vereignCertPEM,
VereignPrivateKeyPEM: vereignPrivateKeyPEM, VereignPrivateKeyPEM: vereignPrivateKeyPEM,
MaxMessageSize: maxMessageSize, MaxMessageSize: maxMessageSize,
} }
// Load the certificates from PEM Strings // Load the certificates from PEM Strings
certificate, err := tls.X509KeyPair(certPEM, privateKeyPEM) certificate, err := tls.X509KeyPair(certPEM, privateKeyPEM)
if err != nil { if err != nil {
log.Printf("Error: %v", err) log.Printf("Error: %v", err)
return fmt.Errorf("could not load server key pair: %s", err) return fmt.Errorf("could not load server key pair: %s", err)
} }
// Create a certificate pool from the certificate authority // Create a certificate pool from the certificate authority
// Get the SystemCertPool, continue with an empty pool on error // Get the SystemCertPool, continue with an empty pool on error
certPool, _ := x509.SystemCertPool() certPool, _ := x509.SystemCertPool()
if certPool == nil { if certPool == nil {
certPool = x509.NewCertPool() certPool = x509.NewCertPool()
} }
if ok := certPool.AppendCertsFromPEM(caCertPEM); !ok { if ok := certPool.AppendCertsFromPEM(caCertPEM); !ok {
return fmt.Errorf("failed to append server certs") return fmt.Errorf("failed to append server certs")
} }
// Create the TLS credentials // Create the TLS credentials
creds := credentials.NewTLS(&tls.Config{ creds := credentials.NewTLS(&tls.Config{
//ClientAuth: tls.RequireAndVerifyClientCert, //ClientAuth: tls.RequireAndVerifyClientCert,
Certificates: []tls.Certificate{certificate}, Certificates: []tls.Certificate{certificate},
ClientCAs: certPool, ClientCAs: certPool,
}) })
// Create an array of gRPC options with the credentials // Create an array of gRPC options with the credentials
opts := []grpc.ServerOption{ opts := []grpc.ServerOption{
grpc.Creds(creds), grpc.Creds(creds),
grpc.UnaryInterceptor(unaryInterceptor), grpc.UnaryInterceptor(unaryInterceptor),
grpc.MaxRecvMsgSize(viper.GetInt("maxMessageSize")*1024*1024), grpc.MaxRecvMsgSize(config.MaxMessageSize * 1024 * 1024),
} }
// create a gRPC server object // create a gRPC server object
...@@ -193,9 +193,9 @@ func StartRESTServer(address, grpcAddress string, certPEM []byte) error { ...@@ -193,9 +193,9 @@ func StartRESTServer(address, grpcAddress string, certPEM []byte) error {
} }
// Append the client certificates from the CA // Append the client certificates from the CA
if ok := certPool.AppendCertsFromPEM(certPEM); !ok { if ok := certPool.AppendCertsFromPEM(certPEM); !ok {
return fmt.Errorf("failed to append client certs") return fmt.Errorf("failed to append client certs")
} }
creds := credentials.NewClientTLSFromCert(certPool, "") creds := credentials.NewClientTLSFromCert(certPool, "")
......
...@@ -15,28 +15,33 @@ You should have received a copy of the GNU Affero General Public License ...@@ -15,28 +15,33 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package handler package utils
import ( import (
"crypto/rand" "crypto/rand"
"crypto/x509" "crypto/x509"
"errors" "errors"
"fmt" "fmt"
"log"
"io" "io"
"log"
"encoding/pem"
"io/ioutil"
"code.vereign.com/code/key-storage-agent/config"
"code.vereign.com/code/viam-apis/authentication"
"code.vereign.com/code/viam-apis/clientutils"
"code.vereign.com/code/viam-apis/data-storage-agent/client" "code.vereign.com/code/viam-apis/data-storage-agent/client"
dsclient "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/key-storage-agent/api"
"code.vereign.com/code/viam-apis/utils" "code.vereign.com/code/viam-apis/utils"
"github.com/golang/protobuf/proto" "github.com/golang/protobuf/proto"
"encoding/pem"
"io/ioutil"
) )
func generateUnusedUUID(client *client.DataStorageClientImpl) (string, error) { func GenerateUnusedUUID(client *client.DataStorageClientImpl) (string, error) {
count := 0 count := 0
for { for {
uuid, err := newUUID() uuid, err := NewUUID()
// check that uuid is not used // check that uuid is not used
data, _ := client.DoGetDataCall("keys", uuid+"/"+api.KeyType.String(api.KeyType_PRIVATE)) data, _ := client.DoGetDataCall("keys", uuid+"/"+api.KeyType.String(api.KeyType_PRIVATE))
...@@ -51,7 +56,7 @@ func generateUnusedUUID(client *client.DataStorageClientImpl) (string, error) { ...@@ -51,7 +56,7 @@ func generateUnusedUUID(client *client.DataStorageClientImpl) (string, error) {
} }
} }
func newUUID() (string, error) { func NewUUID() (string, error) {
uuid := make([]byte, 16) uuid := make([]byte, 16)
n, err := io.ReadFull(rand.Reader, uuid) n, err := io.ReadFull(rand.Reader, uuid)
if n != len(uuid) || err != nil { if n != len(uuid) || err != nil {
...@@ -64,7 +69,7 @@ func newUUID() (string, error) { ...@@ -64,7 +69,7 @@ func newUUID() (string, error) {
return fmt.Sprintf("%x-%x-%x-%x-%x", uuid[0:4], uuid[4:6], uuid[6:8], uuid[8:10], uuid[10:]), nil return fmt.Sprintf("%x-%x-%x-%x-%x", uuid[0:4], uuid[4:6], uuid[6:8], uuid[8:10], uuid[10:]), nil
} }
func handlePutDataErrors(statusList []*api.Status, errors string, err error) []*api.Status { func HandlePutDataErrors(statusList []*api.Status, errors string, err error) []*api.Status {
if err != nil { if err != nil {
log.Printf("Error: %v", err) log.Printf("Error: %v", err)
statusList = utils.AddStatus(statusList, "500", api.StatusType_ERROR, err.Error()) statusList = utils.AddStatus(statusList, "500", api.StatusType_ERROR, err.Error())
...@@ -75,8 +80,8 @@ func handlePutDataErrors(statusList []*api.Status, errors string, err error) []* ...@@ -75,8 +80,8 @@ func handlePutDataErrors(statusList []*api.Status, errors string, err error) []*
return statusList return statusList
} }
func readCertificateFromPEM(pemString []byte) (*x509.Certificate, error) { func ReadCertificateFromPEM(pemString []byte) (*x509.Certificate, error) {
certificatePemBlock, err := readPemBlockFromBytes(pemString) certificatePemBlock, err := ReadPemBlockFromBytes(pemString)
if err != nil { if err != nil {
log.Printf("Error: %v", err) log.Printf("Error: %v", err)
return nil, err return nil, err
...@@ -91,7 +96,7 @@ func readCertificateFromPEM(pemString []byte) (*x509.Certificate, error) { ...@@ -91,7 +96,7 @@ func readCertificateFromPEM(pemString []byte) (*x509.Certificate, error) {
return certificate, nil return certificate, nil
} }
func readPemBlockFromBytes(pemString []byte) (*pem.Block, error) { func ReadPemBlockFromBytes(pemString []byte) (*pem.Block, error) {
fileBytes := pemString fileBytes := pemString
certificatePemBlock, _ := pem.Decode(fileBytes) certificatePemBlock, _ := pem.Decode(fileBytes)
...@@ -99,8 +104,8 @@ func readPemBlockFromBytes(pemString []byte) (*pem.Block, error) { ...@@ -99,8 +104,8 @@ func readPemBlockFromBytes(pemString []byte) (*pem.Block, error) {
return certificatePemBlock, nil return certificatePemBlock, nil
} }
func readCertificateFromFile(fileName string) (*x509.Certificate, error) { func ReadCertificateFromFile(fileName string) (*x509.Certificate, error) {
certificatePemBlock, err := readPemBlockFromFile(fileName) certificatePemBlock, err := ReadPemBlockFromFile(fileName)
if err != nil { if err != nil {
log.Printf("Error: %v", err) log.Printf("Error: %v", err)
return nil, err return nil, err
...@@ -115,7 +120,7 @@ func readCertificateFromFile(fileName string) (*x509.Certificate, error) { ...@@ -115,7 +120,7 @@ func readCertificateFromFile(fileName string) (*x509.Certificate, error) {
return certificate, nil return certificate, nil
} }
func readPemBlockFromFile(fileName string) (*pem.Block, error) { func ReadPemBlockFromFile(fileName string) (*pem.Block, error) {
fileBytes, err := ioutil.ReadFile(fileName) fileBytes, err := ioutil.ReadFile(fileName)
if err != nil { if err != nil {
log.Printf("Error: %v", err) log.Printf("Error: %v", err)
...@@ -127,7 +132,7 @@ func readPemBlockFromFile(fileName string) (*pem.Block, error) { ...@@ -127,7 +132,7 @@ func readPemBlockFromFile(fileName string) (*pem.Block, error) {
return certificatePemBlock, nil return certificatePemBlock, nil
} }
func getKey(client *client.DataStorageClientImpl, uuid string, keyType api.KeyType) (*api.Key, []*api.Status) { func GetKey(client *client.DataStorageClientImpl, uuid string, keyType api.KeyType) (*api.Key, []*api.Status) {
statusList := []*api.Status{} statusList := []*api.Status{}
data, _ := client.DoGetDataCall("keys", uuid+"/"+api.KeyType.String(keyType)) data, _ := client.DoGetDataCall("keys", uuid+"/"+api.KeyType.String(keyType))
...@@ -141,3 +146,8 @@ func getKey(client *client.DataStorageClientImpl, uuid string, keyType api.KeyTy ...@@ -141,3 +146,8 @@ func getKey(client *client.DataStorageClientImpl, uuid string, keyType api.KeyTy
return key, nil return key, nil
} }
func CreateDataStorageClient(auth *authentication.Authentication) *dsclient.DataStorageClientImpl {
return clientutils.CreateDataStorageClient(auth, config.DataStorageUrl, config.CertificatePEM,
config.PrivateKeyPEM, config.CaCertificatePEM, config.MaxMessageSize)
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment