mirror of
https://github.com/passbolt/go-passbolt.git
synced 2025-06-28 14:59:35 +00:00
Add Ability to use old Metadata keys for Decryption
This commit is contained in:
parent
afa8198bd6
commit
96ea566b37
1 changed files with 15 additions and 6 deletions
|
@ -7,18 +7,27 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/ProtonMail/gopenpgp/v3/crypto"
|
||||||
"github.com/passbolt/go-passbolt/api"
|
"github.com/passbolt/go-passbolt/api"
|
||||||
"github.com/santhosh-tekuri/jsonschema"
|
"github.com/santhosh-tekuri/jsonschema"
|
||||||
)
|
)
|
||||||
|
|
||||||
func GetResourceMetadata(ctx context.Context, c *api.Client, resource *api.Resource, rType *api.ResourceType) (string, error) {
|
func GetResourceMetadata(ctx context.Context, c *api.Client, resource *api.Resource, rType *api.ResourceType) (string, error) {
|
||||||
_, _, metadatakey, err := GetMetadataKey(ctx, c, resource.MetadataKeyType == api.MetadataKeyTypeUserKey)
|
var metadatakey *crypto.Key
|
||||||
if err != nil {
|
if resource.MetadataKeyType == api.MetadataKeyTypeUserKey {
|
||||||
return "", fmt.Errorf("Get Metadata Key: %w", err)
|
tmp, err := c.GetUserPrivateKeyCopy()
|
||||||
|
if err != nil {
|
||||||
|
return "", fmt.Errorf("Get Private Key Copy: %w", err)
|
||||||
|
}
|
||||||
|
metadatakey = tmp
|
||||||
|
} else {
|
||||||
|
key, err := GetMetadataKeyById(ctx, c, resource.MetadataKeyID)
|
||||||
|
if err != nil {
|
||||||
|
return "", fmt.Errorf("Get Metadata Key by ID: %w", err)
|
||||||
|
}
|
||||||
|
metadatakey = key
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO should we instead get the Metadata key of this resource by id?
|
|
||||||
|
|
||||||
decMetadata, err := c.DecryptMetadata(metadatakey, resource.Metadata)
|
decMetadata, err := c.DecryptMetadata(metadatakey, resource.Metadata)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", fmt.Errorf("Decrypt Metadata: %w", err)
|
return "", fmt.Errorf("Decrypt Metadata: %w", err)
|
||||||
|
@ -78,7 +87,7 @@ func validateMetadata(rType *api.ResourceType, metadata string) error {
|
||||||
|
|
||||||
err = schema.Validate(strings.NewReader(metadata))
|
err = schema.Validate(strings.NewReader(metadata))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Validating Secret Data: %w", err)
|
return fmt.Errorf("Validating Metadata with Schema: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue