MCPcopy
hub / github.com/syncthing/syncthing / DecryptFileInfo

Function DecryptFileInfo

lib/protocol/encryption.go:402–423  ·  view source on GitHub ↗

DecryptFileInfo extracts the encrypted portion of a FileInfo, decrypts it and returns that.

(keyGen *KeyGenerator, fi FileInfo, folderKey *[keySize]byte)

Source from the content-addressed store, hash-verified

400// DecryptFileInfo extracts the encrypted portion of a FileInfo, decrypts it
401// and returns that.
402func DecryptFileInfo(keyGen *KeyGenerator, fi FileInfo, folderKey *[keySize]byte) (FileInfo, error) {
403 realName, err := decryptName(fi.Name, folderKey)
404 if err != nil {
405 return FileInfo{}, err
406 }
407
408 fileKey := keyGen.FileKey(realName, folderKey)
409 dec, err := DecryptBytes(fi.Encrypted, fileKey)
410 if err != nil {
411 return FileInfo{}, err
412 }
413
414 var decFI bep.FileInfo
415 if err := proto.Unmarshal(dec, &decFI); err != nil {
416 return FileInfo{}, err
417 }
418
419 // Preserve sequence, which is legitimately controlled by the untrusted device
420 decFI.Sequence = fi.Sequence
421
422 return FileInfoFromWire(&decFI), nil
423}
424
425var base32Hex = base32.HexEncoding.WithPadding(base32.NoPadding)
426

Callers 3

processMethod · 0.92
TestEnDecryptFileInfoFunction · 0.85
decryptFileInfosFunction · 0.85

Calls 5

decryptNameFunction · 0.85
DecryptBytesFunction · 0.85
FileInfoFromWireFunction · 0.85
FileKeyMethod · 0.80
UnmarshalMethod · 0.45

Tested by 1

TestEnDecryptFileInfoFunction · 0.68