diff --git a/cryptoguess/cryptoguess.go b/cryptoguess/cryptoguess.go index 1f12df4..501e7e3 100644 --- a/cryptoguess/cryptoguess.go +++ b/cryptoguess/cryptoguess.go @@ -116,6 +116,26 @@ type Result interface { Rest() []byte } +// +// recursive +// + +func recursiveResults(parent Result, input []byte) []Result { + results := []Result{} + for _, childExperiment := range New(input).Experiments { + for _, childResult := range childExperiment.Results() { + results = append( + results, + &stackedResult{ + parent: parent, + child: childResult, + }, + ) + } + } + return results +} + // // stackedResult // diff --git a/cryptoguess/guess_pem.go b/cryptoguess/guess_pem.go index 3feac03..c721c16 100644 --- a/cryptoguess/guess_pem.go +++ b/cryptoguess/guess_pem.go @@ -21,16 +21,8 @@ func runPEMBlock(exp Experiment) []Result { // FIXME: data.Type // FIXME: data.Headers result := &baseResult{exp: exp, rest: rest, data: data} - for _, childExperiment := range New(data.Bytes).Experiments { - for _, childResult := range childExperiment.Results() { - results = append( - results, - &stackedResult{ - parent: result, - child: childResult, - }, - ) - } + for _, childResult := range recursiveResults(result, data.Bytes) { + results = append(results, childResult) } results = append(results, result) }