cmd: add export-secret-keys

This commit is contained in:
Simon Ser 2019-04-23 00:03:20 +03:00
parent ba96d886d8
commit 605e2a5f9c
No known key found for this signature in database
GPG Key ID: 0FDE7BE0E88F5E48
1 changed files with 38 additions and 0 deletions

View File

@ -15,6 +15,8 @@ import (
imapserver "github.com/emersion/go-imap/server" imapserver "github.com/emersion/go-imap/server"
"github.com/emersion/go-smtp" "github.com/emersion/go-smtp"
"github.com/howeyc/gopass" "github.com/howeyc/gopass"
"golang.org/x/crypto/openpgp"
"golang.org/x/crypto/openpgp/armor"
"github.com/emersion/hydroxide/auth" "github.com/emersion/hydroxide/auth"
"github.com/emersion/hydroxide/carddav" "github.com/emersion/hydroxide/carddav"
@ -60,6 +62,9 @@ func main() {
switch flag.Arg(0) { switch flag.Arg(0) {
case "auth": case "auth":
username := flag.Arg(1) username := flag.Arg(1)
if username == "" {
log.Fatal("usage: hydroxide auth <username>")
}
c := newClient() c := newClient()
@ -152,6 +157,39 @@ func main() {
fmt.Printf("- %v\n", u) fmt.Printf("- %v\n", u)
} }
} }
case "export-secret-keys":
username := flag.Arg(1)
if username == "" {
log.Fatal("usage: hydroxide export-secret-keys <username>")
}
var bridgePassword string
fmt.Printf("Bridge password: ")
if pass, err := gopass.GetPasswd(); err != nil {
log.Fatal(err)
} else {
bridgePassword = string(pass)
}
_, privateKeys, err := auth.NewManager(newClient).Auth(username, bridgePassword)
if err != nil {
log.Fatal(err)
}
wc, err := armor.Encode(os.Stdout, openpgp.PrivateKeyType, nil)
if err != nil {
log.Fatal(err)
}
for _, key := range privateKeys {
if err := key.SerializePrivate(wc, nil); err != nil {
log.Fatal(err)
}
}
if err := wc.Close(); err != nil {
log.Fatal(err)
}
case "smtp": case "smtp":
port := os.Getenv("PORT") port := os.Getenv("PORT")
if port == "" { if port == "" {