From 590982ab2f9f70dd59af19997e7888daa2a911bd Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 12 Jan 2016 16:50:42 +0100 Subject: Split --- provider.go | 65 ++++++++++++++++++++++++++++++++++++------------------------- 1 file changed, 39 insertions(+), 26 deletions(-) (limited to 'provider.go') diff --git a/provider.go b/provider.go index 4e69783..0266281 100644 --- a/provider.go +++ b/provider.go @@ -188,6 +188,36 @@ func (p *Provider) Register(s Signer, c Contacts) error { return err } +func (p *Provider) solve(s ThumbSigner, ch Challenge) error { + thumb, err := s.Thumb() + if err != nil { + return err + } + ka := ch.Token + "." + thumb + r := &Challenge{ + Resource: ResChallenge, + Type: ch.Type, + KeyAuthorization: ka, + } + ns, err := p.postJson(ch.URI, s, r) + if err != nil { + return err + } + err = ch.Solve(ch.Token, ka) + if err != nil { + return err + } + var done bool + for !done { + done, err = p.queryStatus(ns.Location) + if err != nil { + return err + } + time.Sleep(time.Second) + } + return nil +} + func (p *Provider) Authorize(s ThumbSigner, d *Desire) error { for _, domain := range d.altnames { r := &Authorization{ @@ -201,33 +231,9 @@ func (p *Provider) Authorize(s ThumbSigner, d *Desire) error { } for _, ch := range d.Pick(r) { - ka, _ := KeyAuthorization(s, ch.Token) - - ans := &Challenge{ - Resource: ResChallenge, - Type: ch.Type, - KeyAuthorization: ka, - } - - ns, err := p.postJson(ch.URI, s, ans) - if err != nil { + if err = p.solve(s, ch); err != nil { return err } - - //err = d.solver[ch.Type].Solve(ch.Token, ka) - err = ch.Solve(ch.Token, ka) - if err != nil { - return err - } - - var done bool - for !done { - done, err = p.queryStatus(ns.Location) - if err != nil { - return err - } - time.Sleep(time.Second) - } } } return nil @@ -241,7 +247,14 @@ func (p *Provider) queryStatus(url string) (bool, error) { return false, err } log.Println("status", r.Status) - return r.Status == StatusValid, nil + switch r.Status { + case StatusValid: + return true, nil + case StatusPending: + return false, nil + default: + return false, errStatus + } } func (p *Provider) newCert(uri string, s Signer, d *Desire) (*x509.Certificate, nextStep, error) { -- cgit v1.2.3