From ab44298d0c23c02d4c4736073be86bcffb669a7b Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 12 Jan 2016 13:41:36 +0100 Subject: Move solver into challenge --- desire.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'desire.go') 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 +} -- cgit v1.2.3