Initial commit
This commit is contained in:
		
							
								
								
									
										8
									
								
								go.mod
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										8
									
								
								go.mod
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					module kstorecred
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					go 1.17
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require (
 | 
				
			||||||
 | 
						github.com/danieljoos/wincred v1.1.2 // indirect
 | 
				
			||||||
 | 
						golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c // indirect
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
							
								
								
									
										10
									
								
								go.sum
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										10
									
								
								go.sum
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0=
 | 
				
			||||||
 | 
					github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0=
 | 
				
			||||||
 | 
					github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 | 
				
			||||||
 | 
					github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
				
			||||||
 | 
					github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 | 
				
			||||||
 | 
					github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c h1:Lyn7+CqXIiC+LOR9aHD6jDK+hPcmAuCfuXztd1v4w1Q=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
				
			||||||
 | 
					gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 | 
				
			||||||
 | 
					gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
				
			||||||
							
								
								
									
										82
									
								
								main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								main.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,82 @@
 | 
				
			|||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"os"
 | 
				
			||||||
 | 
						"path/filepath"
 | 
				
			||||||
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/danieljoos/wincred"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						CRED_NAME   = "RBASH-KSTORE"
 | 
				
			||||||
 | 
						SECRET_NAME = "_AUTH_SECRET"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func usage(stdfd *os.File) {
 | 
				
			||||||
 | 
						_name := filepath.Base(os.Args[0])
 | 
				
			||||||
 | 
						_space := strings.Repeat(" ", len(_name))
 | 
				
			||||||
 | 
						fmt.Fprintf(stdfd, "Usage: %s get\n", _name)
 | 
				
			||||||
 | 
						fmt.Fprintf(stdfd, "       %s set passphrase\n", _space)
 | 
				
			||||||
 | 
						fmt.Fprintf(stdfd, "       %s help\n", _space)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func getAuthSecret() (*wincred.GenericCredential, error) {
 | 
				
			||||||
 | 
						cred, err := wincred.GetGenericCredential(CRED_NAME)
 | 
				
			||||||
 | 
						return cred, err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func delAuthSecret() error {
 | 
				
			||||||
 | 
						cred, _ := getAuthSecret()
 | 
				
			||||||
 | 
						if cred == nil {
 | 
				
			||||||
 | 
							return nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return cred.Delete()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func setAuthSecret(newSecret string) error {
 | 
				
			||||||
 | 
						cred, _ := getAuthSecret()
 | 
				
			||||||
 | 
						if cred == nil {
 | 
				
			||||||
 | 
							cred = wincred.NewGenericCredential(CRED_NAME)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cred.CredentialBlob = []byte(newSecret)
 | 
				
			||||||
 | 
						return cred.Write()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func main() {
 | 
				
			||||||
 | 
						if len(os.Args) < 2 {
 | 
				
			||||||
 | 
							usage(os.Stderr)
 | 
				
			||||||
 | 
							os.Exit(1)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var err error
 | 
				
			||||||
 | 
						switch os.Args[1] {
 | 
				
			||||||
 | 
						case "get":
 | 
				
			||||||
 | 
							cred, _err := getAuthSecret()
 | 
				
			||||||
 | 
							if _err == nil {
 | 
				
			||||||
 | 
								fmt.Println(string(cred.CredentialBlob))
 | 
				
			||||||
 | 
								os.Exit(0)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							err = _err
 | 
				
			||||||
 | 
						case "set":
 | 
				
			||||||
 | 
							if len(os.Args[2:]) < 1 {
 | 
				
			||||||
 | 
								err = errors.New("passphrase is required")
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								err = setAuthSecret(os.Args[2])
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						case "del":
 | 
				
			||||||
 | 
							err = delAuthSecret()
 | 
				
			||||||
 | 
						case "help":
 | 
				
			||||||
 | 
							usage(os.Stdout)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if err == nil {
 | 
				
			||||||
 | 
							os.Exit(0)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fmt.Fprintln(os.Stderr, err)
 | 
				
			||||||
 | 
						os.Exit(1)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user