CHANGES
=======

0.0.13
------

* Remove unwanted dependencies from Dockerfile.test
* Automatically lookup ubuntu/debian releases for CI package push
* add hexlify
* handle validate authenticator case for both request and response radius messages
* check message\_authenticator and response\_authenticator if possible
* Fix tests using wrong message type. Which uncovered bug where attempting to parse packet which should be discarded
* Fix error where RADIUS State attribute was incorrectly returned when authentication process is restarted during another
* change formatter to support ports numbered up to 65535
* Port-Up State to Ignore Previous Requests
* missing commas. and version 0.0.13
* use PBR

0.0.12
------

* Release chewie v0.0.12
* Update debian package dependencies

0.0.11
------

* pylint
* increase eventlet.sleep to 1
* pytype ignore invalid name on process() created by transitions
* add transitions to install\_requires
* use pytransitions for state machine
* Release chewie v0.0.11
* use snake case for rfc variables/functions
* ignore 'from collections import ...' error with pytype
* remove debug print
* change tuple from eap/radius output queue to a namedtuple
* allow transition from timeout\_failure(2) by providing identity response
* Add information to the README.md
* Add Dockerfile.test for running tests locally
* Add PEAP Functionality to Chewie
* remove empty test\_fuzzer\_finds.py
* fix MessageParseError exception constructor inputs
* test against MessageParser.one\_x\_parse() instead of eap\_parse()
* pylint
* remove unused imports
* Add dictionary that always returns None
* fuzz radius
* eap fuzzer working
* add dockerfile for fuzzing
* Initial message parser (eap/radius) fuzzing

0.0.10
------

* Release chewie v0.0.10
* fix a bug where client could not authenticate after the state machine enters timeout failure
* use \_\_cause\_\_ instead of original\_error parameter
* cahnge last struct.unpack exceptions
* convert a struct.error to MessageParseError
* more raise MessageParseError when radius parsing fails
* Add 'Raises' to docstring
* remove \_\_str\_\_ override from MessageParseError
* raise MessageParseError when radius parsing fails
* raise MessageParseError when parsing fails
* Use put\_nowait() instead of put()
* 4 main chewie methods tested with mocks
* leaving with broken test until we factor out the radius code
* Rework mocks, two methods tested now
* first test functional
* first steps
* pylint
* Create RadiusLifecycle object and move some logic into it
* change urandom patch as os no longer in Chewie
* pylint
* Create RadiusLifecycle object and move some logic into it
* pylint
* Use join() on concat chunks. refractor test to only test concat type
* simplify concat packing
* Add build\_docs functionality
* Fix error when concat datatypes have length dividable by 253 == 0
* Remove exception catch-alls
* add michael baird to authors file
* add variations for testing radius\_pack
* pylint: Wrong continued indentation (remove 4 spaces)
* Replace netils.build\_byte\_string() with bytes.fromhex() (issue #73)
* Add NAS-Identifier and NAS-port radius attribute to access-request
* Remove Threads from chewie test
* Remove unnecessary sleeps from chewie tests
* ignore test profiling
* Add comments for where we need better test coverage
* redo timer scheduler to remove sleep()
* pylint
* Pytype fix
* Factor out Radius socket code
* Factor out EAP socket code
* don't reuse variable names in a method
* rename sm to state\_machine
* Update mocks
* Remove get\_interface\_address method
* fix python3.4 hex error. & pylint
* Add EAP-TLS. Refractored so TTLS & TLS extend from base classes (\*Message & EAP\*)
* got hostapd working with 802.1X - useful for debugging. Got dockerfile.hostapd from bairdo/gasket (already compiled in wired)
* add config files for freeradius EAP-TLS

0.0.9
-----

* Version bump
* Revert "refractor radius attributes. Add more attributes that have the dataty…"
* python 3.4 no hex()
* refractor radius attributes. Add more attributes that have the datatype already implemented
* clean up access to statemachine dict
* Add tests for some invalid packets
* fix rebase on master
* add logoff/failure/port status tests
* get Chewie thread to stop at some point
* pylint
* continue looping if exception is raised
* mocked socket operations
* WIP save. trying to mock socket operations in chewie.py
* remove commented code
* allow session-timeout to be set from radius. Refractor a little so can set other sm variables from radius (e.g. vlan/acl/filterid)
* Refractor sm tests to check handler counters after each packet. Test for session timeout being cancelled
* Add TimerJob class - can be cancelled. session timeout events can be cancelled
* Revert "remove unneeded code"
* Revert "remove unneeded code"
* add session timeout (expiry)
* add tearDown check for the 'This should never happen bug'
* fix discard test flakyness
* pylint
* pylint
* trigger travis build
* pylint
* more tests
* index by str not MacAddress
* state machine is tied to a PORT and src\_mac. should cover case where two identical macs are on the network
* add some tests for chewie.py
* move timer scheduler to class
* add check handler only called x times in sm tests
* remove preemptive id request. add attempt to test new timer
* Make MacAddress.from\_string() more defensive
* preemptively send identity request on port up. 'fix' (roll your own) timer\_scheduler for timerout based executions
* fix loop
* reset lower layer variables
* add port status interfaces
* state machine is tied to a PORT and src\_mac. should cover case where two identical macs are on the network
* remove unneeded code
* fix shared secret for docker-compose

0.0.8
-----

* making mocking life easier
* Preversion 0.0.8

0.0.7
-----

* Fix faucet ref
* Raise pylint to 8.0
* Raise pylint to 7.0. More docstrings. Ignore line length in tests where each byte string corespnds to a single attribute
* logging import not required
