aboutsummaryrefslogtreecommitdiff
path: root/desire.go
diff options
context:
space:
mode:
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
+}