On Friday, 26 June 2020 at 10:12:09 UTC, Jacob Carlborg wrote:
Downloading files over TLS. This seems that it's something that
should be quite simple to do. My high level goals are
cross-platform and easy distribution. I don't need anything
fancy just a simple API like this:
download("https://url.com", "/local/file");
....
Is there anything obvious I'm missing or why does this seem so
difficult? Do I have too high expectations and requirements?
[1] https://code.dlang.org/packages/requests
[2] https://code.dlang.org/packages/vibe-d
[3] https://code.dlang.org/packages/hunt
[4] https://code.dlang.org/packages/arsd-official%3Ahttp
[5]
https://developer.apple.com/documentation/security/secure_transport
[6] https://developer.apple.com/documentation/network
[7]
https://developer.apple.com/documentation/foundation/nsurlsession
[8] https://code.dlang.org/packages/botan
--
/Jacob Carlborg
Hello,
re `requests` - it uses dlopen (and variants for OSX and Windows,
see
https://github.com/ikod/dlang-requests/blob/master/source/requests/ssl_adapter.d#L50). The reason for dlopen is simple - compatibility with both openssl ver 1.0 and 1.1 (which have incompatible interfaces). To solve this problem I expose common interface for Requests internal needs, and detect and use different underlying openssl interfaces depending on library version.
I'm sure it is possible to detect library version at build time,
and then use static linking. It just require some time investment
to find most acceptable solution on how to do this.
Re Windows - I'd be happy to use native SecureChannel but I have
zero windows programming experience. I'm completely open for any
help in this field.
Bottom line - problem with SSL/TLS libraries lies in
incompatibility between platforms and even inside the single
library.