113498266Sopenharmony_ci<testcase>
213498266Sopenharmony_ci<info>
313498266Sopenharmony_ci<keywords>
413498266Sopenharmony_ciHTTP
513498266Sopenharmony_ciHTTP GET
613498266Sopenharmony_ciHTTP Digest auth
713498266Sopenharmony_cifollowlocation
813498266Sopenharmony_ci</keywords>
913498266Sopenharmony_ci</info>
1013498266Sopenharmony_ci
1113498266Sopenharmony_ci# Server-side
1213498266Sopenharmony_ci<reply>
1313498266Sopenharmony_ci<data>
1413498266Sopenharmony_ciHTTP/1.1 401 authentication please swsbounce
1513498266Sopenharmony_ciServer: Microsoft-IIS/6.0
1613498266Sopenharmony_ciWWW-Authenticate: Digest realm="testrealm", nonce="1053604144", qop="auth"
1713498266Sopenharmony_ciContent-Type: text/html; charset=iso-8859-1
1813498266Sopenharmony_ciContent-Length: 0
1913498266Sopenharmony_ci
2013498266Sopenharmony_ci</data>
2113498266Sopenharmony_ci<data1000>
2213498266Sopenharmony_ciHTTP/1.1 302 Thanks for this, but we want to redir you!
2313498266Sopenharmony_ciServer: Microsoft-IIS/5.0
2413498266Sopenharmony_ciContent-Type: text/html; charset=iso-8859-1
2513498266Sopenharmony_ciLocation: /%TESTNUMBER0001
2613498266Sopenharmony_ciContent-Length: 0
2713498266Sopenharmony_ci
2813498266Sopenharmony_ci</data1000>
2913498266Sopenharmony_ci<data1001>
3013498266Sopenharmony_ciHTTP/1.1 404 Not Found
3113498266Sopenharmony_ciServer: Microsoft-IIS/5.0
3213498266Sopenharmony_ciContent-Type: text/html; charset=iso-8859-1
3313498266Sopenharmony_ciContent-Length: 0
3413498266Sopenharmony_ci
3513498266Sopenharmony_ci</data1001>
3613498266Sopenharmony_ci
3713498266Sopenharmony_ci<datacheck>
3813498266Sopenharmony_ciHTTP/1.1 401 authentication please swsbounce
3913498266Sopenharmony_ciServer: Microsoft-IIS/6.0
4013498266Sopenharmony_ciWWW-Authenticate: Digest realm="testrealm", nonce="1053604144", qop="auth"
4113498266Sopenharmony_ciContent-Type: text/html; charset=iso-8859-1
4213498266Sopenharmony_ciContent-Length: 0
4313498266Sopenharmony_ci
4413498266Sopenharmony_ciHTTP/1.1 302 Thanks for this, but we want to redir you!
4513498266Sopenharmony_ciServer: Microsoft-IIS/5.0
4613498266Sopenharmony_ciContent-Type: text/html; charset=iso-8859-1
4713498266Sopenharmony_ciLocation: /%TESTNUMBER0001
4813498266Sopenharmony_ciContent-Length: 0
4913498266Sopenharmony_ci
5013498266Sopenharmony_ciHTTP/1.1 404 Not Found
5113498266Sopenharmony_ciServer: Microsoft-IIS/5.0
5213498266Sopenharmony_ciContent-Type: text/html; charset=iso-8859-1
5313498266Sopenharmony_ciContent-Length: 0
5413498266Sopenharmony_ci
5513498266Sopenharmony_ci</datacheck>
5613498266Sopenharmony_ci
5713498266Sopenharmony_ci</reply>
5813498266Sopenharmony_ci
5913498266Sopenharmony_ci# Client-side
6013498266Sopenharmony_ci<client>
6113498266Sopenharmony_ci#
6213498266Sopenharmony_ci<server>
6313498266Sopenharmony_cihttp
6413498266Sopenharmony_ci</server>
6513498266Sopenharmony_ci<features>
6613498266Sopenharmony_cicrypto
6713498266Sopenharmony_ci</features>
6813498266Sopenharmony_ci<name>
6913498266Sopenharmony_ciHTTP GET --digest increasing nonce-count
7013498266Sopenharmony_ci</name>
7113498266Sopenharmony_ci# This test is to ensure the nonce-count (nc) increases
7213498266Sopenharmony_ci# https://github.com/curl/curl/pull/1251
7313498266Sopenharmony_ci<command>
7413498266Sopenharmony_ci-u auser:apasswd --location --digest http://%HOSTIP:%HTTPPORT/%TESTNUMBER
7513498266Sopenharmony_ci</command>
7613498266Sopenharmony_ci</client>
7713498266Sopenharmony_ci
7813498266Sopenharmony_ci# Verify data after the test has been "shot"
7913498266Sopenharmony_ci<verify>
8013498266Sopenharmony_ci
8113498266Sopenharmony_ci# Reorder the fields in 'Authorization: Digest' header.
8213498266Sopenharmony_ci# Since regular and SSPI digest auth header fields may not have the same order
8313498266Sopenharmony_ci# or whitespace we homogenize so that both may be tested. Also:
8413498266Sopenharmony_ci# - Remove the unique value from cnonce if in RFC format
8513498266Sopenharmony_ci# - Remove the unique value from response if in RFC format
8613498266Sopenharmony_ci# - Remove quotes from qop="auth" used by SSPI
8713498266Sopenharmony_ci# The if statement is one line because runtests evaluates one line at a time.
8813498266Sopenharmony_ci<strippart>
8913498266Sopenharmony_ciif(s/^(Authorization: Digest )([^\r\n]+)(\r?\n)$//) { $_ = $1 . join(', ', map { s/^(cnonce=)"[a-zA-Z0-9+\/=]+"$/$1REMOVED/; s/^(response=)"[a-f0-9]{32}"$/$1REMOVED/; s/^qop="auth"$/qop=auth/; $_ } sort split(/, */, $2)) . $3; }
9013498266Sopenharmony_ci</strippart>
9113498266Sopenharmony_ci<protocol>
9213498266Sopenharmony_ciGET /%TESTNUMBER HTTP/1.1
9313498266Sopenharmony_ciHost: %HOSTIP:%HTTPPORT
9413498266Sopenharmony_ciUser-Agent: curl/%VERSION
9513498266Sopenharmony_ciAccept: */*
9613498266Sopenharmony_ci
9713498266Sopenharmony_ciGET /%TESTNUMBER HTTP/1.1
9813498266Sopenharmony_ciHost: %HOSTIP:%HTTPPORT
9913498266Sopenharmony_ciAuthorization: Digest cnonce=REMOVED, nc=00000001, nonce="1053604144", qop=auth, realm="testrealm", response=REMOVED, uri="/%TESTNUMBER", username="auser"
10013498266Sopenharmony_ciUser-Agent: curl/%VERSION
10113498266Sopenharmony_ciAccept: */*
10213498266Sopenharmony_ci
10313498266Sopenharmony_ciGET /%TESTNUMBER0001 HTTP/1.1
10413498266Sopenharmony_ciHost: %HOSTIP:%HTTPPORT
10513498266Sopenharmony_ciAuthorization: Digest cnonce=REMOVED, nc=00000002, nonce="1053604144", qop=auth, realm="testrealm", response=REMOVED, uri="/%TESTNUMBER0001", username="auser"
10613498266Sopenharmony_ciUser-Agent: curl/%VERSION
10713498266Sopenharmony_ciAccept: */*
10813498266Sopenharmony_ci
10913498266Sopenharmony_ci</protocol>
11013498266Sopenharmony_ci</verify>
11113498266Sopenharmony_ci</testcase>
112