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