MCPcopy Index your code
hub / github.com/syncthing/syncthing / loadEncryptedFileInfo

Function loadEncryptedFileInfo

cmd/syncthing/decrypt/decrypt.go:266–293  ·  view source on GitHub ↗

loadEncryptedFileInfo loads the encrypted FileInfo trailer from a file on disk.

(fd fs.File)

Source from the content-addressed store, hash-verified

264// loadEncryptedFileInfo loads the encrypted FileInfo trailer from a file on
265// disk.
266func loadEncryptedFileInfo(fd fs.File) (*protocol.FileInfo, error) {
267 // Seek to the size of the trailer block
268 if _, err := fd.Seek(-4, io.SeekEnd); err != nil {
269 return nil, err
270 }
271 var bs [4]byte
272 if _, err := io.ReadFull(fd, bs[:]); err != nil {
273 return nil, err
274 }
275 size := int64(binary.BigEndian.Uint32(bs[:]))
276
277 // Seek to the start of the trailer
278 if _, err := fd.Seek(-(4 + size), io.SeekEnd); err != nil {
279 return nil, err
280 }
281 trailer := make([]byte, size)
282 if _, err := io.ReadFull(fd, trailer); err != nil {
283 return nil, err
284 }
285
286 var encFi bep.FileInfo
287 if err := proto.Unmarshal(trailer, &encFi); err != nil {
288 return nil, err
289 }
290 fi := protocol.FileInfoFromWire(&encFi)
291
292 return &fi, nil
293}

Callers 1

processMethod · 0.85

Calls 3

FileInfoFromWireFunction · 0.92
SeekMethod · 0.45
UnmarshalMethod · 0.45

Tested by

no test coverage detected