cmd: add export-secret-keys
This commit is contained in:
parent
ba96d886d8
commit
605e2a5f9c
|
@ -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 == "" {
|
||||||
|
|
Loading…
Reference in New Issue