
### Generating new fuzzing SPA packets:

- Apply a patch or set of patches to libfko to ignore error conditions and
  recompile.
- Run the test suite as follows to generate new fuzzing SPA packets:

    # ./test-fwknop.pl --enable-perl-module-pkt-gen

      [+] Starting the fwknop test suite...

          args: --enable-perl-module-pkt-gen

          Saved results from previous run to: output.last/

      [perl FKO module] [compile/install] to: ./FKO.......................pass (1)
      [perl FKO module] [FUZZING] generate invalid SPA pkts...............pass (2)

      [+] Wrote 169 fuzzing SPA packets to fuzzing/fuzzing_spa_packets.tmp...

- Review the packet data in the fuzzing_spa_packets.tmp file, and move to
  fuzzing/fuzzing_spa_packets if acceptable.
- Reverse the fuzzing patch mentioned above and recompile.
- Now send the packets through libfko as follows:

    # ./test-fwknop.pl --enable-perl-module-checks --include "perl FKO"

- If there is another patch to apply, then add a fuzzing tag so that the
  packets can easily be differentiated and appended to the official
  "fuzzing_spa_packets" file.  Note that adding the --fuzzing-class argument
  assumes that a patch has been applied to lib/fko_encode.c to manipulate SPA
  packet data after the various user-supplied data has been provided (and this
  data itself is valid - it is the encoding itself that the patch is supposed
  to mess with).  If the --fuzzing-class arg is left off, then the user fields
  are built using invalid data.

    # ./test-fwknop.pl --enable-perl-module-pkt-gen  --fuzzing-test-tag "encoded_non_digit_rand_val"  --fuzzing-class encoding

      [+] Starting the fwknop test suite...

          args: --enable-perl-module-pkt-gen --fuzzing-test-tag encoded_non_digit_rand_val --fuzzing-class encoding

          Saved results from previous run to: output.last/

      [perl FKO module] [compile/install] to: ./FKO.......................pass (1)
      [perl FKO module] [FUZZING] generate invalid encoded pkts...........pass (2)

      [+] Wrote 30 fuzzing SPA packets to fuzzing/fuzzing_spa_packets.tmp...
