Initial cloud-services repo - gateway service + pkg modules
This commit is contained in:
88
pkg/db/queries/symkeys.go
Normal file
88
pkg/db/queries/symkeys.go
Normal file
@@ -0,0 +1,88 @@
|
||||
package queries
|
||||
|
||||
import (
|
||||
"fiskerinc.com/modules/common"
|
||||
s "fiskerinc.com/modules/security"
|
||||
"github.com/go-pg/pg/v10/orm"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
type SymKeysInterface interface {
|
||||
Insert(keys common.SymKeys) (orm.Result, error)
|
||||
SelectAll() ([]common.SymKeys, error)
|
||||
SelectByVIN(vin string) (common.SymKeys, error)
|
||||
}
|
||||
|
||||
type SymKeys struct {
|
||||
QueryBase
|
||||
}
|
||||
|
||||
func (sk *SymKeys) Insert(keys common.SymKeys) (orm.Result, error) {
|
||||
enc := s.Encrypt{}
|
||||
encryptor, err := enc.GetEncryptor()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
keys.SecOC.SetBytes(encryptor.EncryptChunk(keys.SecOC.Bytes()))
|
||||
keys.SecureLogging.SetBytes(encryptor.EncryptChunk(keys.SecureLogging.Bytes()))
|
||||
keys.SecureStorage.SetBytes(encryptor.EncryptChunk(keys.SecureStorage.Bytes()))
|
||||
|
||||
return sk.GetDBConn().Model(&keys).Insert()
|
||||
}
|
||||
|
||||
func (sk *SymKeys) SelectAll() ([]common.SymKeys, error) {
|
||||
symkeys := []common.SymKeys{}
|
||||
|
||||
err := sk.GetDBConn().Model(&symkeys).Select()
|
||||
if err != nil {
|
||||
return nil, errors.WithStack(err)
|
||||
}
|
||||
|
||||
for i := range symkeys {
|
||||
err = sk.decrypt(&symkeys[i])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return symkeys, err
|
||||
}
|
||||
|
||||
func (sk *SymKeys) SelectByVIN(vin string) (common.SymKeys, error) {
|
||||
symkey := common.SymKeys{}
|
||||
|
||||
err := sk.GetDBConn().Model(&symkey).Where("vin = ?", vin).Select()
|
||||
if err != nil {
|
||||
return symkey, errors.WithStack(err)
|
||||
}
|
||||
|
||||
err = sk.decrypt(&symkey)
|
||||
return symkey, err
|
||||
}
|
||||
|
||||
func (sk *SymKeys) decrypt(symkeys *common.SymKeys) error {
|
||||
enc := s.Encrypt{}
|
||||
encryptor, err := enc.GetEncryptor()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
secoc, err := encryptor.DecryptChunk(symkeys.SecOC.Bytes())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
symkeys.SecOC.SetBytes(secoc)
|
||||
|
||||
logging, err := encryptor.DecryptChunk(symkeys.SecureLogging.Bytes())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
symkeys.SecureLogging.SetBytes(logging)
|
||||
|
||||
storage, err := encryptor.DecryptChunk(symkeys.SecureStorage.Bytes())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
symkeys.SecureStorage.SetBytes(storage)
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user