In my quest to explore the code and understand it, why not clean it up
in the progress. Most formatting provided by clang-format. ;)
Aside from formatting, also extracted some method and unnested some
control structs.
Previously we disabled conditional-get if file part is missing in URI.
But we use constant string "index.html" in this case, so we can do the
same to determine the modification time. In this patch, if we have
file part in URI, we are not going to set absolute file path in
FileEntry, since it prevents content-disposition from working.
rst2html is required to produce README.html from README.rst. We
include generated README.html to distribution. And rst2html is not
required when compiling sources in distribution and always README.html
is available.
This change should make token validation more resilient to:
- timing attacks (constant time array compare)
- brute-force/dictionary attacks (PBKDF2)
Closes#220
By enabling wintls, we can use Windows certificate store to validate
server's certificate. Previously, we built windows build using
openssl and since we don't bundle CA certificates, aria2 fails to
validate server's certificate unless user setups their CA
certificates. GMP provides fast big integer calculations, whic is
used in BitTorrent encryption.
This is kind what browser do anyway (IE, Firefox, Chrome tested), what
AppleTLS does, what GnuTLS does and what OpenSSL does. Actually, most
browsers will also be OK with the CRL/OCSP provider being offline.
WinTLS will still fail in that case.
Should revocation information be available in the trust chain (CRL or
OCSP) the certificate still will be checked!
"Real" CAs, aka. those provided by the OS or system CA bundle, usually
provide revocation information and are thus still checked.
It should be mostly (only?) custom (organization) CAs that lack
revocation information, but those users might want to use aria2 in their
intranets and VPNs anyway ;)
See #217