From 83804cb3971d32b460783eb934592a6e6c821e6d Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Mon, 11 Jan 2016 19:14:07 +0100 Subject: Split a bit --- provider.go | 65 +++++++++++++++++++++++++++++++++---------------------------- 1 file changed, 35 insertions(+), 30 deletions(-) (limited to 'provider.go') diff --git a/provider.go b/provider.go index ec765cf..7b2b1bd 100644 --- a/provider.go +++ b/provider.go @@ -132,36 +132,36 @@ func cert(r io.Reader) (*x509.Certificate, error) { return x509.ParseCertificate(der) } -func (p *Provider) Register(s Signer, c Contacts) error { +func (p *Provider) newReg(uri string, s Signer, c Contacts) (nextStep, error) { r := &Registration{ Resource: ResNewReg, Contact: c, } - - resp, err := p.post(p.NewReg, s, r) + resp, err := p.post(uri, s, r) if err != nil { - return err - } - - ns, err := p.parseJson(resp, r) - - if err != nil && err.(Problem).Err != ErrMalformed { - return err + return nextStep{}, err } + return p.parseJson(resp, r) +} - r = &Registration{ +func (p *Provider) agree(uri string, s Signer, tos string) (nextStep, error) { + r := &Registration{ Resource: ResReg, - Contact: c, - Agreement: ns.Link["terms-of-service"], + Agreement: tos, } - - resp, err = p.post(ns.Location, s, r) + resp, err := p.post(uri, s, r) if err != nil { - return err + return nextStep{}, err } + return p.parseJson(resp, r) +} - _, err = p.parseJson(resp, r) - +func (p *Provider) Register(s Signer, c Contacts) error { + ns, err := p.newReg(p.NewReg, s, c) + if err != nil && err.(Problem).Err != ErrMalformed { + return err + } + _, err = p.agree(ns.Location, s, ns.Link["terms-of-service"]) return err } @@ -226,8 +226,7 @@ func (p *Provider) Authorize(s ThumbSigner, d *Desire) error { return err } - sol := d.solver[ch.Type] - err = sol.Solve(ch.Token, ka) + err = d.solver[ch.Type].Solve(ch.Token, ka) if err != nil { return err } @@ -259,33 +258,39 @@ func (p *Provider) queryStatus(url string) (bool, error) { return r.Status == StatusValid, nil } -func (p *Provider) Cert(s Signer, d *Desire) error { +func (p *Provider) newCert(uri string, s Signer, d *Desire) (*x509.Certificate, nextStep, error) { csr, err := NewCSR(d.altnames, d.key) if err != nil { - return err + return nil, nextStep{}, err } r := &CSR{ Resource: ResNewCert, CSR: csr, } - - resp, err := p.post(p.NewCert, s, r) + resp, err := p.post(uri, s, r) if err != nil { - return err + return nil, nextStep{}, err } + return p.parseCert(resp) +} - crt, ns, err := p.parseCert(resp) +func (p *Provider) newCA(uri string) (*x509.Certificate, nextStep, error) { + resp, err := p.Get(uri) if err != nil { - return err + return nil, nextStep{}, err } - d.cert = append(d.cert, crt) + return p.parseCert(resp) +} - resp, err = p.Get(ns.Link["up"]) +func (p *Provider) Cert(s Signer, d *Desire) error { + crt, ns, err := p.newCert(p.NewCert, s, d) if err != nil { return err } + d.cert = append(d.cert, crt) + // TODO Get cert on empty response - crt, _, err = p.parseCert(resp) + crt, _, err = p.newCA(ns.Link["up"]) if err != nil { return err } -- cgit v1.2.3