install_steps: skipall
generate: -DCURL_USE_OPENSSL=ON -DCURL_USE_GSSAPI=ON -DENABLE_DEBUG=ON -DCURL_LTO=ON
- - name: openssl !ipv6 !--libcurl
- configure: --with-openssl --disable-ipv6 --enable-debug --disable-unity --disable-libcurl-option
+ - name: openssl !ipv6 !--libcurl !--digest-auth
+ configure: --with-openssl --disable-ipv6 --enable-debug --disable-unity --disable-libcurl-option --disable-digest-auth
- name: openssl https-only
configure: >-
/* This is used to clean up the digest specific data */
void Curl_auth_digest_cleanup(struct digestdata *digest);
+#else
+#define Curl_auth_is_digest_supported() FALSE
#endif /* !CURL_DISABLE_DIGEST_AUTH */
#ifdef USE_GSASL
!SSPI
crypto
proxy
+digest
</features>
<name>
HTTP POST --digest with PUT and resumed upload and modified method
!SSPI
crypto
proxy
+digest
</features>
<name>
HTTP PUT with Digest auth, resumed upload and modified method, twice
<features>
!SSPI
crypto
+digest
</features>
<name>
HTTP PUT with --anyauth authorization (picking Digest)
!SSPI
crypto
proxy
+digest
</features>
<name>
HTTP proxy CONNECT auth Digest, large headers and data
!SSPI
crypto
proxy
+digest
</features>
<name>
HTTP proxy CONNECT auth Digest, large headers and chunked data
<features>
!SSPI
crypto
+digest
</features>
<name>
Downgraded HTTP PUT to HTTP 1.0 with authorization
<features>
!SSPI
crypto
+digest
</features>
<name>
HTTP retry after closed connection and empty response
<features>
!SSPI
crypto
+digest
</features>
<name>
HTTP with Digest and realm with quoted quotes
<features>
!SSPI
crypto
+digest
</features>
<name>
HTTP with Digest authorization with user name needing escape
<features>
!SSPI
crypto
+digest
</features>
<name>
HTTP POST --digest with user-specified Content-Length header
<features>
!SSPI
crypto
+digest
</features>
<name>
HTTP PUT --digest with user-specified Content-Length header
</server>
<features>
crypto
+digest
</features>
<name>
HTTP GET --digest increasing nonce-count
<features>
!SSPI
crypto
+digest
</features>
<name>
HTTP GET with --anyauth with two URLs (picking Digest)
<features>
!SSPI
crypto
+digest
</features>
<name>
HTTP with --anyauth and connection reuse
<features>
!SSPI
crypto
+digest
</features>
<name>
HTTP with duplicated WWW-Authenticate parameters
<features>
!SSPI
crypto
+digest
</features>
<name>
HTTP with Digest authorization with stale=true
<features>
!SSPI
crypto
+digest
</features>
<name>
HTTP PUT with --anyauth authorization (picking Digest)
<features>
!SSPI
crypto
+digest
</features>
<name>
HTTP with Digest authorization on custom CURLOPT_PORT
!SSPI
crypto
proxy
+digest
</features>
<name>
HTTP with proxy-requiring-Basic to site-requiring-Digest
!SSPI
crypto
proxy
+digest
</features>
<name>
HTTP with proxy-requiring-Digest to site-requiring-Digest
SSL
!SSPI
proxy
+digest
</features>
<name>
HTTP with proxy-requiring-NTLM to site-requiring-Digest
</server>
<features>
crypto
+digest
</features>
<name>
HTTP POST --digest to server not requiring any auth at all
</server>
<features>
crypto
+digest
</features>
<name>
HTTP POST --digest to server doing a 302-location response
<features>
!SSPI
crypto
+digest
</features>
<tool>
lib2023
<features>
!SSPI
crypto
+digest
</features>
<tool>
lib2023
<features>
!SSPI
crypto
+digest
</features>
<tool>
lib2023
NTLM
SSL
!SSPI
+digest
</features>
<server>
http
NTLM
SSL
!SSPI
+digest
</features>
<server>
http
!SSPI
crypto
proxy
+digest
</features>
<name>
HTTP POST --digest with PUT, resumed upload, modified method and SHA-256
!SSPI
crypto
proxy
+digest
</features>
<name>
HTTP POST --digest with PUT, resumed upload, modified method, SHA-256 and userhash=true
!SSPI
crypto
proxy
+digest
</features>
<name>
HTTP proxy CONNECT auth Digest
<features>
!SSPI
crypto
+digest
</features>
<name>
HTTP with RFC7616 SHA256 Digest authorization
<features>
!SSPI
crypto
+digest
</features>
<name>
HTTP with RFC7616 SHA-256 Digest authorization and userhash=true
<features>
!SSPI
crypto
+digest
</features>
<name>
HTTP with RFC7616 Digest authorization with bad password and SHA256
<features>
!SSPI
crypto
+digest
</features>
<name>
HTTP with RFC7616 Digest authorization with bad password, SHA-256 and userhash=true
<features>
!SSPI
crypto
+digest
</features>
<name>
HTTP POST --digest with SHA256 and user-specified Content-Length header
<features>
!SSPI
crypto
+digest
</features>
<name>
HTTP POST --digest with SHA-256, userhash=true and user-specified Content-Length header
<features>
!SSPI
crypto
+digest
</features>
<name>
HTTP with digest auth and URI contains query
<features>
!SSPI
crypto
+digest
</features>
<name>
HTTP POST --digest
<features>
!SSPI
crypto
+digest
</features>
<name>
HTTP POST --digest with server doing a 100 before 401 response
!SSPI
crypto
proxy
+digest
</features>
<name>
HTTP POST multipart without Expect: header using proxy anyauth (Digest)
!SSPI
crypto
proxy
+digest
</features>
<name>
HTTP POST multipart with Expect: header using proxy anyauth (Digest)
<features>
!SSPI
crypto
+digest
</features>
<name>
HTTP with two Digest authorization headers
!SSPI
crypto
proxy
+digest
</features>
<name>
HTTP with proxy Digest and site Digest with creds in URLs
<features>
!SSPI
crypto
+digest
</features>
<name>
HTTP with Digest and multiple qop values with leading space
!SSPI
crypto
proxy
+digest
</features>
<name>
HTTP proxy auth Digest multi API re-using connection
!SSPI
crypto
proxy
+digest
</features>
<name>
HTTP proxy auth Digest with POST data from read callback
!SSPI
crypto
proxy
+digest
</features>
<name>
HTTP proxy auth Digest with 70K POST data from read callback
<features>
!SSPI
crypto
+digest
</features>
# tool is what to use instead of 'curl'
<tool>
</server>
<features>
crypto
+digest
</features>
# tool is what to use instead of 'curl'
<tool>
<features>
!SSPI
crypto
+digest
</features>
<name>
HTTP with Digest authorization
<features>
!SSPI
crypto
+digest
</features>
<name>
HTTP with Digest authorization with bad password
<features>
!SSPI
NTLM
+digest
</features>
<server>
http
<features>
!SSPI
crypto
+digest
</features>
<name>
HTTP with Digest *OR* Basic authorization
</server>
<features>
crypto
+digest
</features>
<name>
IMAP CRAM-MD5 authentication
!SSPI
Debug
crypto
+digest
</features>
<name>
IMAP DIGEST-MD5 authentication
</server>
<features>
crypto
+digest
</features>
<name>
IMAP CRAM-MD5 graceful cancellation
!SSPI
Debug
crypto
+digest
</features>
<name>
IMAP DIGEST-MD5 graceful cancellation
</server>
<features>
crypto
+digest
</features>
<name>
IMAP CRAM-MD5 authentication with SASL downgrade
!SSPI
Debug
crypto
+digest
</features>
<name>
IMAP DIGEST-MD5 authentication with SASL downgrade
</server>
<features>
crypto
+digest
</features>
<name>
POP3 APOP authentication
</server>
<features>
crypto
+digest
</features>
<name>
POP3 CRAM-MD5 authentication
!SSPI
Debug
crypto
+digest
</features>
<name>
POP3 DIGEST-MD5 authentication
</server>
<features>
crypto
+digest
</features>
<name>
POP3 CRAM-MD5 graceful cancellation
!SSPI
Debug
crypto
+digest
</features>
<name>
POP3 DIGEST-MD5 graceful cancellation
</server>
<features>
crypto
+digest
</features>
<name>
POP3 CRAM-MD5 authentication with SASL downgrade
<features>
!SSPI
crypto
+digest
</features>
<name>
HTTP PUT with Digest authorization
!SSPI
Debug
crypto
+digest
</features>
<name>
POP3 DIGEST-MD5 authentication with SASL downgrade
</server>
<features>
crypto
+digest
</features>
<name>
POP3 with short authentication response
</server>
<features>
crypto
+digest
</features>
<name>
SMTP CRAM-MD5 authentication
!SSPI
Debug
crypto
+digest
</features>
<name>
SMTP DIGEST-MD5 authentication
</server>
<features>
crypto
+digest
</features>
<name>
SMTP CRAM-MD5 graceful cancellation
!SSPI
Debug
crypto
+digest
</features>
<name>
SMTP DIGEST-MD5 graceful cancellation
</server>
<features>
crypto
+digest
</features>
<name>
SMTP CRAM-MD5 authentication with SASL downgrade
!SSPI
Debug
crypto
+digest
</features>
<name>
SMTP DIGEST-MD5 authentication with SASL downgrade
# download 1 file, authenticated
@pytest.mark.parametrize("proto", ['http/1.1', 'h2', 'h3'])
def test_14_02_digest_get_auth(self, env: Env, httpd, nghttpx, proto):
+ if not env.curl_has_feature('digest'):
+ pytest.skip("curl built without digest")
if proto == 'h3' and not env.have_h3():
pytest.skip("h3 not supported")
curl = CurlClient(env=env)
# PUT data, authenticated
@pytest.mark.parametrize("proto", ['http/1.1', 'h2', 'h3'])
def test_14_03_digest_put_auth(self, env: Env, httpd, nghttpx, proto):
+ if not env.curl_has_feature('digest'):
+ pytest.skip("curl built without digest")
if proto == 'h3' and not env.have_h3():
pytest.skip("h3 not supported")
if proto == 'h3' and env.curl_uses_ossl_quic():
# PUT data, digest auth large pw
@pytest.mark.parametrize("proto", ['h2', 'h3'])
def test_14_04_digest_large_pw(self, env: Env, httpd, nghttpx, proto):
+ if not env.curl_has_feature('digest'):
+ pytest.skip("curl built without digest")
if proto == 'h3' and not env.have_h3():
pytest.skip("h3 not supported")
data='0123456789'