Add Digest Authentication Support for SHA256 and SHA512/256 algorithms
- SHA256 and SHA512/256 algorithms requires OpenSSL linking, ie: USE_SSL (WITH_SSL) set to true
- modified ClientAuthManager to look through all WWWAuthenticate or ProxyAuthenticate headers for one
with a supported algorithm
- classes that issue digest challenges now take a configurable ordered list of algorithms supported, a
header for each supported algorithm will be added to the resulting digest challenges, clients are
expected to use the first one they support from the list. An empty list implies only MD5 support.
Classes extended:
- dum/ServerAuthManager, dum/RADIUSServerAuthManager,
- repro/ReproServerAuthManager, repro/RADIUSServerAuthManager,
- repro/monkeys/DigestAuthenticator, repro/monkeys/RADIUSDigestAuthenticator, repro/monkeys/StaticRoute
- UserProfile::setDigestCredential now accepts a new format for password hashes, in order to support the
new algorithms
- Modified UserStore to store all supported password hashes when a new user is added with clear text password
- New repro setting: DigestChallengeAlgorithms
- Helper changes
- reordered methods in source file to match header ordering
- new methods:
- isDigestAlgorithmSupported
- createResipA1HashString
- extractA1FromResipA1HashString
- isDigestTypeSupportedInResipA1HashString
- addChallenge
- makeResponseDigest
- makeResponseDigestWithA1
- methods extended to support adding new SHA algorithms to challenges
- makeProxyChallenge
- makeWWWChallenge
- makeChallenge
- Added many new unit tests to testDigestAuthentication, so that all new and existing Helper digest methods
are now covered