aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--account.go2
-rw-r--r--challange_http.go8
-rw-r--r--challenge.go2
-rw-r--r--cmd/acme/solve_http.go8
-rw-r--r--cmd/acme/solve_webroot.go28
-rw-r--r--crypto.go4
-rw-r--r--desire.go4
7 files changed, 45 insertions, 11 deletions
diff --git a/account.go b/account.go
index abf10e2..95e2dde 100644
--- a/account.go
+++ b/account.go
@@ -92,7 +92,7 @@ func KeyAuthorization(s Thumber, token string) (string, error) {
}
func (a *Account) SaveKey(fname string) error {
- fd, err := CreateKeyFile(fname)
+ fd, err := CreatePrivFile(fname)
if err != nil {
return err
}
diff --git a/challange_http.go b/challange_http.go
index b1fe9c0..4bdcff1 100644
--- a/challange_http.go
+++ b/challange_http.go
@@ -9,8 +9,6 @@ import (
"path"
)
-const wellKnown = `/.well-known/acme-challenge/`
-
func init() {
registerSolver(ChallengeHTTP)
}
@@ -22,7 +20,7 @@ type httpChallenge struct {
}
func (c *httpChallenge) ServeHTTP(w http.ResponseWriter, r *http.Request) {
- if r.URL.Path == path.Join(wellKnown, c.Token) {
+ if r.URL.Path == path.Join(WellKnown, c.Token) {
io.WriteString(w, c.KeyAuthorization)
c.l.Close()
}
@@ -50,7 +48,7 @@ type webRoot struct {
}
func (c *webRoot) Solve() error {
- file := path.Join(c.Webroot, wellKnown, c.Token)
+ file := path.Join(c.Webroot, WellKnown, c.Token)
if err := os.MkdirAll(path.Dir(file), 0755); err != nil {
return err
}
@@ -58,6 +56,6 @@ func (c *webRoot) Solve() error {
}
func (c *webRoot) Abort() error {
- file := path.Join(c.Webroot, wellKnown, c.Token)
+ file := path.Join(c.Webroot, WellKnown, c.Token)
return os.Remove(file)
}
diff --git a/challenge.go b/challenge.go
index dc4a5eb..8357dc8 100644
--- a/challenge.go
+++ b/challenge.go
@@ -16,6 +16,8 @@ var (
errTimeOut = errors.New("time out")
)
+const WellKnown = `/.well-known/acme-challenge/`
+
func registerSolver(c ChallengeType) {
canSolve[c] = true
}
diff --git a/cmd/acme/solve_http.go b/cmd/acme/solve_http.go
index 24e9555..39efb4e 100644
--- a/cmd/acme/solve_http.go
+++ b/cmd/acme/solve_http.go
@@ -1,5 +1,11 @@
package main
-func Solve(token string) error {
+import "net/http"
+
+type httpChallenge struct {
+ http.Server
+}
+
+func (c *httpChallenge) Solve(token, keyAuth string) error {
return nil
}
diff --git a/cmd/acme/solve_webroot.go b/cmd/acme/solve_webroot.go
new file mode 100644
index 0000000..4d62f64
--- /dev/null
+++ b/cmd/acme/solve_webroot.go
@@ -0,0 +1,28 @@
+package main
+
+import (
+ "os"
+ "path"
+
+ "dim13.org/acme"
+)
+
+type webrootChallenge struct {
+ Webroot string
+ file string
+}
+
+func (c *webrootChallenge) Solve(token, keyAuth string) error {
+ c.file = path.Join(c.Webroot, acme.WellKnown, token)
+ fd, err := acme.CreatePubFile(c.file)
+ if err != nil {
+ return err
+ }
+ defer fd.Close()
+ _, err := fd.WriteString(keyAuth)
+ return err
+}
+
+func (c *webrootChallenge) Finish() error {
+ return os.Remove(c.file)
+}
diff --git a/crypto.go b/crypto.go
index c8fc656..21e2bb3 100644
--- a/crypto.go
+++ b/crypto.go
@@ -94,11 +94,11 @@ func LoadCert(r io.Reader) ([]*x509.Certificate, error) {
return x509.ParseCertificates(block.Bytes)
}
-func CreateKeyFile(fname string) (io.WriteCloser, error) {
+func CreatePrivFile(fname string) (io.WriteCloser, error) {
return createFile(fname, 0700)
}
-func CreateCertFile(fname string) (io.WriteCloser, error) {
+func CreatePubFile(fname string) (io.WriteCloser, error) {
return createFile(fname, 0755)
}
diff --git a/desire.go b/desire.go
index 3a5b741..31e77c3 100644
--- a/desire.go
+++ b/desire.go
@@ -23,7 +23,7 @@ func NewDesire(altnames []string, size int) (*Desire, error) {
}
func (d *Desire) SaveKey(fname string) error {
- fd, err := CreateKeyFile(fname)
+ fd, err := CreatePrivFile(fname)
if err != nil {
return err
}
@@ -32,7 +32,7 @@ func (d *Desire) SaveKey(fname string) error {
}
func (d *Desire) SaveCert(fname string) error {
- fd, err := CreateCertFile(fname)
+ fd, err := CreatePubFile(fname)
if err != nil {
return err
}