Initial cloud-services repo - gateway service + pkg modules
This commit is contained in:
98
pkg/db/queries/signed_images.go
Normal file
98
pkg/db/queries/signed_images.go
Normal file
@@ -0,0 +1,98 @@
|
||||
package queries
|
||||
|
||||
import (
|
||||
"fiskerinc.com/modules/common"
|
||||
s "fiskerinc.com/modules/security"
|
||||
"github.com/go-pg/pg/v10/orm"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
type SignedImagesInterface interface {
|
||||
Insert(SignedImage common.SignedImage) (orm.Result, error)
|
||||
SelectAll() ([]common.SignedImage, error)
|
||||
SelectBySupplier(email string) (common.SignedImage, error)
|
||||
DeleteSigningCert(supplier_cert common.SupplierSigningCert) (orm.Result, error)
|
||||
GetSigningCert(supplier string, keyCert string) (common.SupplierSigningCert, error)
|
||||
InsertSigningCert(supplier_cert common.SupplierSigningCert) (orm.Result, error)
|
||||
}
|
||||
|
||||
type SignedImages struct {
|
||||
QueryBase
|
||||
}
|
||||
|
||||
func (si *SignedImages) Insert(signedImage common.SignedImage) (orm.Result, error) {
|
||||
return si.resultWithStack(si.GetDBConn().Model(&signedImage).Insert())
|
||||
}
|
||||
|
||||
// Selects all public keys and signatures
|
||||
func (si *SignedImages) SelectAll() ([]common.SignedImage, error) {
|
||||
signatures := []common.SignedImage{}
|
||||
|
||||
err := si.GetDBConn().Model(&signatures).Column("signature").Select()
|
||||
if err != nil {
|
||||
return nil, errors.WithStack(err)
|
||||
}
|
||||
|
||||
return signatures, nil
|
||||
}
|
||||
|
||||
// Selects all public keys and signatures
|
||||
func (si *SignedImages) SelectBySupplier(email string) (common.SignedImage, error) {
|
||||
signature := common.SignedImage{}
|
||||
|
||||
err := si.GetDBConn().Model(&signature).Where("email = ?", email).Order("created_at desc").Limit(1).Select()
|
||||
if err != nil {
|
||||
return signature, errors.WithStack(err)
|
||||
}
|
||||
|
||||
return signature, err
|
||||
}
|
||||
|
||||
func (si *SignedImages) decryptSigningCert(cert *common.SupplierSigningCert) error {
|
||||
enc := s.Encrypt{}
|
||||
encryptor, err := enc.GetEncryptor()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if cert.PrivateCertEncrypted != nil {
|
||||
key, err := encryptor.DecryptChunk(cert.PrivateCertEncrypted.Bytes())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
cert.PrivateCert.SetBytes(key)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (si *SignedImages) GetSigningCert(supplier string, keyCert string) (common.SupplierSigningCert, error) {
|
||||
cert := common.SupplierSigningCert{
|
||||
Supplier: supplier,
|
||||
KeyCert: keyCert,
|
||||
}
|
||||
err := si.GetDBConn().Model(&cert).WherePK().Limit(1).Select()
|
||||
if err != nil {
|
||||
return cert, errors.WithStack(err)
|
||||
}
|
||||
|
||||
err = si.decryptSigningCert(&cert)
|
||||
|
||||
return cert, err
|
||||
}
|
||||
|
||||
func (si *SignedImages) InsertSigningCert(supplier_cert common.SupplierSigningCert) (orm.Result, error) {
|
||||
enc := s.Encrypt{}
|
||||
encryptor, err := enc.GetEncryptor()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
supplier_cert.PrivateCertEncrypted = encryptor.EncryptChunk([]byte(supplier_cert.PrivateCert))
|
||||
|
||||
return si.insert(&supplier_cert)
|
||||
}
|
||||
|
||||
func (si *SignedImages) DeleteSigningCert(supplier_cert common.SupplierSigningCert) (orm.Result, error) {
|
||||
return si.delete(&supplier_cert)
|
||||
}
|
||||
Reference in New Issue
Block a user