[cli] Improve logging for decryption error (#1242)

## Description
Related to #1237
## Tests
This commit is contained in:
Neeraj Gupta 2024-03-29 11:08:45 +05:30 committed by GitHub
parent 54d93647ef
commit bc45db51a9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 12 additions and 10 deletions

View file

@ -98,7 +98,8 @@ func DecryptChaChaBase64(data string, key []byte, nonce string) (string, []byte,
// Decode data from base64 // Decode data from base64
dataBytes, err := base64.StdEncoding.DecodeString(data) dataBytes, err := base64.StdEncoding.DecodeString(data)
if err != nil { if err != nil {
return "", nil, fmt.Errorf("invalid data: %v", err) // safe to log the encrypted data
return "", nil, fmt.Errorf("invalid base64 data %s: %v", data, err)
} }
// Decode nonce from base64 // Decode nonce from base64
nonceBytes, err := base64.StdEncoding.DecodeString(nonce) nonceBytes, err := base64.StdEncoding.DecodeString(nonce)

View file

@ -15,7 +15,7 @@ import (
"strings" "strings"
) )
var AppVersion = "0.1.12" var AppVersion = "0.1.13"
func main() { func main() {
cliDBPath, err := GetCLIConfigPath() cliDBPath, err := GetCLIConfigPath()

View file

@ -4,6 +4,7 @@ import (
"context" "context"
"encoding/json" "encoding/json"
"errors" "errors"
"fmt"
"github.com/ente-io/cli/internal/api" "github.com/ente-io/cli/internal/api"
eCrypto "github.com/ente-io/cli/internal/crypto" eCrypto "github.com/ente-io/cli/internal/crypto"
"github.com/ente-io/cli/pkg/model" "github.com/ente-io/cli/pkg/model"
@ -41,7 +42,7 @@ func MapCollectionToAlbum(ctx context.Context, collection api.Collection, holder
if collection.MagicMetadata != nil { if collection.MagicMetadata != nil {
_, encodedJsonBytes, err := eCrypto.DecryptChaChaBase64(collection.MagicMetadata.Data, collectionKey, collection.MagicMetadata.Header) _, encodedJsonBytes, err := eCrypto.DecryptChaChaBase64(collection.MagicMetadata.Data, collectionKey, collection.MagicMetadata.Header)
if err != nil { if err != nil {
return nil, err return nil, fmt.Errorf("failed to decrypt magic metadata for collection %d: %w", collection.ID, err)
} }
err = json.Unmarshal(encodedJsonBytes, &album.PrivateMeta) err = json.Unmarshal(encodedJsonBytes, &album.PrivateMeta)
if err != nil { if err != nil {
@ -51,21 +52,21 @@ func MapCollectionToAlbum(ctx context.Context, collection api.Collection, holder
if collection.PublicMagicMetadata != nil { if collection.PublicMagicMetadata != nil {
_, encodedJsonBytes, err := eCrypto.DecryptChaChaBase64(collection.PublicMagicMetadata.Data, collectionKey, collection.PublicMagicMetadata.Header) _, encodedJsonBytes, err := eCrypto.DecryptChaChaBase64(collection.PublicMagicMetadata.Data, collectionKey, collection.PublicMagicMetadata.Header)
if err != nil { if err != nil {
return nil, err return nil, fmt.Errorf("failed to decrypt public magic metadata for collection %d: %w", collection.ID, err)
} }
err = json.Unmarshal(encodedJsonBytes, &album.PublicMeta) err = json.Unmarshal(encodedJsonBytes, &album.PublicMeta)
if err != nil { if err != nil {
return nil, err return nil, fmt.Errorf("failed to unmarshal public magic metadata for collection %d: %w", collection.ID, err)
} }
} }
if album.IsShared && collection.SharedMagicMetadata != nil { if album.IsShared && collection.SharedMagicMetadata != nil {
_, encodedJsonBytes, err := eCrypto.DecryptChaChaBase64(collection.SharedMagicMetadata.Data, collectionKey, collection.SharedMagicMetadata.Header) _, encodedJsonBytes, err := eCrypto.DecryptChaChaBase64(collection.SharedMagicMetadata.Data, collectionKey, collection.SharedMagicMetadata.Header)
if err != nil { if err != nil {
return nil, err return nil, fmt.Errorf("failed to decrypt shared magic metadata for collection %d: %w", collection.ID, err)
} }
err = json.Unmarshal(encodedJsonBytes, &album.SharedMeta) err = json.Unmarshal(encodedJsonBytes, &album.SharedMeta)
if err != nil { if err != nil {
return nil, err return nil, fmt.Errorf("failed to unmarshal shared magic metadata for collection %d: %w", collection.ID, err)
} }
} }
return &album, nil return &album, nil
@ -99,7 +100,7 @@ func MapApiFileToPhotoFile(ctx context.Context, album model.RemoteAlbum, file ap
if file.Metadata.DecryptionHeader != "" { if file.Metadata.DecryptionHeader != "" {
_, encodedJsonBytes, err := eCrypto.DecryptChaChaBase64(file.Metadata.EncryptedData, fileKey, file.Metadata.DecryptionHeader) _, encodedJsonBytes, err := eCrypto.DecryptChaChaBase64(file.Metadata.EncryptedData, fileKey, file.Metadata.DecryptionHeader)
if err != nil { if err != nil {
return nil, err return nil, fmt.Errorf("failed to decrypt metadata for file %d: %w", file.ID, err)
} }
err = json.Unmarshal(encodedJsonBytes, &photoFile.Metadata) err = json.Unmarshal(encodedJsonBytes, &photoFile.Metadata)
if err != nil { if err != nil {
@ -109,7 +110,7 @@ func MapApiFileToPhotoFile(ctx context.Context, album model.RemoteAlbum, file ap
if file.MagicMetadata != nil { if file.MagicMetadata != nil {
_, encodedJsonBytes, err := eCrypto.DecryptChaChaBase64(file.MagicMetadata.Data, fileKey, file.MagicMetadata.Header) _, encodedJsonBytes, err := eCrypto.DecryptChaChaBase64(file.MagicMetadata.Data, fileKey, file.MagicMetadata.Header)
if err != nil { if err != nil {
return nil, err return nil, fmt.Errorf("failed to decrypt magic metadata for file %d: %w", file.ID, err)
} }
err = json.Unmarshal(encodedJsonBytes, &photoFile.PrivateMetadata) err = json.Unmarshal(encodedJsonBytes, &photoFile.PrivateMetadata)
if err != nil { if err != nil {
@ -119,7 +120,7 @@ func MapApiFileToPhotoFile(ctx context.Context, album model.RemoteAlbum, file ap
if file.PubicMagicMetadata != nil { if file.PubicMagicMetadata != nil {
_, encodedJsonBytes, err := eCrypto.DecryptChaChaBase64(file.PubicMagicMetadata.Data, fileKey, file.PubicMagicMetadata.Header) _, encodedJsonBytes, err := eCrypto.DecryptChaChaBase64(file.PubicMagicMetadata.Data, fileKey, file.PubicMagicMetadata.Header)
if err != nil { if err != nil {
return nil, err return nil, fmt.Errorf("failed to decrypt public magic metadata for file %d: %w", file.ID, err)
} }
err = json.Unmarshal(encodedJsonBytes, &photoFile.PublicMetadata) err = json.Unmarshal(encodedJsonBytes, &photoFile.PublicMetadata)
if err != nil { if err != nil {