forked from TrueCloudLab/lego
42941ccea6
- Packages - Isolate code used by the CLI into the package `cmd` - (experimental) Add e2e tests for HTTP01, TLS-ALPN-01 and DNS-01, use [Pebble](https://github.com/letsencrypt/pebble) and [challtestsrv](https://github.com/letsencrypt/boulder/tree/master/test/challtestsrv) - Support non-ascii domain name (punnycode) - Check all challenges in a predictable order - No more global exported variables - Archive revoked certificates - Fixes revocation for subdomains and non-ascii domains - Disable pending authorizations - use pointer for RemoteError/ProblemDetails - Poll authz URL instead of challenge URL - The ability for a DNS provider to solve the challenge sequentially - Check all nameservers in a predictable order - Option to disable the complete propagation Requirement - CLI, support for renew with CSR - CLI, add SAN on renew - Add command to list certificates. - Logs every iteration of waiting for the propagation - update DNSimple client - update github.com/miekg/dns
45 lines
1.2 KiB
Go
45 lines
1.2 KiB
Go
package api
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/xenolf/lego/acme"
|
|
)
|
|
|
|
type ChallengeService service
|
|
|
|
// New Creates a challenge.
|
|
func (c *ChallengeService) New(chlgURL string) (acme.ExtendedChallenge, error) {
|
|
if len(chlgURL) == 0 {
|
|
return acme.ExtendedChallenge{}, errors.New("challenge[new]: empty URL")
|
|
}
|
|
|
|
// Challenge initiation is done by sending a JWS payload containing the trivial JSON object `{}`.
|
|
// We use an empty struct instance as the postJSON payload here to achieve this result.
|
|
var chlng acme.ExtendedChallenge
|
|
resp, err := c.core.post(chlgURL, struct{}{}, &chlng)
|
|
if err != nil {
|
|
return acme.ExtendedChallenge{}, err
|
|
}
|
|
|
|
chlng.AuthorizationURL = getLink(resp.Header, "up")
|
|
chlng.RetryAfter = getRetryAfter(resp)
|
|
return chlng, nil
|
|
}
|
|
|
|
// Get Gets a challenge.
|
|
func (c *ChallengeService) Get(chlgURL string) (acme.ExtendedChallenge, error) {
|
|
if len(chlgURL) == 0 {
|
|
return acme.ExtendedChallenge{}, errors.New("challenge[get]: empty URL")
|
|
}
|
|
|
|
var chlng acme.ExtendedChallenge
|
|
resp, err := c.core.postAsGet(chlgURL, &chlng)
|
|
if err != nil {
|
|
return acme.ExtendedChallenge{}, err
|
|
}
|
|
|
|
chlng.AuthorizationURL = getLink(resp.Header, "up")
|
|
chlng.RetryAfter = getRetryAfter(resp)
|
|
return chlng, nil
|
|
}
|