Skip to content
Snippets Groups Projects
Commit 1ca20e5b authored by Niall Sheridan's avatar Niall Sheridan
Browse files

Open the browser automatically

parent dda973d0
No related branches found
No related tags found
No related merge requests found
...@@ -13,13 +13,14 @@ import ( ...@@ -13,13 +13,14 @@ import (
"time" "time"
"github.com/nsheridan/cashier/lib" "github.com/nsheridan/cashier/lib"
"github.com/pkg/browser"
"golang.org/x/crypto/ssh" "golang.org/x/crypto/ssh"
"golang.org/x/crypto/ssh/agent" "golang.org/x/crypto/ssh/agent"
) )
var ( var (
url = flag.String("url", "http://localhost:10000/sign", "Signing URL") ca = flag.String("ca", "http://localhost:10000", "CA server")
keybits = flag.Int("bits", 4096, "Key size") keybits = flag.Int("bits", 4096, "Key size. Ignored for ed25519 keys")
validity = flag.Duration("validity", time.Hour*24, "Key validity") validity = flag.Duration("validity", time.Hour*24, "Key validity")
keytype = flag.String("key_type", "rsa", "Type of private key to generate - rsa, ecdsa or ed25519") keytype = flag.String("key_type", "rsa", "Type of private key to generate - rsa, ecdsa or ed25519")
) )
...@@ -37,7 +38,7 @@ func installCert(a agent.Agent, cert *ssh.Certificate, key key) error { ...@@ -37,7 +38,7 @@ func installCert(a agent.Agent, cert *ssh.Certificate, key key) error {
} }
func send(s []byte, token string) (*lib.SignResponse, error) { func send(s []byte, token string) (*lib.SignResponse, error) {
req, err := http.NewRequest("POST", *url, bytes.NewReader(s)) req, err := http.NewRequest("POST", *ca+"/sign", bytes.NewReader(s))
if err != nil { if err != nil {
return nil, err return nil, err
} }
...@@ -95,6 +96,10 @@ func sign(pub ssh.PublicKey, token string) (*ssh.Certificate, error) { ...@@ -95,6 +96,10 @@ func sign(pub ssh.PublicKey, token string) (*ssh.Certificate, error) {
func main() { func main() {
flag.Parse() flag.Parse()
fmt.Printf("Your browser has been opened to visit %s\n", *ca)
if err := browser.OpenURL(*ca); err != nil {
fmt.Println("Error launching web browser. Go to the link in your web browser")
}
priv, pub, err := generateKey(*keytype, *keybits) priv, pub, err := generateKey(*keytype, *keybits)
if err != nil { if err != nil {
log.Fatalln("Error generating key pair: ", err) log.Fatalln("Error generating key pair: ", err)
......
...@@ -48,7 +48,7 @@ func (s *KeySigner) SignUserKey(req *lib.SignRequest) (string, error) { ...@@ -48,7 +48,7 @@ func (s *KeySigner) SignUserKey(req *lib.SignRequest) (string, error) {
marshaled := ssh.MarshalAuthorizedKey(cert) marshaled := ssh.MarshalAuthorizedKey(cert)
// Remove the trailing newline. // Remove the trailing newline.
marshaled = marshaled[:len(marshaled)-1] marshaled = marshaled[:len(marshaled)-1]
log.Printf("Issued cert %s principals: %s fp: %s valid until: %s\n", cert.KeyId, cert.ValidPrincipals, fingerprint(pubkey), time.Unix(int64(cert.ValidBefore), 0).UTC()) log.Printf("Issued cert id: %s principals: %s fp: %s valid until: %s\n", cert.KeyId, cert.ValidPrincipals, fingerprint(pubkey), time.Unix(int64(cert.ValidBefore), 0).UTC())
return string(marshaled), nil return string(marshaled), nil
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment