Added test for crypt (#1)

* Added test for crypt

* Added test for crypt

* Added test for crypt

* Added test for crypt

* Added test for crypt
This commit is contained in:
Ron Rise
2024-05-01 20:09:49 -04:00
committed by GitHub
parent f0caa47efa
commit c535e69ad4
4 changed files with 172 additions and 38 deletions

View File

@@ -1,27 +1,13 @@
package commands
import (
"crypto/rand"
"crypto/rsa"
"crypto/x509"
"encoding/pem"
"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 bitSize == 0 {
bitSize = 4096
}
if bitSize < 2048 {
return fmt.Errorf("key to weak. size must be greater than 2048")
}
if bitSize > 16384 {
return fmt.Errorf("key to large. size must be less than 16384")
}
if _, err := os.Stat(path); err == nil && !overwrite {
return fmt.Errorf("key file already exists - use another filename or -force (-F) to overwrite")
@@ -31,41 +17,24 @@ func GenerateKeypair(bitSize uint, path string, overwrite bool) error {
c := make(chan bool)
go p.LogSpinner("Generating RSA key...", c)
key, err := rsa.GenerateKey(rand.Reader, int(bitSize))
keyPem, pubPem, err := crypt.GenerateKeyPair(int(bitSize))
c <- true
if err != nil {
return err
}
pub := key.Public()
keyPEM := pem.EncodeToMemory(
&pem.Block{
Type: "RSA PRIVATE KEY",
Bytes: x509.MarshalPKCS1PrivateKey(key),
},
)
pubPEM := pem.EncodeToMemory(
&pem.Block{
Type: "RSA PUBLIC KEY",
Bytes: x509.MarshalPKCS1PublicKey(pub.(*rsa.PublicKey)),
},
)
p.LogInfo("Writing private key...")
err = os.WriteFile(path, keyPEM, 0600)
err = os.WriteFile(path, keyPem, 0600)
if err != nil {
return err
}
p.LogInfo("Writing public key...")
err = os.WriteFile(path+".pub", pubPEM, 0644)
err = os.WriteFile(path+".pub", pubPem, 0644)
if err != nil {
return err
}
p.LogSuccess("Done!")
return nil
}