You've already forked rsa-file-encryption
* Added test for crypt * Added test for crypt * Added test for crypt * Added test for crypt * Added test for crypt
41 lines
815 B
Go
41 lines
815 B
Go
package commands
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/siteworxpro/rsa-file-encryption/crypt"
|
|
"github.com/siteworxpro/rsa-file-encryption/printer"
|
|
"os"
|
|
)
|
|
|
|
func GenerateKeypair(bitSize uint, path string, overwrite bool) error {
|
|
|
|
if _, err := os.Stat(path); err == nil && !overwrite {
|
|
return fmt.Errorf("key file already exists - use another filename or -force (-F) to overwrite")
|
|
}
|
|
|
|
p := printer.NewPrinter()
|
|
c := make(chan bool)
|
|
|
|
go p.LogSpinner("Generating RSA key...", c)
|
|
|
|
keyPem, pubPem, err := crypt.GenerateKeyPair(int(bitSize))
|
|
|
|
c <- true
|
|
|
|
p.LogInfo("Writing private key...")
|
|
err = os.WriteFile(path, keyPem, 0600)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
p.LogInfo("Writing public key...")
|
|
err = os.WriteFile(path+".pub", pubPem, 0644)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
p.LogSuccess("Done!")
|
|
|
|
return nil
|
|
}
|