aboutsummaryrefslogtreecommitdiff
path: root/provider.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-01-18 19:50:27 +0100
committerDimitri Sokolyuk <demon@dim13.org>2016-01-18 19:50:27 +0100
commit0f0d5ff117afdb1500f37d3d418379efc7201184 (patch)
tree43bbf95ff851efefdfccdfd3dc1fe72d5ab1fab5 /provider.go
parent1fa9120f4550659418c54960d6e11f188003280a (diff)
Fix backup
Diffstat (limited to 'provider.go')
-rw-r--r--provider.go54
1 files changed, 21 insertions, 33 deletions
diff --git a/provider.go b/provider.go
index 5268842..5eaeefc 100644
--- a/provider.go
+++ b/provider.go
@@ -138,37 +138,29 @@ func problem(r io.Reader) error {
return p
}
-func (p *Provider) newReg(uri string, s Signer, c Contacts) (nextStep, error) {
+func (p *Provider) Register(s Signer, c Contacts) error {
+ // first step: new-reg
r := &Registration{
Resource: ResNewReg,
Contact: c,
}
- resp, err := p.post(uri, s, r)
- if err != nil {
- return nextStep{}, err
+ resp, err := p.post(p.NewReg, s, r)
+ if err != nil && err.(Problem).Err != ErrMalformed {
+ return err
}
- return parseHeader(resp), parseJson(resp, r)
-}
+ ns := parseHeader(resp)
-func (p *Provider) agree(uri string, s Signer, tos string) (nextStep, error) {
- r := &Registration{
+ // second step: reg, agree to tos
+ r = &Registration{
Resource: ResReg,
- Agreement: tos,
+ Agreement: ns.Link["terms-of-service"],
}
- resp, err := p.post(uri, s, r)
+ resp, err = p.post(ns.Location, s, r)
if err != nil {
- return nextStep{}, err
- }
- return parseHeader(resp), 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
+ resp.Body.Close()
+ return nil
}
func (p *Provider) solve(s Signer, ch Challenge) error {
@@ -244,33 +236,29 @@ func (p *Provider) queryStatus(uri string) (bool, error) {
return r.Status == StatusValid, nil
}
-func (p *Provider) newCert(uri string, s Signer, d *Desire) (nextStep, *x509.Certificate, error) {
+func (p *Provider) Cert(s Signer, d *Desire) error {
+ // first step: post csr
csr, err := d.newCSR()
if err != nil {
- return nextStep{}, nil, err
+ return err
}
r := &CSR{
Resource: ResNewCert,
CSR: csr,
}
- resp, err := p.post(uri, s, r)
+ resp, err := p.post(p.NewCert, s, r)
if err != nil {
- return nextStep{}, nil, err
+ return err
}
- ns := parseHeader(resp)
- cert, err := parseCert(resp)
- return ns, cert, err
-}
-
-func (p *Provider) Cert(s Signer, d *Desire) error {
- ns, crt, err := p.newCert(p.NewCert, s, d)
+ crt, err := parseCert(resp)
if err != nil {
return err
}
d.cert = append(d.cert, crt)
- // TODO Get cert on empty response
+ ns := parseHeader(resp)
- resp, err := p.get(ns.Link["up"])
+ // second step: cet CA
+ resp, err = p.get(ns.Link["up"])
if err != nil {
return err
}