@@ -34,10 +34,14 @@ var (
3434 // flags
3535 flagGitConfig = flag .Bool ("git-config" , false , "Configure git for strongbox use" )
3636 flagGenKey = flag .String ("gen-key" , "" , "Generate a new key and add it to your strongbox keyring" )
37- flagClean = flag .String ("clean" , "" , "intended to be called internally by git" )
38- flagSmudge = flag .String ("smudge" , "" , "intended to be called internally by git" )
39- flagDiff = flag .String ("diff" , "" , "intended to be called internally by git" )
40- flagVersion = flag .Bool ("version" , false , "Strongbox version" )
37+ flagDecrypt = flag .Bool ("decrypt" , false , "Decrypt single resource" )
38+ flagKey = flag .String ("key" , "" , "Private key to use to decrypt" )
39+
40+ flagClean = flag .String ("clean" , "" , "intended to be called internally by git" )
41+ flagSmudge = flag .String ("smudge" , "" , "intended to be called internally by git" )
42+ flagDiff = flag .String ("diff" , "" , "intended to be called internally by git" )
43+
44+ flagVersion = flag .Bool ("version" , false , "Strongbox version" )
4145
4246 version = ""
4347)
@@ -46,6 +50,8 @@ func usage() {
4650 fmt .Fprintf (os .Stderr , "Usage:\n \n " )
4751 fmt .Fprintf (os .Stderr , "\t strongbox -git-config\n " )
4852 fmt .Fprintf (os .Stderr , "\t strongbox -gen-key key-name\n " )
53+ fmt .Fprintf (os .Stderr , "\t strongbox -decrypt\n " )
54+ fmt .Fprintf (os .Stderr , "\t strongbox -key\n " )
4955 fmt .Fprintf (os .Stderr , "\t strongbox -version\n " )
5056 os .Exit (2 )
5157}
@@ -78,11 +84,6 @@ func main() {
7884 return
7985 }
8086
81- // only a single flag has been set
82- if flag .NFlag () != 1 {
83- usage ()
84- }
85-
8687 if * flagGitConfig {
8788 gitConfig ()
8889 return
@@ -93,6 +94,14 @@ func main() {
9394 return
9495 }
9596
97+ if * flagDecrypt {
98+ if * flagKey == "" {
99+ log .Fatalf ("Must provide a key when using -decrypt" )
100+ }
101+ decryptCLI ()
102+ return
103+ }
104+
96105 if * flagClean != "" {
97106 clean (os .Stdin , os .Stdout , * flagClean )
98107 return
@@ -107,6 +116,29 @@ func main() {
107116 }
108117}
109118
119+ func decryptCLI () {
120+ var fn string
121+ if flag .Arg (0 ) == "" {
122+ // no file passed, try to read stdin
123+ fn = "/dev/stdin"
124+ } else {
125+ fn = flag .Arg (0 )
126+ }
127+ fb , err := ioutil .ReadFile (fn )
128+ if err != nil {
129+ log .Fatalf ("Unable to read file to decrypt %v" , err )
130+ }
131+ dk , err := decode ([]byte (* flagKey ))
132+ if err != nil {
133+ log .Fatalf ("Unable to decode private key %v" , err )
134+ }
135+ out , err := decrypt (fb , dk )
136+ if err != nil {
137+ log .Fatalf ("Unable to decrupt %v" , err )
138+ }
139+ fmt .Printf ("%s" , out )
140+ }
141+
110142func gitConfig () {
111143 args := [][]string {
112144 {"config" , "--global" , "--replace-all" , "filter.strongbox.clean" , "strongbox -clean %f" },
0 commit comments