aboutsummaryrefslogtreecommitdiff
path: root/desire.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-01-12 13:41:36 +0100
committerDimitri Sokolyuk <demon@dim13.org>2016-01-12 13:41:36 +0100
commitab44298d0c23c02d4c4736073be86bcffb669a7b (patch)
treed25c3258083c8a228fe7743fd19f19252087d760 /desire.go
parent178685b0659c01dffb253bb40a506b54795a2c98 (diff)
Move solver into challenge
Diffstat (limited to 'desire.go')
-rw-r--r--desire.go25
1 files changed, 25 insertions, 0 deletions
diff --git a/desire.go b/desire.go
index cfb691c..c631548 100644
--- a/desire.go
+++ b/desire.go
@@ -81,3 +81,28 @@ func (d *Desire) AddCert(der []byte) error {
d.cert = append(d.cert, cert)
return nil
}
+
+func (d Desire) satisficed(c []Challenge, com []int) bool {
+ for _, n := range com {
+ if _, ok := d.solver[c[n].Type]; !ok {
+ return false
+ }
+ }
+ return true
+}
+
+func (d Desire) Pick(a *Authorization) []Challenge {
+ var c []Challenge
+ for _, com := range a.Combinations {
+ if d.satisficed(a.Challenges, com) {
+ for _, n := range com {
+ ch := a.Challenges[n]
+ ch.Solver = d.solver[ch.Type]
+ a.Challenges[n] = ch
+ c = append(c, ch)
+ }
+ return c
+ }
+ }
+ return c
+}