aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2015-12-12 23:45:39 +0100
committerDimitri Sokolyuk <demon@dim13.org>2015-12-12 23:45:39 +0100
commitbfeba6089e5eaf07f0a8141c800e91cf0842f4ba (patch)
treee20963de175e8150fe74f8a8c49eb30e4a539a54
parentb0aa5a6da8f5426e83c9fb8be0d7c344e40c3363 (diff)
Add challenge type
-rw-r--r--challenge.go4
-rw-r--r--cmd/x/main.go14
-rw-r--r--messages.go48
3 files changed, 53 insertions, 13 deletions
diff --git a/challenge.go b/challenge.go
index 90d4d78..9e7bb06 100644
--- a/challenge.go
+++ b/challenge.go
@@ -5,8 +5,8 @@ type Solver interface {
Solve()
}
-var challenges []string
+var canSolve []string
func registerChallenge(c string) {
- challenges = append(challenges, c)
+ canSolve = append(canSolve, c)
}
diff --git a/cmd/x/main.go b/cmd/x/main.go
index 72ad0e4..1d7a813 100644
--- a/cmd/x/main.go
+++ b/cmd/x/main.go
@@ -31,13 +31,6 @@ func main() {
log.Fatal(err)
}
- /*
- err = c.Authorize(a, "example.com")
- if err != nil {
- log.Fatal(err)
- }
- */
-
re, err := c.Register(a)
if err != nil {
log.Fatal(err)
@@ -51,4 +44,11 @@ func main() {
}
log.Printf("%+v\n", c)
log.Printf("%+v\n", re)
+
+ ar, err := c.Authorize(a, "example.com")
+ if err != nil {
+ log.Fatal(err)
+ }
+ log.Printf("%+v\n", c)
+ log.Printf("%+v\n", ar)
}
diff --git a/messages.go b/messages.go
index f444c5c..7527aa3 100644
--- a/messages.go
+++ b/messages.go
@@ -70,10 +70,10 @@ type Identifier struct {
// Challege ...
type Challenge struct {
- Type string `json:"type"` // http-01
- Status Status `json:"status"` // e.g. valid
- Validated string `json:"validated"` // 2006-01-02T15:04Z
- KeyAuthorization string `json:"keyAuthorization"`
+ Type ChallengeType `json:"type"` // http-01
+ Status Status `json:"status"` // e.g. valid
+ Validated string `json:"validated"` // 2006-01-02T15:04Z
+ KeyAuthorization string `json:"keyAuthorization"`
}
// Problem description
@@ -158,3 +158,43 @@ var identTypes = map[IdentType]string{
func (i IdentType) MarshalText() ([]byte, error) {
return []byte(identTypes[i]), nil
}
+
+func (i *IdentType) UnmarshalText(b []byte) error {
+ for k, v := range identTypes {
+ if v == string(b) {
+ *i = k
+ return nil
+ }
+ }
+ return fmt.Errorf("unknown type %v", string(b))
+}
+
+type ChallengeType int
+
+const (
+ ChallengeHTTP ChallengeType = iota
+ ChallengeTLS
+ ChallengePOP
+ ChallengeDNS
+)
+
+var challenges = map[ChallengeType]string{
+ ChallengeHTTP: "http-01",
+ ChallengeTLS: "tls-sni-01",
+ ChallengePOP: "proofOfPossession-01",
+ ChallengeDNS: "dns-01",
+}
+
+func (c ChallengeType) MarshalText() ([]byte, error) {
+ return []byte(challenges[c]), nil
+}
+
+func (c *ChallengeType) UnmarshalText(b []byte) error {
+ for k, v := range challenges {
+ if v == string(b) {
+ *c = k
+ return nil
+ }
+ }
+ return fmt.Errorf("unknown challenge %v", string(b))
+}