/* * Copyright (C) 2009 Mamadou Diop. * * Contact: Mamadou Diop <diopmamadou(at)doubango.org> * * This file is part of Open Source Doubango Framework. * * DOUBANGO is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * DOUBANGO is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU General Public License * along with DOUBANGO. * */ #ifndef _TEST_AUTH_H_ #define _TEST_AUTH_H_ struct auth_basic_msg { const char* userid; const char* password; const char* xres; }; struct auth_basic_msg auth_basic_msgs[] = { { "Aladdin"/*Ali baba*/, "open sesame", "QWxhZGRpbjpvcGVuIHNlc2FtZQ==" }, }; void test_basic_auth() { char *response = tsk_null; size_t i, size; for(i=0; i<sizeof(auth_basic_msgs)/sizeof(struct auth_basic_msg); i++) { size = thttp_auth_basic_response(auth_basic_msgs[i].userid, auth_basic_msgs[i].password, &response); if(tsk_striequals(auth_basic_msgs[i].xres, response)){ TSK_DEBUG_INFO("[HTTP_BASIC-%d] ==> OK", i); } else{ TSK_DEBUG_INFO("[HTTP_BASIC-%d] ==> NOK", i); } TSK_FREE(response); } } //======================================================================== struct auth_ws { const char* key; const char* xres; }; struct auth_ws auth_ws_msgs[] = { { "dGhlIHNhbXBsZSBub25jZQ==", "s3pPLMBiTxaQ9kYGzzhZRbK+xOo=" }, { "x3JJHMbDL1EzLkh9GBhXDw==", "HSmrc0sMlYUkAGmm5OPpG2HaGWk=" }, }; void test_ws_auth() { thttp_auth_ws_keystring_t response = {0}; size_t i, size; for(i=0; i<sizeof(auth_ws_msgs)/sizeof(struct auth_ws); i++) { size = thttp_auth_ws_response(auth_ws_msgs[i].key, &response); if(tsk_striequals(auth_ws_msgs[i].xres, response)){ TSK_DEBUG_INFO("[WS_AUTH-%d] ==> OK", i); } else{ TSK_DEBUG_INFO("[WS_AUTH-%d] ==> NOK", i); } } } //======================================================================== struct auth_digest_msg { const char* username; const char* password; const char* realm; const char* nonce; const char* method; const char* uri; const char* qop; const char* nc; const char* cnonce; const char* opaque; const char* entitybody; const char* response; }; struct auth_digest_msg auth_digest_msgs[] = { { "Mufasa", "Circle Of Life", "testrealm@host.com", "dcd98b7102dd2f0e8b11d0f600bfb0c093", "GET", "/dir/index.html", "auth", "00000001", "0a4f113b", "5ccc069c403ebaf9f0171e9517f40e41", 0, "6629fae49393a05397450978507c4ef1" } , }; void test_digest_auth() { tsk_md5string_t response, ha1, ha2; size_t i; for(i=0; i<sizeof(auth_digest_msgs)/sizeof(struct auth_digest_msg); i++) { tsk_buffer_t* entitybody; /* HA1 */ thttp_auth_digest_HA1(auth_digest_msgs[i].username, auth_digest_msgs[i].realm, auth_digest_msgs[i].password, &ha1); /* HA2 */ entitybody = tsk_buffer_create(auth_digest_msgs[i].entitybody, strlen(auth_digest_msgs[i].entitybody)); thttp_auth_digest_HA2(auth_digest_msgs[i].method, auth_digest_msgs[i].uri, entitybody, auth_digest_msgs[i].qop, &ha2); TSK_OBJECT_SAFE_FREE(entitybody); /* RESPONSE */ thttp_auth_digest_response(&ha1, auth_digest_msgs[i].nonce, auth_digest_msgs[i].nc, auth_digest_msgs[i].cnonce, auth_digest_msgs[i].qop, &ha2, &response); if(tsk_striequals(auth_digest_msgs[i].response, response)){ TSK_DEBUG_INFO("[HTTP_DIGEST-%d] ==> OK", i); } else{ TSK_DEBUG_INFO("[HTTP_DIGEST-%d] ==> NOK", i); } } } #endif /* _TEST_AUTH_H_ */