mirror of
https://github.com/ProtonMail/proton-bridge.git
synced 2025-12-10 20:56:51 +00:00
Other: Don't encrypt vault version
This commit is contained in:
@ -83,14 +83,17 @@ func newLegacyVault[T any](t *testing.T, key []byte, version Version, data T) []
|
||||
gcm, err := cipher.NewGCM(aes)
|
||||
require.NoError(t, err)
|
||||
|
||||
b, err := msgpack.Marshal(data)
|
||||
require.NoError(t, err)
|
||||
|
||||
dec, err := msgpack.Marshal(File{Version: version, Data: b})
|
||||
require.NoError(t, err)
|
||||
|
||||
nonce, err := crypto.RandomToken(gcm.NonceSize())
|
||||
require.NoError(t, err)
|
||||
|
||||
return gcm.Seal(nonce, nonce, dec, nil)
|
||||
dec, err := msgpack.Marshal(data)
|
||||
require.NoError(t, err)
|
||||
|
||||
res, err := msgpack.Marshal(File{
|
||||
Version: version,
|
||||
Data: gcm.Seal(nonce, nonce, dec, nil),
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
return res
|
||||
}
|
||||
|
||||
@ -30,28 +30,25 @@ type File struct {
|
||||
Data []byte
|
||||
}
|
||||
|
||||
func unmarshalFile[T any](gcm cipher.AEAD, enc []byte, data *T) error {
|
||||
dec, err := gcm.Open(nil, enc[:gcm.NonceSize()], enc[gcm.NonceSize():], nil)
|
||||
func unmarshalFile[T any](gcm cipher.AEAD, b []byte, data *T) error {
|
||||
var f File
|
||||
|
||||
if err := msgpack.Unmarshal(b, &f); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
dec, err := gcm.Open(nil, f.Data[:gcm.NonceSize()], f.Data[gcm.NonceSize():], nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var f File
|
||||
|
||||
if err := msgpack.Unmarshal(dec, &f); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for v := f.Version; v < Current; v++ {
|
||||
b, err := upgrade(v, f.Data)
|
||||
if err != nil {
|
||||
if dec, err = upgrade(v, dec); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
f.Data = b
|
||||
}
|
||||
|
||||
if err := msgpack.Unmarshal(f.Data, data); err != nil {
|
||||
if err := msgpack.Unmarshal(dec, data); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -59,12 +56,7 @@ func unmarshalFile[T any](gcm cipher.AEAD, enc []byte, data *T) error {
|
||||
}
|
||||
|
||||
func marshalFile[T any](gcm cipher.AEAD, t T) ([]byte, error) {
|
||||
b, err := msgpack.Marshal(t)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
dec, err := msgpack.Marshal(File{Version: Current, Data: b})
|
||||
dec, err := msgpack.Marshal(t)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -74,5 +66,8 @@ func marshalFile[T any](gcm cipher.AEAD, t T) ([]byte, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return gcm.Seal(nonce, nonce, dec, nil), nil
|
||||
return msgpack.Marshal(File{
|
||||
Version: Current,
|
||||
Data: gcm.Seal(nonce, nonce, dec, nil),
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user