1*6236dae4SAndroid Build Coastguard Worker<testcase> 2*6236dae4SAndroid Build Coastguard Worker<info> 3*6236dae4SAndroid Build Coastguard Worker<keywords> 4*6236dae4SAndroid Build Coastguard WorkerHTTP 5*6236dae4SAndroid Build Coastguard WorkerHTTP GET 6*6236dae4SAndroid Build Coastguard WorkerHTTP Digest auth 7*6236dae4SAndroid Build Coastguard Worker</keywords> 8*6236dae4SAndroid Build Coastguard Worker</info> 9*6236dae4SAndroid Build Coastguard Worker# Server-side 10*6236dae4SAndroid Build Coastguard Worker<reply> 11*6236dae4SAndroid Build Coastguard Worker 12*6236dae4SAndroid Build Coastguard Worker<!-- 13*6236dae4SAndroid Build Coastguard Worker 14*6236dae4SAndroid Build Coastguard Worker Explanation for the duplicate 400 requests: 15*6236dae4SAndroid Build Coastguard Worker 16*6236dae4SAndroid Build Coastguard Worker libcurl doesn't detect that a given Digest password is wrong already on the 17*6236dae4SAndroid Build Coastguard Worker first 401 response (as the data400 gives). libcurl will instead consider the 18*6236dae4SAndroid Build Coastguard Worker new response just as a duplicate and it sends another and detects the auth 19*6236dae4SAndroid Build Coastguard Worker problem on the second 401 response! 20*6236dae4SAndroid Build Coastguard Worker 21*6236dae4SAndroid Build Coastguard Worker--> 22*6236dae4SAndroid Build Coastguard Worker 23*6236dae4SAndroid Build Coastguard Worker<!-- First request has Digest auth, wrong password --> 24*6236dae4SAndroid Build Coastguard Worker<data100> 25*6236dae4SAndroid Build Coastguard WorkerHTTP/1.1 401 Need Digest auth 26*6236dae4SAndroid Build Coastguard WorkerServer: Microsoft-IIS/5.0 27*6236dae4SAndroid Build Coastguard WorkerContent-Type: text/html; charset=iso-8859-1 28*6236dae4SAndroid Build Coastguard WorkerContent-Length: 27 29*6236dae4SAndroid Build Coastguard WorkerWWW-Authenticate: Digest realm="testrealm", nonce="1" 30*6236dae4SAndroid Build Coastguard Worker 31*6236dae4SAndroid Build Coastguard WorkerThis is not the real page! 32*6236dae4SAndroid Build Coastguard Worker</data100> 33*6236dae4SAndroid Build Coastguard Worker 34*6236dae4SAndroid Build Coastguard Worker<data1100> 35*6236dae4SAndroid Build Coastguard WorkerHTTP/1.1 401 Sorry wrong password 36*6236dae4SAndroid Build Coastguard WorkerServer: Microsoft-IIS/5.0 37*6236dae4SAndroid Build Coastguard WorkerContent-Type: text/html; charset=iso-8859-1 38*6236dae4SAndroid Build Coastguard WorkerContent-Length: 29 39*6236dae4SAndroid Build Coastguard WorkerWWW-Authenticate: Digest realm="testrealm", nonce="2" 40*6236dae4SAndroid Build Coastguard Worker 41*6236dae4SAndroid Build Coastguard WorkerThis is a bad password page! 42*6236dae4SAndroid Build Coastguard Worker</data1100> 43*6236dae4SAndroid Build Coastguard Worker 44*6236dae4SAndroid Build Coastguard Worker<!-- Second request has Digest auth, right password --> 45*6236dae4SAndroid Build Coastguard Worker<data200> 46*6236dae4SAndroid Build Coastguard WorkerHTTP/1.1 401 Need Digest auth (2) 47*6236dae4SAndroid Build Coastguard WorkerServer: Microsoft-IIS/5.0 48*6236dae4SAndroid Build Coastguard WorkerContent-Type: text/html; charset=iso-8859-1 49*6236dae4SAndroid Build Coastguard WorkerContent-Length: 27 50*6236dae4SAndroid Build Coastguard WorkerWWW-Authenticate: Digest realm="testrealm", nonce="3" 51*6236dae4SAndroid Build Coastguard Worker 52*6236dae4SAndroid Build Coastguard WorkerThis is not the real page! 53*6236dae4SAndroid Build Coastguard Worker</data200> 54*6236dae4SAndroid Build Coastguard Worker 55*6236dae4SAndroid Build Coastguard Worker<data1200> 56*6236dae4SAndroid Build Coastguard WorkerHTTP/1.1 200 Things are fine in server land 57*6236dae4SAndroid Build Coastguard WorkerServer: Microsoft-IIS/5.0 58*6236dae4SAndroid Build Coastguard WorkerContent-Type: text/html; charset=iso-8859-1 59*6236dae4SAndroid Build Coastguard WorkerContent-Length: 32 60*6236dae4SAndroid Build Coastguard Worker 61*6236dae4SAndroid Build Coastguard WorkerFinally, this is the real page! 62*6236dae4SAndroid Build Coastguard Worker</data1200> 63*6236dae4SAndroid Build Coastguard Worker 64*6236dae4SAndroid Build Coastguard Worker<!-- Third request has Digest auth, wrong password --> 65*6236dae4SAndroid Build Coastguard Worker<data300> 66*6236dae4SAndroid Build Coastguard WorkerHTTP/1.1 401 Need Digest auth (3) 67*6236dae4SAndroid Build Coastguard WorkerServer: Microsoft-IIS/5.0 68*6236dae4SAndroid Build Coastguard WorkerContent-Type: text/html; charset=iso-8859-1 69*6236dae4SAndroid Build Coastguard WorkerContent-Length: 27 70*6236dae4SAndroid Build Coastguard WorkerWWW-Authenticate: Digest realm="testrealm", nonce="4" 71*6236dae4SAndroid Build Coastguard Worker 72*6236dae4SAndroid Build Coastguard WorkerThis is not the real page! 73*6236dae4SAndroid Build Coastguard Worker</data300> 74*6236dae4SAndroid Build Coastguard Worker 75*6236dae4SAndroid Build Coastguard Worker<data1300> 76*6236dae4SAndroid Build Coastguard WorkerHTTP/1.1 401 Sorry wrong password (2) 77*6236dae4SAndroid Build Coastguard WorkerServer: Microsoft-IIS/5.0 78*6236dae4SAndroid Build Coastguard WorkerContent-Type: text/html; charset=iso-8859-1 79*6236dae4SAndroid Build Coastguard WorkerContent-Length: 29 80*6236dae4SAndroid Build Coastguard WorkerWWW-Authenticate: Digest realm="testrealm", nonce="5" 81*6236dae4SAndroid Build Coastguard Worker 82*6236dae4SAndroid Build Coastguard WorkerThis is a bad password page! 83*6236dae4SAndroid Build Coastguard Worker</data1300> 84*6236dae4SAndroid Build Coastguard Worker 85*6236dae4SAndroid Build Coastguard Worker<!-- Fourth request has Digest auth, wrong password --> 86*6236dae4SAndroid Build Coastguard Worker<data400> 87*6236dae4SAndroid Build Coastguard WorkerHTTP/1.1 401 Need Digest auth (4) 88*6236dae4SAndroid Build Coastguard WorkerServer: Microsoft-IIS/5.0 89*6236dae4SAndroid Build Coastguard WorkerContent-Type: text/html; charset=iso-8859-1 90*6236dae4SAndroid Build Coastguard WorkerContent-Length: 27 91*6236dae4SAndroid Build Coastguard WorkerWWW-Authenticate: Digest realm="testrealm", nonce="6" 92*6236dae4SAndroid Build Coastguard Worker 93*6236dae4SAndroid Build Coastguard WorkerThis is not the real page! 94*6236dae4SAndroid Build Coastguard Worker</data400> 95*6236dae4SAndroid Build Coastguard Worker 96*6236dae4SAndroid Build Coastguard Worker<data1400> 97*6236dae4SAndroid Build Coastguard WorkerHTTP/1.1 401 Sorry wrong password (3) 98*6236dae4SAndroid Build Coastguard WorkerServer: Microsoft-IIS/5.0 99*6236dae4SAndroid Build Coastguard WorkerContent-Type: text/html; charset=iso-8859-1 100*6236dae4SAndroid Build Coastguard WorkerContent-Length: 29 101*6236dae4SAndroid Build Coastguard WorkerWWW-Authenticate: Digest realm="testrealm", nonce="7" 102*6236dae4SAndroid Build Coastguard Worker 103*6236dae4SAndroid Build Coastguard WorkerThis is a bad password page! 104*6236dae4SAndroid Build Coastguard Worker</data1400> 105*6236dae4SAndroid Build Coastguard Worker 106*6236dae4SAndroid Build Coastguard Worker<!-- Fifth request has Digest auth, right password --> 107*6236dae4SAndroid Build Coastguard Worker<data1500> 108*6236dae4SAndroid Build Coastguard WorkerHTTP/1.1 200 Things are fine in server land (2) 109*6236dae4SAndroid Build Coastguard WorkerServer: Microsoft-IIS/5.0 110*6236dae4SAndroid Build Coastguard WorkerContent-Type: text/html; charset=iso-8859-1 111*6236dae4SAndroid Build Coastguard WorkerContent-Length: 32 112*6236dae4SAndroid Build Coastguard Worker 113*6236dae4SAndroid Build Coastguard WorkerFinally, this is the real page! 114*6236dae4SAndroid Build Coastguard Worker</data1500> 115*6236dae4SAndroid Build Coastguard Worker 116*6236dae4SAndroid Build Coastguard Worker<datacheck> 117*6236dae4SAndroid Build Coastguard WorkerHTTP/1.1 401 Need Digest auth 118*6236dae4SAndroid Build Coastguard WorkerServer: Microsoft-IIS/5.0 119*6236dae4SAndroid Build Coastguard WorkerContent-Type: text/html; charset=iso-8859-1 120*6236dae4SAndroid Build Coastguard WorkerContent-Length: 27 121*6236dae4SAndroid Build Coastguard WorkerWWW-Authenticate: Digest realm="testrealm", nonce="1" 122*6236dae4SAndroid Build Coastguard Worker 123*6236dae4SAndroid Build Coastguard WorkerHTTP/1.1 401 Sorry wrong password 124*6236dae4SAndroid Build Coastguard WorkerServer: Microsoft-IIS/5.0 125*6236dae4SAndroid Build Coastguard WorkerContent-Type: text/html; charset=iso-8859-1 126*6236dae4SAndroid Build Coastguard WorkerContent-Length: 29 127*6236dae4SAndroid Build Coastguard WorkerWWW-Authenticate: Digest realm="testrealm", nonce="2" 128*6236dae4SAndroid Build Coastguard Worker 129*6236dae4SAndroid Build Coastguard WorkerThis is a bad password page! 130*6236dae4SAndroid Build Coastguard WorkerHTTP/1.1 200 Things are fine in server land 131*6236dae4SAndroid Build Coastguard WorkerServer: Microsoft-IIS/5.0 132*6236dae4SAndroid Build Coastguard WorkerContent-Type: text/html; charset=iso-8859-1 133*6236dae4SAndroid Build Coastguard WorkerContent-Length: 32 134*6236dae4SAndroid Build Coastguard Worker 135*6236dae4SAndroid Build Coastguard WorkerFinally, this is the real page! 136*6236dae4SAndroid Build Coastguard WorkerHTTP/1.1 401 Need Digest auth (3) 137*6236dae4SAndroid Build Coastguard WorkerServer: Microsoft-IIS/5.0 138*6236dae4SAndroid Build Coastguard WorkerContent-Type: text/html; charset=iso-8859-1 139*6236dae4SAndroid Build Coastguard WorkerContent-Length: 27 140*6236dae4SAndroid Build Coastguard WorkerWWW-Authenticate: Digest realm="testrealm", nonce="4" 141*6236dae4SAndroid Build Coastguard Worker 142*6236dae4SAndroid Build Coastguard WorkerHTTP/1.1 401 Sorry wrong password (2) 143*6236dae4SAndroid Build Coastguard WorkerServer: Microsoft-IIS/5.0 144*6236dae4SAndroid Build Coastguard WorkerContent-Type: text/html; charset=iso-8859-1 145*6236dae4SAndroid Build Coastguard WorkerContent-Length: 29 146*6236dae4SAndroid Build Coastguard WorkerWWW-Authenticate: Digest realm="testrealm", nonce="5" 147*6236dae4SAndroid Build Coastguard Worker 148*6236dae4SAndroid Build Coastguard WorkerThis is a bad password page! 149*6236dae4SAndroid Build Coastguard WorkerHTTP/1.1 401 Sorry wrong password (3) 150*6236dae4SAndroid Build Coastguard WorkerServer: Microsoft-IIS/5.0 151*6236dae4SAndroid Build Coastguard WorkerContent-Type: text/html; charset=iso-8859-1 152*6236dae4SAndroid Build Coastguard WorkerContent-Length: 29 153*6236dae4SAndroid Build Coastguard WorkerWWW-Authenticate: Digest realm="testrealm", nonce="7" 154*6236dae4SAndroid Build Coastguard Worker 155*6236dae4SAndroid Build Coastguard WorkerHTTP/1.1 401 Sorry wrong password (3) 156*6236dae4SAndroid Build Coastguard WorkerServer: Microsoft-IIS/5.0 157*6236dae4SAndroid Build Coastguard WorkerContent-Type: text/html; charset=iso-8859-1 158*6236dae4SAndroid Build Coastguard WorkerContent-Length: 29 159*6236dae4SAndroid Build Coastguard WorkerWWW-Authenticate: Digest realm="testrealm", nonce="7" 160*6236dae4SAndroid Build Coastguard Worker 161*6236dae4SAndroid Build Coastguard WorkerThis is a bad password page! 162*6236dae4SAndroid Build Coastguard WorkerHTTP/1.1 200 Things are fine in server land (2) 163*6236dae4SAndroid Build Coastguard WorkerServer: Microsoft-IIS/5.0 164*6236dae4SAndroid Build Coastguard WorkerContent-Type: text/html; charset=iso-8859-1 165*6236dae4SAndroid Build Coastguard WorkerContent-Length: 32 166*6236dae4SAndroid Build Coastguard Worker 167*6236dae4SAndroid Build Coastguard WorkerFinally, this is the real page! 168*6236dae4SAndroid Build Coastguard Worker</datacheck> 169*6236dae4SAndroid Build Coastguard Worker 170*6236dae4SAndroid Build Coastguard Worker</reply> 171*6236dae4SAndroid Build Coastguard Worker 172*6236dae4SAndroid Build Coastguard Worker# Client-side 173*6236dae4SAndroid Build Coastguard Worker<client> 174*6236dae4SAndroid Build Coastguard Worker<server> 175*6236dae4SAndroid Build Coastguard Workerhttp 176*6236dae4SAndroid Build Coastguard Worker</server> 177*6236dae4SAndroid Build Coastguard Worker<features> 178*6236dae4SAndroid Build Coastguard Worker!SSPI 179*6236dae4SAndroid Build Coastguard Workercrypto 180*6236dae4SAndroid Build Coastguard Worker</features> 181*6236dae4SAndroid Build Coastguard Worker<tool> 182*6236dae4SAndroid Build Coastguard Workerlibauthretry 183*6236dae4SAndroid Build Coastguard Worker</tool> 184*6236dae4SAndroid Build Coastguard Worker 185*6236dae4SAndroid Build Coastguard Worker<name> 186*6236dae4SAndroid Build Coastguard WorkerHTTP authorization retry (Digest) 187*6236dae4SAndroid Build Coastguard Worker</name> 188*6236dae4SAndroid Build Coastguard Worker<command> 189*6236dae4SAndroid Build Coastguard Workerhttp://%HOSTIP:%HTTPPORT/%TESTNUMBER digest digest 190*6236dae4SAndroid Build Coastguard Worker</command> 191*6236dae4SAndroid Build Coastguard Worker</client> 192*6236dae4SAndroid Build Coastguard Worker 193*6236dae4SAndroid Build Coastguard Worker# Verify data after the test has been "shot" 194*6236dae4SAndroid Build Coastguard Worker<verify> 195*6236dae4SAndroid Build Coastguard Worker<protocol> 196*6236dae4SAndroid Build Coastguard WorkerGET /%TESTNUMBER0100 HTTP/1.1 197*6236dae4SAndroid Build Coastguard WorkerHost: %HOSTIP:%HTTPPORT 198*6236dae4SAndroid Build Coastguard WorkerAccept: */* 199*6236dae4SAndroid Build Coastguard Worker 200*6236dae4SAndroid Build Coastguard WorkerGET /%TESTNUMBER0100 HTTP/1.1 201*6236dae4SAndroid Build Coastguard WorkerHost: %HOSTIP:%HTTPPORT 202*6236dae4SAndroid Build Coastguard WorkerAuthorization: Digest username="testuser", realm="testrealm", nonce="1", uri="/%TESTNUMBER0100", response="f7fd60eefaff5225971bf9b3d80d6ba6" 203*6236dae4SAndroid Build Coastguard WorkerAccept: */* 204*6236dae4SAndroid Build Coastguard Worker 205*6236dae4SAndroid Build Coastguard WorkerGET /%TESTNUMBER0200 HTTP/1.1 206*6236dae4SAndroid Build Coastguard WorkerHost: %HOSTIP:%HTTPPORT 207*6236dae4SAndroid Build Coastguard WorkerAuthorization: Digest username="testuser", realm="testrealm", nonce="2", uri="/%TESTNUMBER0200", response="785ca3ef511999f7e9c178195f5b388c" 208*6236dae4SAndroid Build Coastguard WorkerAccept: */* 209*6236dae4SAndroid Build Coastguard Worker 210*6236dae4SAndroid Build Coastguard WorkerGET /%TESTNUMBER0300 HTTP/1.1 211*6236dae4SAndroid Build Coastguard WorkerHost: %HOSTIP:%HTTPPORT 212*6236dae4SAndroid Build Coastguard WorkerAccept: */* 213*6236dae4SAndroid Build Coastguard Worker 214*6236dae4SAndroid Build Coastguard WorkerGET /%TESTNUMBER0300 HTTP/1.1 215*6236dae4SAndroid Build Coastguard WorkerHost: %HOSTIP:%HTTPPORT 216*6236dae4SAndroid Build Coastguard WorkerAuthorization: Digest username="testuser", realm="testrealm", nonce="4", uri="/%TESTNUMBER0300", response="4c735d2360fd6848e7cb32a11ae3612b" 217*6236dae4SAndroid Build Coastguard WorkerAccept: */* 218*6236dae4SAndroid Build Coastguard Worker 219*6236dae4SAndroid Build Coastguard WorkerGET /%TESTNUMBER0400 HTTP/1.1 220*6236dae4SAndroid Build Coastguard WorkerHost: %HOSTIP:%HTTPPORT 221*6236dae4SAndroid Build Coastguard WorkerAuthorization: Digest username="testuser", realm="testrealm", nonce="5", uri="/%TESTNUMBER0400", response="f5906785511fb60a2af8b1cd53008ead" 222*6236dae4SAndroid Build Coastguard WorkerAccept: */* 223*6236dae4SAndroid Build Coastguard Worker 224*6236dae4SAndroid Build Coastguard WorkerGET /%TESTNUMBER0400 HTTP/1.1 225*6236dae4SAndroid Build Coastguard WorkerHost: %HOSTIP:%HTTPPORT 226*6236dae4SAndroid Build Coastguard WorkerAuthorization: Digest username="testuser", realm="testrealm", nonce="5", uri="/%TESTNUMBER0400", response="f5906785511fb60a2af8b1cd53008ead" 227*6236dae4SAndroid Build Coastguard WorkerAccept: */* 228*6236dae4SAndroid Build Coastguard Worker 229*6236dae4SAndroid Build Coastguard WorkerGET /%TESTNUMBER0500 HTTP/1.1 230*6236dae4SAndroid Build Coastguard WorkerHost: %HOSTIP:%HTTPPORT 231*6236dae4SAndroid Build Coastguard WorkerAuthorization: Digest username="testuser", realm="testrealm", nonce="7", uri="/%TESTNUMBER0500", response="8ef4d935fd964a46c3965c0863b52cf1" 232*6236dae4SAndroid Build Coastguard WorkerAccept: */* 233*6236dae4SAndroid Build Coastguard Worker 234*6236dae4SAndroid Build Coastguard Worker</protocol> 235*6236dae4SAndroid Build Coastguard Worker</verify> 236*6236dae4SAndroid Build Coastguard Worker</testcase> 237