MCPcopy
hub / github.com/syncthing/syncthing / FileKey

Method FileKey

lib/protocol/encryption.go:590–605  ·  view source on GitHub ↗
(filename string, folderKey *[keySize]byte)

Source from the content-addressed store, hash-verified

588}
589
590func (g *KeyGenerator) FileKey(filename string, folderKey *[keySize]byte) *[keySize]byte {
591 g.mut.Lock()
592 defer g.mut.Unlock()
593 cacheKey := fileKeyCacheKey{filename, *folderKey}
594 if key, ok := g.fileKeys.Get(cacheKey); ok {
595 return key
596 }
597 kdf := hkdf.New(sha256.New, append(folderKey[:], filename...), hkdfSalt, nil)
598 var fileKey [keySize]byte
599 n, err := io.ReadFull(kdf, fileKey[:])
600 if err != nil || n != keySize {
601 panic("hkdf failure")
602 }
603 g.fileKeys.Add(cacheKey, &fileKey)
604 return &fileKey
605}
606
607func PasswordToken(keyGen *KeyGenerator, folderID, password string) []byte {
608 return encryptDeterministic(knownBytes(folderID), keyGen.KeyFromPassword(folderID, password), nil)

Callers 6

TestKeyDerivationFunction · 0.80
RequestMethod · 0.80
RequestMethod · 0.80
encryptFileInfoFunction · 0.80
DecryptFileInfoFunction · 0.80
decryptFileMethod · 0.80

Calls 4

UnlockMethod · 0.80
GetMethod · 0.65
NewMethod · 0.65
AddMethod · 0.45

Tested by 1

TestKeyDerivationFunction · 0.64