46 lines
1.5 KiB
Go
46 lines
1.5 KiB
Go
package core
|
|
|
|
import "fmt"
|
|
|
|
func newChallenge(challengeType AcmeChallenge, token string) Challenge {
|
|
return Challenge{
|
|
Type: challengeType,
|
|
Status: StatusPending,
|
|
Token: token,
|
|
}
|
|
}
|
|
|
|
// HTTPChallenge01 constructs a random http-01 challenge. If token is empty a random token
|
|
// will be generated, otherwise the provided token is used.
|
|
func HTTPChallenge01(token string) Challenge {
|
|
return newChallenge(ChallengeTypeHTTP01, token)
|
|
}
|
|
|
|
// DNSChallenge01 constructs a random dns-01 challenge. If token is empty a random token
|
|
// will be generated, otherwise the provided token is used.
|
|
func DNSChallenge01(token string) Challenge {
|
|
return newChallenge(ChallengeTypeDNS01, token)
|
|
}
|
|
|
|
// TLSALPNChallenge01 constructs a random tls-alpn-01 challenge. If token is empty a random token
|
|
// will be generated, otherwise the provided token is used.
|
|
func TLSALPNChallenge01(token string) Challenge {
|
|
return newChallenge(ChallengeTypeTLSALPN01, token)
|
|
}
|
|
|
|
// NewChallenge constructs a random challenge of the given kind. It returns an
|
|
// error if the challenge type is unrecognized. If token is empty a random token
|
|
// will be generated, otherwise the provided token is used.
|
|
func NewChallenge(kind AcmeChallenge, token string) (Challenge, error) {
|
|
switch kind {
|
|
case ChallengeTypeHTTP01:
|
|
return HTTPChallenge01(token), nil
|
|
case ChallengeTypeDNS01:
|
|
return DNSChallenge01(token), nil
|
|
case ChallengeTypeTLSALPN01:
|
|
return TLSALPNChallenge01(token), nil
|
|
default:
|
|
return Challenge{}, fmt.Errorf("unrecognized challenge type %q", kind)
|
|
}
|
|
}
|