MCPcopy Create free account
hub / github.com/Mister-leo/fssh / cmdRekey

Function cmdRekey

cmd/fssh/main.go:247–266  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

245}
246
247func cmdRekey() {
248 fs := flag.NewFlagSet("rekey", flag.ExitOnError)
249 fs.Parse(os.Args[2:])
250 old, err := keychain.LoadMasterKey()
251 if err != nil { fatal(err) }
252 newk := make([]byte, 32)
253 if _, err := io.ReadFull(rand.Reader, newk); err != nil { fatal(err) }
254 dir := store.KeysDir()
255 entries, err := os.ReadDir(dir)
256 if err != nil && !os.IsNotExist(err) { fatal(err) }
257 for _, e := range entries {
258 if e.IsDir() || !strings.HasSuffix(e.Name(), ".enc") { continue }
259 alias := strings.TrimSuffix(e.Name(), ".enc")
260 rec, err := store.LoadDecryptedRecord(alias, old)
261 if err != nil { fatal(err) }
262 if err := store.SaveEncryptedRecord(rec, newk); err != nil { fatal(err) }
263 }
264 if err := keychain.StoreMasterKey(newk, true); err != nil { fatal(err) }
265 fmt.Println("rekeyed master key and re-encrypted all records")
266}
267
268func fatal(err error) {
269 fmt.Fprintln(os.Stderr, "error:", err)

Callers 1

mainFunction · 0.85

Calls 6

LoadMasterKeyFunction · 0.92
KeysDirFunction · 0.92
LoadDecryptedRecordFunction · 0.92
SaveEncryptedRecordFunction · 0.92
StoreMasterKeyFunction · 0.92
fatalFunction · 0.85

Tested by

no test coverage detected