// Copyright (C) 2019 Storj Labs, Inc. // See LICENSE for copying information. package setup import ( "os" "github.com/zeebo/errs" ) // SaveEncryptionKey generates a Storj key from the inputKey and save it into a // new file created in filepath. func SaveEncryptionKey(inputKey string, filepath string) error { switch { case len(inputKey) == 0: return Error.New("inputKey is empty") case filepath == "": return Error.New("filepath is empty") } file, err := os.OpenFile(filepath, os.O_CREATE|os.O_EXCL|os.O_WRONLY, 0600) if err != nil { if os.IsNotExist(err) { return Error.New("directory path doesn't exist. %+v", err) } if os.IsExist(err) { return Error.New("file key already exists. %+v", err) } return Error.Wrap(err) } defer func() { err = Error.Wrap(errs.Combine(err, file.Close())) }() _, err = file.Write([]byte(inputKey)) return err }