aboutsummaryrefslogtreecommitdiff
path: root/authorize.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-02-04 01:29:00 +0100
committerDimitri Sokolyuk <demon@dim13.org>2016-02-04 01:29:00 +0100
commit790f02ebf87e2e898ddd4c5c410a213857474bc6 (patch)
treedf4b4308252f1c39436d2a919a786de1ac68a577 /authorize.go
parent2fc776f0fe9b25848becc0b8b73af60313b971cb (diff)
kiss
Diffstat (limited to 'authorize.go')
-rw-r--r--authorize.go46
1 files changed, 14 insertions, 32 deletions
diff --git a/authorize.go b/authorize.go
index 4f16df4..e5e5d67 100644
--- a/authorize.go
+++ b/authorize.go
@@ -1,10 +1,6 @@
package acme
-import (
- "log"
- "sync"
- "time"
-)
+import "time"
// Authorization request
type Authorization struct {
@@ -47,8 +43,7 @@ func (a Authorization) Supported(sol map[ChalType]Solver) []Challenge {
return nil
}
-func (p *Provider) authz(s Signer, domain string, sol map[ChalType]Solver) error {
- // first step: pocke
+func (p *Provider) authz(s Signer, domain string, sol map[ChalType]Solver) ([]Challenge, error) {
req := &Authorization{
Resource: ResNewAuthz,
Identifier: Identifier{
@@ -58,40 +53,27 @@ func (p *Provider) authz(s Signer, domain string, sol map[ChalType]Solver) error
}
resp, err := p.post(p.NewAuthz, s, req)
if err != nil {
- return err
+ return nil, err
}
err = parseJson(resp, req)
if err != nil {
- return err
+ return nil, err
}
- // second step: choose and start solver
- wg := sync.WaitGroup{}
- for _, ch := range req.Supported(sol) {
- wg.Add(1)
- go func(ch Challenge) {
- err := p.solve(s, ch, sol[ch.Type])
- if err != nil {
- log.Println(err)
- }
- wg.Done()
- }(ch)
- }
- wg.Wait()
- return nil
+ return req.Supported(sol), nil
}
func (p *Provider) Authorize(s Signer, d *Desire) error {
- wg := sync.WaitGroup{}
for _, domain := range d.altnames {
- wg.Add(1)
- go func(domain string) {
- err := p.authz(s, domain, d.solver)
- if err != nil {
- log.Println(err)
+ chal, err := p.authz(s, domain, d.solver)
+ if err != nil {
+ return err
+ }
+ for _, ch := range chal {
+ sol := d.solver[ch.Type]
+ if err := p.solve(s, ch, sol); err != nil {
+ return err
}
- wg.Done()
- }(domain)
+ }
}
- wg.Wait()
return nil
}