diff --git a/key.go b/keygenerator/key.go similarity index 84% rename from key.go rename to keygenerator/key.go index 713cee2..12fd14f 100644 --- a/key.go +++ b/keygenerator/key.go @@ -1,18 +1,19 @@ -package main +package keygenerator import ( "crypto/rand" "crypto/rsa" "encoding/json" "errors" + "github.com/didiercrunch/ecrypto/keys" "github.com/didiercrunch/ecrypto/shared" "os" "path" ) type KeyGenerator struct { - publicKey *PublicKey - privateKey *PrivateKey + publicKey *keys.PublicKey + privateKey *keys.PrivateKey } func (this *KeyGenerator) ensureDirectoryExists(dir string) error { @@ -53,10 +54,10 @@ func (this *KeyGenerator) createRSAKey(size int) error { return errors.New("cannot generate the rsa public/private key pair\n" + err.Error()) } - if this.privateKey, err = GetDefaultRSAPrivateKey(rsaPrivateKey); err != nil { + if this.privateKey, err = keys.GetDefaultRSAPrivateKey(rsaPrivateKey); err != nil { return errors.New("cannot generate the rsa public/private key pair\n" + err.Error()) } - this.publicKey = GetDefaultRSAPublicKey(&rsaPrivateKey.PublicKey) + this.publicKey = keys.GetDefaultRSAPublicKey(&rsaPrivateKey.PublicKey) return nil } diff --git a/key_test.go b/keygenerator/key_test.go similarity index 93% rename from key_test.go rename to keygenerator/key_test.go index 5f5b285..30498b9 100644 --- a/key_test.go +++ b/keygenerator/key_test.go @@ -1,7 +1,8 @@ -package main +package keygenerator import ( "encoding/json" + "github.com/didiercrunch/ecrypto/keys" "io/ioutil" "os" "path" @@ -43,7 +44,7 @@ func TestSaveKeyAsJSON(t *testing.T) { t.Error(err) return } - pk := new(PrivateKey) + pk := new(keys.PrivateKey) if err := json.Unmarshal(data, pk); err != nil { t.Error(err) return diff --git a/marshal.go b/keys/key_generator.go similarity index 94% rename from marshal.go rename to keys/key_generator.go index 9e957cc..3cb40e8 100644 --- a/marshal.go +++ b/keys/key_generator.go @@ -1,10 +1,11 @@ -package main +package keys import ( "crypto/rsa" "encoding/json" "errors" "fmt" + "github.com/didiercrunch/ecrypto/shared" "math/big" ) @@ -143,7 +144,7 @@ func GetDefaultRSAPublicKey(publicKey *rsa.PublicKey) *PublicKey { DEFAULT_BLOCK_CYPHER_MODE, DEFAULT_HASH_FUNCTION, } - return &PublicKey{Type: "RSA", Version: VERSION, Key: key, Accept: accept} + return &PublicKey{Type: "RSA", Version: shared.VERSION, Key: key, Accept: accept} } func GetDefaultRSAPrivateKey(publicKey *rsa.PrivateKey) (*PrivateKey, error) { @@ -156,5 +157,5 @@ func GetDefaultRSAPrivateKey(publicKey *rsa.PrivateKey) (*PrivateKey, error) { DEFAULT_BLOCK_CYPHER_MODE, DEFAULT_HASH_FUNCTION, } - return &PrivateKey{Type: "RSA", Version: VERSION, Key: key, Accept: accept}, nil + return &PrivateKey{Type: "RSA", Version: shared.VERSION, Key: key, Accept: accept}, nil } diff --git a/marshal_test.go b/keys/key_generator_test.go similarity index 99% rename from marshal_test.go rename to keys/key_generator_test.go index 15f2e3e..87c9790 100644 --- a/marshal_test.go +++ b/keys/key_generator_test.go @@ -1,4 +1,4 @@ -package main +package keys import ( "crypto/rsa" diff --git a/main.go b/main.go index 50e6902..ea9d263 100644 --- a/main.go +++ b/main.go @@ -3,20 +3,34 @@ package main import ( "fmt" "github.com/codegangsta/cli" + "github.com/didiercrunch/ecrypto/keygenerator" "os" ) -const VERSION = "0.0.1" - var createKeyCommand = cli.Command{ Name: "createkey", Usage: "create a pair of public/private key", Flags: []cli.Flag{ cli.IntFlag{Name: "size, s", Value: 2048, Usage: "key size in bits"}, - cli.StringFlag{Name: "password, p", Value: "", Usage: "password to access the private key"}, }, Action: func(c *cli.Context) { - keyGenerator := new(KeyGenerator) + keyGenerator := new(keygenerator.KeyGenerator) + fmt.Println("creating key") + if err := keyGenerator.CreateNewKey(c.Int("size")); err != nil { + fmt.Println("error while creating the key\n", err) + } + }, +} + +var encryptFileCommand = cli.Command{ + Name: "encrypt", + Usage: "encrypt file or directory", + Flags: []cli.Flag{ + cli.StringFlag{Name: "file, s", Value: "", Usage: "the file or directory to encrypt."}, + cli.StringFlag{Name: "publicKey, k", Value: "", Usage: "the public key to use to encrypt"}, + }, + Action: func(c *cli.Context) { + keyGenerator := new(keygenerator.KeyGenerator) fmt.Println("creating key") if err := keyGenerator.CreateNewKey(c.Int("size")); err != nil { fmt.Println("error while creating the key\n", err) @@ -30,6 +44,7 @@ func main() { app.Usage = "encrypt files" app.Commands = []cli.Command{ createKeyCommand, + encryptFileCommand, } app.Run(os.Args) diff --git a/main_test.go b/main_test.go index 22326b0..55abaae 100644 --- a/main_test.go +++ b/main_test.go @@ -12,14 +12,11 @@ func TestCreateKeyCommand(t *testing.T) { if c.Int("size") != 22 { t.Error("wrong size") } - if c.String("password") != "money" { - t.Error("wrong password") - } hasBeenCalled = true } app := cli.NewApp() app.Commands = []cli.Command{c} - args := []string{"file", "createkey", "-size", "22", "-password", "money"} + args := []string{"file", "createkey", "-size", "22"} app.Run(args) if !hasBeenCalled { t.Error("sub command *createkey* has not been called") diff --git a/shared/shared.go b/shared/shared.go index 0bab71b..54abe9e 100644 --- a/shared/shared.go +++ b/shared/shared.go @@ -7,6 +7,8 @@ import ( "path" ) +const VERSION = "0.0.1" + var ecryptoDir string func ensureEcryptoDirectoryIsOkay(dir string) error {