1*87d2adbcSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*87d2adbcSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*87d2adbcSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*87d2adbcSAndrew Rist * distributed with this work for additional information 6*87d2adbcSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*87d2adbcSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*87d2adbcSAndrew Rist * "License"); you may not use this file except in compliance 9*87d2adbcSAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 11*87d2adbcSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 13*87d2adbcSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*87d2adbcSAndrew Rist * software distributed under the License is distributed on an 15*87d2adbcSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*87d2adbcSAndrew Rist * KIND, either express or implied. See the License for the 17*87d2adbcSAndrew Rist * specific language governing permissions and limitations 18*87d2adbcSAndrew Rist * under the License. 19cdf0e10cSrcweir * 20*87d2adbcSAndrew Rist *************************************************************/ 21*87d2adbcSAndrew Rist 22*87d2adbcSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir 25cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 26cdf0e10cSrcweir #include "precompiled_sal.hxx" 27cdf0e10cSrcweir #include <testshl/simpleheader.hxx> 28cdf0e10cSrcweir 29cdf0e10cSrcweir #include <rtl/digest.h> 30cdf0e10cSrcweir #include <rtl/ustring.hxx> 31cdf0e10cSrcweir #include <rtl/ustrbuf.hxx> 32cdf0e10cSrcweir #include <rtl/strbuf.hxx> 33cdf0e10cSrcweir 34cdf0e10cSrcweir // sample, how to use digest 35cdf0e10cSrcweir 36cdf0e10cSrcweir rtl::OUString CreateMD5FromString( const rtl::OUString& aMsg ) 37cdf0e10cSrcweir { 38cdf0e10cSrcweir // PRE: aStr "file" 39cdf0e10cSrcweir // BACK: Str "ababab....0f" Hexcode String 40cdf0e10cSrcweir 41cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmMD5 ); 42cdf0e10cSrcweir if ( handle > 0 ) 43cdf0e10cSrcweir { 44cdf0e10cSrcweir const sal_uInt8* pData = (const sal_uInt8*)aMsg.getStr(); 45cdf0e10cSrcweir sal_uInt32 nSize = ( aMsg.getLength() * sizeof( sal_Unicode )); 46cdf0e10cSrcweir sal_uInt32 nMD5KeyLen = rtl_digest_queryLength( handle ); 47cdf0e10cSrcweir sal_uInt8* pMD5KeyBuffer = new sal_uInt8[ nMD5KeyLen ]; 48cdf0e10cSrcweir 49cdf0e10cSrcweir rtl_digest_init( handle, pData, nSize ); 50cdf0e10cSrcweir rtl_digest_update( handle, pData, nSize ); 51cdf0e10cSrcweir rtl_digest_get( handle, pMD5KeyBuffer, nMD5KeyLen ); 52cdf0e10cSrcweir rtl_digest_destroy( handle ); 53cdf0e10cSrcweir 54cdf0e10cSrcweir // Create hex-value string from the MD5 value to keep the string size minimal 55cdf0e10cSrcweir rtl::OUStringBuffer aBuffer( nMD5KeyLen * 2 + 1 ); 56cdf0e10cSrcweir for ( sal_uInt32 i = 0; i < nMD5KeyLen; i++ ) 57cdf0e10cSrcweir aBuffer.append( (sal_Int32)pMD5KeyBuffer[i], 16 ); 58cdf0e10cSrcweir 59cdf0e10cSrcweir delete [] pMD5KeyBuffer; 60cdf0e10cSrcweir return aBuffer.makeStringAndClear(); 61cdf0e10cSrcweir } 62cdf0e10cSrcweir 63cdf0e10cSrcweir return rtl::OUString(); 64cdf0e10cSrcweir } 65cdf0e10cSrcweir 66cdf0e10cSrcweir // ----------------------------------------------------------------------------- 67cdf0e10cSrcweir namespace rtl_digest 68cdf0e10cSrcweir { 69cdf0e10cSrcweir 70cdf0e10cSrcweir rtl::OString sSampleString = "This is a sample sentence, which we use to check some crypto functions in sal."; 71cdf0e10cSrcweir rtl::OString sSampleString_MD2 = "647ee6c9d4aa5fdd374ed9d7a156acbf"; 72cdf0e10cSrcweir rtl::OString sSampleString_MD5 = "b16b903e6fc0b62ae389013ed93fe531"; 73cdf0e10cSrcweir rtl::OString sSampleString_SHA = "eab2814429b2613301c8a077b806af3680548914"; 74cdf0e10cSrcweir rtl::OString sSampleString_SHA1 = "2bc5bdb7506a2cdc2fd27fc8b9889343012d5008"; 75cdf0e10cSrcweir rtl::OString sSampleString_HMAC_MD5 = "dd9cba48c972fba0a882baa72b079674"; 76cdf0e10cSrcweir rtl::OString sSampleString_HMAC_SHA1 = "5d7f43ce6abd1de4438d7e69e01495864490cf3e"; 77cdf0e10cSrcweir 78cdf0e10cSrcweir rtl::OString sSampleString_only_one_diff = "This is a sample sentence. which we use to check some crypto functions in sal."; 79cdf0e10cSrcweir 80cdf0e10cSrcweir class create : public CppUnit::TestFixture 81cdf0e10cSrcweir { 82cdf0e10cSrcweir public: 83cdf0e10cSrcweir // initialise your test code values here. 84cdf0e10cSrcweir void setUp() 85cdf0e10cSrcweir { 86cdf0e10cSrcweir } 87cdf0e10cSrcweir 88cdf0e10cSrcweir void tearDown() 89cdf0e10cSrcweir { 90cdf0e10cSrcweir } 91cdf0e10cSrcweir 92cdf0e10cSrcweir void create_001() 93cdf0e10cSrcweir { 94cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmMD5 ); 95cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("create with rtl_Digest_AlgorithmMD5", handle != 0); 96cdf0e10cSrcweir rtl_digest_destroy( handle ); 97cdf0e10cSrcweir } 98cdf0e10cSrcweir void create_002() 99cdf0e10cSrcweir { 100cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmMD2 ); 101cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("create with rtl_Digest_AlgorithmMD2", handle != 0); 102cdf0e10cSrcweir rtl_digest_destroy( handle ); 103cdf0e10cSrcweir } 104cdf0e10cSrcweir void create_003() 105cdf0e10cSrcweir { 106cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmSHA ); 107cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("create with rtl_Digest_AlgorithmSHA", handle != 0); 108cdf0e10cSrcweir rtl_digest_destroy( handle ); 109cdf0e10cSrcweir } 110cdf0e10cSrcweir void create_004() 111cdf0e10cSrcweir { 112cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmSHA1 ); 113cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("create with rtl_Digest_AlgorithmSHA1", handle != 0); 114cdf0e10cSrcweir rtl_digest_destroy( handle ); 115cdf0e10cSrcweir } 116cdf0e10cSrcweir void create_005() 117cdf0e10cSrcweir { 118cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmHMAC_MD5 ); 119cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("create with rtl_Digest_AlgorithmHMAC_MD5", handle != 0); 120cdf0e10cSrcweir rtl_digest_destroy( handle ); 121cdf0e10cSrcweir } 122cdf0e10cSrcweir void create_006() 123cdf0e10cSrcweir { 124cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmHMAC_SHA1 ); 125cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("create with rtl_Digest_AlgorithmHMAC_SHA1", handle != 0); 126cdf0e10cSrcweir rtl_digest_destroy( handle ); 127cdf0e10cSrcweir } 128cdf0e10cSrcweir 129cdf0e10cSrcweir void create_007() 130cdf0e10cSrcweir { 131cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmInvalid ); 132cdf0e10cSrcweir t_print("Handle is %x\n", handle); 133cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("create with NULL", handle == 0); 134cdf0e10cSrcweir rtl_digest_destroy( handle ); 135cdf0e10cSrcweir } 136cdf0e10cSrcweir 137cdf0e10cSrcweir // Change the following lines only, if you add, remove or rename 138cdf0e10cSrcweir // member functions of the current class, 139cdf0e10cSrcweir // because these macros are need by auto register mechanism. 140cdf0e10cSrcweir 141cdf0e10cSrcweir CPPUNIT_TEST_SUITE(create); 142cdf0e10cSrcweir CPPUNIT_TEST(create_001); 143cdf0e10cSrcweir CPPUNIT_TEST(create_002); 144cdf0e10cSrcweir CPPUNIT_TEST(create_003); 145cdf0e10cSrcweir CPPUNIT_TEST(create_004); 146cdf0e10cSrcweir CPPUNIT_TEST(create_005); 147cdf0e10cSrcweir CPPUNIT_TEST(create_006); 148cdf0e10cSrcweir CPPUNIT_TEST(create_007); 149cdf0e10cSrcweir CPPUNIT_TEST_SUITE_END(); 150cdf0e10cSrcweir }; // class create 151cdf0e10cSrcweir 152cdf0e10cSrcweir 153cdf0e10cSrcweir 154cdf0e10cSrcweir 155cdf0e10cSrcweir // ----------------------------------------------------------------------------- 156cdf0e10cSrcweir 157cdf0e10cSrcweir class createMD5 : public CppUnit::TestFixture 158cdf0e10cSrcweir { 159cdf0e10cSrcweir public: 160cdf0e10cSrcweir // initialise your test code values here. 161cdf0e10cSrcweir void setUp() 162cdf0e10cSrcweir { 163cdf0e10cSrcweir } 164cdf0e10cSrcweir 165cdf0e10cSrcweir void tearDown() 166cdf0e10cSrcweir { 167cdf0e10cSrcweir } 168cdf0e10cSrcweir 169cdf0e10cSrcweir void createMD5_001() 170cdf0e10cSrcweir { 171cdf0e10cSrcweir rtlDigest handle = rtl_digest_createMD5(); 172cdf0e10cSrcweir 173cdf0e10cSrcweir rtlDigestAlgorithm aAlgo = rtl_digest_queryAlgorithm(handle); 174cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("query handle", rtl_Digest_AlgorithmMD5 == aAlgo); 175cdf0e10cSrcweir 176cdf0e10cSrcweir rtl_digest_destroy( handle ); 177cdf0e10cSrcweir } 178cdf0e10cSrcweir CPPUNIT_TEST_SUITE(createMD5); 179cdf0e10cSrcweir CPPUNIT_TEST(createMD5_001); 180cdf0e10cSrcweir CPPUNIT_TEST_SUITE_END(); 181cdf0e10cSrcweir }; // class create 182cdf0e10cSrcweir 183cdf0e10cSrcweir 184cdf0e10cSrcweir // ----------------------------------------------------------------------------- 185cdf0e10cSrcweir 186cdf0e10cSrcweir class createMD2 : public CppUnit::TestFixture 187cdf0e10cSrcweir { 188cdf0e10cSrcweir public: 189cdf0e10cSrcweir // initialise your test code values here. 190cdf0e10cSrcweir void setUp() 191cdf0e10cSrcweir { 192cdf0e10cSrcweir } 193cdf0e10cSrcweir 194cdf0e10cSrcweir void tearDown() 195cdf0e10cSrcweir { 196cdf0e10cSrcweir } 197cdf0e10cSrcweir 198cdf0e10cSrcweir void createMD2_001() 199cdf0e10cSrcweir { 200cdf0e10cSrcweir rtlDigest handle = rtl_digest_createMD2( ); 201cdf0e10cSrcweir 202cdf0e10cSrcweir rtlDigestAlgorithm aAlgo = rtl_digest_queryAlgorithm(handle); 203cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("query handle", rtl_Digest_AlgorithmMD2 == aAlgo); 204cdf0e10cSrcweir 205cdf0e10cSrcweir rtl_digest_destroy( handle ); 206cdf0e10cSrcweir } 207cdf0e10cSrcweir CPPUNIT_TEST_SUITE(createMD2); 208cdf0e10cSrcweir CPPUNIT_TEST(createMD2_001); 209cdf0e10cSrcweir CPPUNIT_TEST_SUITE_END(); 210cdf0e10cSrcweir }; // class create 211cdf0e10cSrcweir 212cdf0e10cSrcweir // ----------------------------------------------------------------------------- 213cdf0e10cSrcweir 214cdf0e10cSrcweir class createSHA : public CppUnit::TestFixture 215cdf0e10cSrcweir { 216cdf0e10cSrcweir public: 217cdf0e10cSrcweir // initialise your test code values here. 218cdf0e10cSrcweir void setUp() 219cdf0e10cSrcweir { 220cdf0e10cSrcweir } 221cdf0e10cSrcweir 222cdf0e10cSrcweir void tearDown() 223cdf0e10cSrcweir { 224cdf0e10cSrcweir } 225cdf0e10cSrcweir 226cdf0e10cSrcweir void createSHA_001() 227cdf0e10cSrcweir { 228cdf0e10cSrcweir rtlDigest handle = rtl_digest_createSHA( ); 229cdf0e10cSrcweir 230cdf0e10cSrcweir rtlDigestAlgorithm aAlgo = rtl_digest_queryAlgorithm(handle); 231cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("query handle", rtl_Digest_AlgorithmSHA == aAlgo); 232cdf0e10cSrcweir 233cdf0e10cSrcweir rtl_digest_destroy( handle ); 234cdf0e10cSrcweir } 235cdf0e10cSrcweir CPPUNIT_TEST_SUITE(createSHA); 236cdf0e10cSrcweir CPPUNIT_TEST(createSHA_001); 237cdf0e10cSrcweir CPPUNIT_TEST_SUITE_END(); 238cdf0e10cSrcweir }; // class create 239cdf0e10cSrcweir // ----------------------------------------------------------------------------- 240cdf0e10cSrcweir 241cdf0e10cSrcweir class createSHA1 : public CppUnit::TestFixture 242cdf0e10cSrcweir { 243cdf0e10cSrcweir public: 244cdf0e10cSrcweir // initialise your test code values here. 245cdf0e10cSrcweir void setUp() 246cdf0e10cSrcweir { 247cdf0e10cSrcweir } 248cdf0e10cSrcweir 249cdf0e10cSrcweir void tearDown() 250cdf0e10cSrcweir { 251cdf0e10cSrcweir } 252cdf0e10cSrcweir 253cdf0e10cSrcweir void createSHA1_001() 254cdf0e10cSrcweir { 255cdf0e10cSrcweir rtlDigest handle = rtl_digest_createSHA1(); 256cdf0e10cSrcweir 257cdf0e10cSrcweir rtlDigestAlgorithm aAlgo = rtl_digest_queryAlgorithm(handle); 258cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("query handle", rtl_Digest_AlgorithmSHA1 == aAlgo); 259cdf0e10cSrcweir 260cdf0e10cSrcweir rtl_digest_destroy( handle ); 261cdf0e10cSrcweir } 262cdf0e10cSrcweir CPPUNIT_TEST_SUITE(createSHA1); 263cdf0e10cSrcweir CPPUNIT_TEST(createSHA1_001); 264cdf0e10cSrcweir CPPUNIT_TEST_SUITE_END(); 265cdf0e10cSrcweir }; // class create 266cdf0e10cSrcweir // ----------------------------------------------------------------------------- 267cdf0e10cSrcweir 268cdf0e10cSrcweir class createHMAC_MD5 : public CppUnit::TestFixture 269cdf0e10cSrcweir { 270cdf0e10cSrcweir public: 271cdf0e10cSrcweir // initialise your test code values here. 272cdf0e10cSrcweir void setUp() 273cdf0e10cSrcweir { 274cdf0e10cSrcweir } 275cdf0e10cSrcweir 276cdf0e10cSrcweir void tearDown() 277cdf0e10cSrcweir { 278cdf0e10cSrcweir } 279cdf0e10cSrcweir 280cdf0e10cSrcweir void createHMAC_MD5_001() 281cdf0e10cSrcweir { 282cdf0e10cSrcweir rtlDigest handle = rtl_digest_createHMAC_MD5(); 283cdf0e10cSrcweir 284cdf0e10cSrcweir rtlDigestAlgorithm aAlgo = rtl_digest_queryAlgorithm(handle); 285cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("query handle", rtl_Digest_AlgorithmHMAC_MD5 == aAlgo); 286cdf0e10cSrcweir 287cdf0e10cSrcweir rtl_digest_destroy( handle ); 288cdf0e10cSrcweir } 289cdf0e10cSrcweir CPPUNIT_TEST_SUITE(createHMAC_MD5); 290cdf0e10cSrcweir CPPUNIT_TEST(createHMAC_MD5_001); 291cdf0e10cSrcweir CPPUNIT_TEST_SUITE_END(); 292cdf0e10cSrcweir }; // class create 293cdf0e10cSrcweir // ----------------------------------------------------------------------------- 294cdf0e10cSrcweir 295cdf0e10cSrcweir class createHMAC_SHA1 : public CppUnit::TestFixture 296cdf0e10cSrcweir { 297cdf0e10cSrcweir public: 298cdf0e10cSrcweir // initialise your test code values here. 299cdf0e10cSrcweir void setUp() 300cdf0e10cSrcweir { 301cdf0e10cSrcweir } 302cdf0e10cSrcweir 303cdf0e10cSrcweir void tearDown() 304cdf0e10cSrcweir { 305cdf0e10cSrcweir } 306cdf0e10cSrcweir 307cdf0e10cSrcweir void createHMAC_SHA1_001() 308cdf0e10cSrcweir { 309cdf0e10cSrcweir rtlDigest handle = rtl_digest_createHMAC_SHA1(); 310cdf0e10cSrcweir 311cdf0e10cSrcweir rtlDigestAlgorithm aAlgo = rtl_digest_queryAlgorithm(handle); 312cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("query handle", rtl_Digest_AlgorithmHMAC_SHA1 == aAlgo); 313cdf0e10cSrcweir 314cdf0e10cSrcweir rtl_digest_destroy( handle ); 315cdf0e10cSrcweir } 316cdf0e10cSrcweir 317cdf0e10cSrcweir 318cdf0e10cSrcweir CPPUNIT_TEST_SUITE(createHMAC_SHA1); 319cdf0e10cSrcweir CPPUNIT_TEST(createHMAC_SHA1_001); 320cdf0e10cSrcweir CPPUNIT_TEST_SUITE_END(); 321cdf0e10cSrcweir }; // class create 322cdf0e10cSrcweir 323cdf0e10cSrcweir // ----------------------------------------------------------------------------- 324cdf0e10cSrcweir 325cdf0e10cSrcweir class queryAlgorithm : public CppUnit::TestFixture 326cdf0e10cSrcweir { 327cdf0e10cSrcweir public: 328cdf0e10cSrcweir // initialise your test code values here. 329cdf0e10cSrcweir void setUp() 330cdf0e10cSrcweir { 331cdf0e10cSrcweir } 332cdf0e10cSrcweir 333cdf0e10cSrcweir void tearDown() 334cdf0e10cSrcweir { 335cdf0e10cSrcweir } 336cdf0e10cSrcweir 337cdf0e10cSrcweir void query_001() 338cdf0e10cSrcweir { 339cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmMD5 ); 340cdf0e10cSrcweir 341cdf0e10cSrcweir rtlDigestAlgorithm aAlgo = rtl_digest_queryAlgorithm(handle); 342cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("query handle", rtl_Digest_AlgorithmMD5 == aAlgo); 343cdf0e10cSrcweir 344cdf0e10cSrcweir rtl_digest_destroy( handle ); 345cdf0e10cSrcweir } 346cdf0e10cSrcweir void query_002() 347cdf0e10cSrcweir { 348cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmMD2 ); 349cdf0e10cSrcweir 350cdf0e10cSrcweir rtlDigestAlgorithm aAlgo = rtl_digest_queryAlgorithm(handle); 351cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("query handle", rtl_Digest_AlgorithmMD2 == aAlgo); 352cdf0e10cSrcweir 353cdf0e10cSrcweir rtl_digest_destroy( handle ); 354cdf0e10cSrcweir } 355cdf0e10cSrcweir void query_003() 356cdf0e10cSrcweir { 357cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmSHA ); 358cdf0e10cSrcweir 359cdf0e10cSrcweir rtlDigestAlgorithm aAlgo = rtl_digest_queryAlgorithm(handle); 360cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("query handle", rtl_Digest_AlgorithmSHA == aAlgo); 361cdf0e10cSrcweir 362cdf0e10cSrcweir rtl_digest_destroy( handle ); 363cdf0e10cSrcweir } 364cdf0e10cSrcweir void query_004() 365cdf0e10cSrcweir { 366cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmSHA1 ); 367cdf0e10cSrcweir 368cdf0e10cSrcweir rtlDigestAlgorithm aAlgo = rtl_digest_queryAlgorithm(handle); 369cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("query handle", rtl_Digest_AlgorithmSHA1 == aAlgo); 370cdf0e10cSrcweir 371cdf0e10cSrcweir rtl_digest_destroy( handle ); 372cdf0e10cSrcweir } 373cdf0e10cSrcweir void query_005() 374cdf0e10cSrcweir { 375cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmHMAC_MD5 ); 376cdf0e10cSrcweir 377cdf0e10cSrcweir rtlDigestAlgorithm aAlgo = rtl_digest_queryAlgorithm(handle); 378cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("query handle", rtl_Digest_AlgorithmHMAC_MD5 == aAlgo); 379cdf0e10cSrcweir 380cdf0e10cSrcweir rtl_digest_destroy( handle ); 381cdf0e10cSrcweir } 382cdf0e10cSrcweir void query_006() 383cdf0e10cSrcweir { 384cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmHMAC_SHA1 ); 385cdf0e10cSrcweir 386cdf0e10cSrcweir rtlDigestAlgorithm aAlgo = rtl_digest_queryAlgorithm(handle); 387cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("query handle", rtl_Digest_AlgorithmHMAC_SHA1 == aAlgo); 388cdf0e10cSrcweir 389cdf0e10cSrcweir rtl_digest_destroy( handle ); 390cdf0e10cSrcweir } 391cdf0e10cSrcweir void query_007() 392cdf0e10cSrcweir { 393cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmInvalid ); 394cdf0e10cSrcweir 395cdf0e10cSrcweir rtlDigestAlgorithm aAlgo = rtl_digest_queryAlgorithm(handle); 396cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("query handle", rtl_Digest_AlgorithmInvalid == aAlgo); 397cdf0e10cSrcweir 398cdf0e10cSrcweir rtl_digest_destroy( handle ); 399cdf0e10cSrcweir } 400cdf0e10cSrcweir 401cdf0e10cSrcweir // Change the following lines only, if you add, remove or rename 402cdf0e10cSrcweir // member functions of the current class, 403cdf0e10cSrcweir // because these macros are need by auto register mechanism. 404cdf0e10cSrcweir 405cdf0e10cSrcweir CPPUNIT_TEST_SUITE(queryAlgorithm); 406cdf0e10cSrcweir CPPUNIT_TEST( query_001 ); 407cdf0e10cSrcweir CPPUNIT_TEST( query_002 ); 408cdf0e10cSrcweir CPPUNIT_TEST( query_003 ); 409cdf0e10cSrcweir CPPUNIT_TEST( query_004 ); 410cdf0e10cSrcweir CPPUNIT_TEST( query_005 ); 411cdf0e10cSrcweir CPPUNIT_TEST( query_006 ); 412cdf0e10cSrcweir CPPUNIT_TEST( query_007 ); 413cdf0e10cSrcweir CPPUNIT_TEST_SUITE_END(); 414cdf0e10cSrcweir }; // class create 415cdf0e10cSrcweir 416cdf0e10cSrcweir 417cdf0e10cSrcweir // ----------------------------------------------------------------------------- 418cdf0e10cSrcweir class queryLength : public CppUnit::TestFixture 419cdf0e10cSrcweir { 420cdf0e10cSrcweir public: 421cdf0e10cSrcweir // initialise your test code values here. 422cdf0e10cSrcweir void setUp() 423cdf0e10cSrcweir { 424cdf0e10cSrcweir } 425cdf0e10cSrcweir 426cdf0e10cSrcweir void tearDown() 427cdf0e10cSrcweir { 428cdf0e10cSrcweir } 429cdf0e10cSrcweir 430cdf0e10cSrcweir void queryLength_MD5() 431cdf0e10cSrcweir { 432cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmMD5 ); 433cdf0e10cSrcweir 434cdf0e10cSrcweir sal_uInt32 nAlgoLength = rtl_digest_queryLength(handle); 435cdf0e10cSrcweir // t_print("nAlgoLength:=%d\n", nAlgoLength); 436cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("query Length", RTL_DIGEST_LENGTH_MD5 == nAlgoLength); 437cdf0e10cSrcweir 438cdf0e10cSrcweir rtl_digest_destroy( handle ); 439cdf0e10cSrcweir } 440cdf0e10cSrcweir void queryLength_MD2() 441cdf0e10cSrcweir { 442cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmMD2 ); 443cdf0e10cSrcweir 444cdf0e10cSrcweir sal_uInt32 nAlgoLength = rtl_digest_queryLength(handle); 445cdf0e10cSrcweir // t_print("nAlgoLength:=%d\n", nAlgoLength); 446cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("query length", RTL_DIGEST_LENGTH_MD2 == nAlgoLength); 447cdf0e10cSrcweir 448cdf0e10cSrcweir rtl_digest_destroy( handle ); 449cdf0e10cSrcweir } 450cdf0e10cSrcweir void queryLength_SHA() 451cdf0e10cSrcweir { 452cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmSHA ); 453cdf0e10cSrcweir 454cdf0e10cSrcweir sal_uInt32 nAlgoLength = rtl_digest_queryLength(handle); 455cdf0e10cSrcweir // t_print("nAlgoLength:=%d\n", nAlgoLength); 456cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("query length", RTL_DIGEST_LENGTH_SHA == nAlgoLength); 457cdf0e10cSrcweir 458cdf0e10cSrcweir rtl_digest_destroy( handle ); 459cdf0e10cSrcweir } 460cdf0e10cSrcweir void queryLength_SHA1() 461cdf0e10cSrcweir { 462cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmSHA1 ); 463cdf0e10cSrcweir 464cdf0e10cSrcweir sal_uInt32 nAlgoLength = rtl_digest_queryLength(handle); 465cdf0e10cSrcweir // t_print("nAlgoLength:=%d\n", nAlgoLength); 466cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("query length", RTL_DIGEST_LENGTH_SHA1 == nAlgoLength); 467cdf0e10cSrcweir 468cdf0e10cSrcweir rtl_digest_destroy( handle ); 469cdf0e10cSrcweir } 470cdf0e10cSrcweir void queryLength_HMAC_MD5() 471cdf0e10cSrcweir { 472cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmHMAC_MD5 ); 473cdf0e10cSrcweir 474cdf0e10cSrcweir sal_uInt32 nAlgoLength = rtl_digest_queryLength(handle); 475cdf0e10cSrcweir // t_print("nAlgoLength:=%d\n", nAlgoLength); 476cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("query length", RTL_DIGEST_LENGTH_HMAC_MD5 == nAlgoLength); 477cdf0e10cSrcweir 478cdf0e10cSrcweir rtl_digest_destroy( handle ); 479cdf0e10cSrcweir } 480cdf0e10cSrcweir void queryLength_HMAC_SHA1() 481cdf0e10cSrcweir { 482cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmHMAC_SHA1 ); 483cdf0e10cSrcweir 484cdf0e10cSrcweir sal_uInt32 nAlgoLength = rtl_digest_queryLength(handle); 485cdf0e10cSrcweir // t_print("nAlgoLength:=%d\n", nAlgoLength); 486cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("query length", RTL_DIGEST_LENGTH_HMAC_SHA1 == nAlgoLength); 487cdf0e10cSrcweir 488cdf0e10cSrcweir rtl_digest_destroy( handle ); 489cdf0e10cSrcweir } 490cdf0e10cSrcweir 491cdf0e10cSrcweir void queryLength_Illegal() 492cdf0e10cSrcweir { 493cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmInvalid ); 494cdf0e10cSrcweir 495cdf0e10cSrcweir sal_uInt32 nAlgoLength = rtl_digest_queryLength(handle); 496cdf0e10cSrcweir // t_print("nAlgoLength:=%d\n", nAlgoLength); 497cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("query length", 0 == nAlgoLength); 498cdf0e10cSrcweir 499cdf0e10cSrcweir rtl_digest_destroy( handle ); 500cdf0e10cSrcweir } 501cdf0e10cSrcweir 502cdf0e10cSrcweir // Change the following lines only, if you add, remove or rename 503cdf0e10cSrcweir // member functions of the current class, 504cdf0e10cSrcweir // because these macros are need by auto register mechanism. 505cdf0e10cSrcweir 506cdf0e10cSrcweir CPPUNIT_TEST_SUITE(queryLength); 507cdf0e10cSrcweir CPPUNIT_TEST( queryLength_MD2 ); 508cdf0e10cSrcweir CPPUNIT_TEST( queryLength_MD5 ); 509cdf0e10cSrcweir CPPUNIT_TEST( queryLength_SHA ); 510cdf0e10cSrcweir CPPUNIT_TEST( queryLength_SHA1 ); 511cdf0e10cSrcweir CPPUNIT_TEST( queryLength_HMAC_MD5 ); 512cdf0e10cSrcweir CPPUNIT_TEST( queryLength_HMAC_SHA1 ); 513cdf0e10cSrcweir CPPUNIT_TEST( queryLength_Illegal ); 514cdf0e10cSrcweir CPPUNIT_TEST_SUITE_END(); 515cdf0e10cSrcweir }; // class create 516cdf0e10cSrcweir 517cdf0e10cSrcweir // ----------------------------------------------------------------------------- 518cdf0e10cSrcweir 519cdf0e10cSrcweir rtl::OString createHex(sal_uInt8 *_pMD5KeyBuffer, sal_uInt32 _nMD5KeyLen) 520cdf0e10cSrcweir { 521cdf0e10cSrcweir // Create hex-value string from the MD5 value to keep the string size minimal 522cdf0e10cSrcweir rtl::OStringBuffer aBuffer( _nMD5KeyLen * 2 + 1 ); 523cdf0e10cSrcweir for ( sal_uInt32 i = 0; i < _nMD5KeyLen; i++ ) 524cdf0e10cSrcweir { 525cdf0e10cSrcweir sal_Int32 nValue = (sal_Int32)_pMD5KeyBuffer[i]; 526cdf0e10cSrcweir if (nValue < 16) // maximul hex value for 1 byte 527cdf0e10cSrcweir { 528cdf0e10cSrcweir aBuffer.append( sal_Int32(0), 16 /* radix */ ); 529cdf0e10cSrcweir } 530cdf0e10cSrcweir aBuffer.append( nValue, 16 /* radix */ ); 531cdf0e10cSrcweir } 532cdf0e10cSrcweir 533cdf0e10cSrcweir return aBuffer.makeStringAndClear(); 534cdf0e10cSrcweir } 535cdf0e10cSrcweir 536cdf0e10cSrcweir 537cdf0e10cSrcweir // ----------------------------------------------------------------------------- 538cdf0e10cSrcweir class init : public CppUnit::TestFixture 539cdf0e10cSrcweir { 540cdf0e10cSrcweir public: 541cdf0e10cSrcweir // initialise your test code values here. 542cdf0e10cSrcweir void setUp() 543cdf0e10cSrcweir { 544cdf0e10cSrcweir } 545cdf0e10cSrcweir 546cdf0e10cSrcweir void tearDown() 547cdf0e10cSrcweir { 548cdf0e10cSrcweir } 549cdf0e10cSrcweir 550cdf0e10cSrcweir void init_000() 551cdf0e10cSrcweir { 552cdf0e10cSrcweir rtlDigest handle = NULL; 553cdf0e10cSrcweir 554cdf0e10cSrcweir rtlDigestError aError = rtl_digest_init(handle, NULL, 0); 555cdf0e10cSrcweir 556cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("init(NULL, 0, 0)", aError == rtl_Digest_E_Argument); 557cdf0e10cSrcweir } 558cdf0e10cSrcweir 559cdf0e10cSrcweir void init_001() 560cdf0e10cSrcweir { 561cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmMD5 ); 562cdf0e10cSrcweir 563cdf0e10cSrcweir rtlDigestError aError = rtl_digest_init(handle, NULL, 0); 564cdf0e10cSrcweir 565cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("init(handle, 0, 0)", aError == rtl_Digest_E_None); 566cdf0e10cSrcweir 567cdf0e10cSrcweir rtl_digest_destroy( handle ); 568cdf0e10cSrcweir } 569cdf0e10cSrcweir 570cdf0e10cSrcweir // ------------------------------------ 571cdf0e10cSrcweir void init_MD2() 572cdf0e10cSrcweir { 573cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmMD2 ); 574cdf0e10cSrcweir 575cdf0e10cSrcweir rtl::OString aMsg = sSampleString; 576cdf0e10cSrcweir const sal_uInt8 *pData = (const sal_uInt8*)aMsg.getStr(); 577cdf0e10cSrcweir sal_uInt32 nSize = ( aMsg.getLength() ); 578cdf0e10cSrcweir 579cdf0e10cSrcweir rtlDigestError aError = rtl_digest_init(handle, pData, nSize); 580cdf0e10cSrcweir 581cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("init(handle, pData, nSize)", aError == rtl_Digest_E_None); 582cdf0e10cSrcweir 583cdf0e10cSrcweir rtl_digest_update( handle, pData, nSize ); 584cdf0e10cSrcweir 585cdf0e10cSrcweir sal_uInt32 nKeyLen = rtl_digest_queryLength( handle ); 586cdf0e10cSrcweir sal_uInt8 *pKeyBuffer = new sal_uInt8[ nKeyLen ]; 587cdf0e10cSrcweir 588cdf0e10cSrcweir rtl_digest_get( handle, pKeyBuffer, nKeyLen ); 589cdf0e10cSrcweir rtl::OString aSum = createHex(pKeyBuffer, nKeyLen); 590cdf0e10cSrcweir delete [] pKeyBuffer; 591cdf0e10cSrcweir 592cdf0e10cSrcweir t_print("MD2 Sum: %s\n", aSum.getStr()); 593cdf0e10cSrcweir // LLA: how to check right values 594cdf0e10cSrcweir // samples? 595cdf0e10cSrcweir 596cdf0e10cSrcweir rtl_digest_destroy( handle ); 597cdf0e10cSrcweir } 598cdf0e10cSrcweir 599cdf0e10cSrcweir void init_MD5() 600cdf0e10cSrcweir { 601cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmMD5 ); 602cdf0e10cSrcweir 603cdf0e10cSrcweir rtl::OString aMsg = sSampleString; 604cdf0e10cSrcweir const sal_uInt8 *pData = (const sal_uInt8*)aMsg.getStr(); 605cdf0e10cSrcweir sal_uInt32 nSize = ( aMsg.getLength() ); 606cdf0e10cSrcweir 607cdf0e10cSrcweir rtlDigestError aError = rtl_digest_init(handle, pData, nSize); 608cdf0e10cSrcweir 609cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("init(handle, pData, nSize)", aError == rtl_Digest_E_None); 610cdf0e10cSrcweir 611cdf0e10cSrcweir rtl_digest_update( handle, pData, nSize ); 612cdf0e10cSrcweir 613cdf0e10cSrcweir sal_uInt32 nKeyLen = rtl_digest_queryLength( handle ); 614cdf0e10cSrcweir sal_uInt8 *pKeyBuffer = new sal_uInt8[ nKeyLen ]; 615cdf0e10cSrcweir 616cdf0e10cSrcweir rtl_digest_get( handle, pKeyBuffer, nKeyLen ); 617cdf0e10cSrcweir rtl::OString aSum = createHex(pKeyBuffer, nKeyLen); 618cdf0e10cSrcweir delete [] pKeyBuffer; 619cdf0e10cSrcweir 620cdf0e10cSrcweir t_print("MD5 Sum: %s\n", aSum.getStr()); 621cdf0e10cSrcweir // LLA: how to check right values 622cdf0e10cSrcweir // samples? 623cdf0e10cSrcweir 624cdf0e10cSrcweir rtl_digest_destroy( handle ); 625cdf0e10cSrcweir } 626cdf0e10cSrcweir 627cdf0e10cSrcweir void init_SHA() 628cdf0e10cSrcweir { 629cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmSHA ); 630cdf0e10cSrcweir 631cdf0e10cSrcweir rtl::OString aMsg = sSampleString; 632cdf0e10cSrcweir const sal_uInt8 *pData = (const sal_uInt8*)aMsg.getStr(); 633cdf0e10cSrcweir sal_uInt32 nSize = ( aMsg.getLength() ); 634cdf0e10cSrcweir 635cdf0e10cSrcweir rtlDigestError aError = rtl_digest_init(handle, pData, nSize); 636cdf0e10cSrcweir 637cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("init(handle, pData, nSize)", aError == rtl_Digest_E_None); 638cdf0e10cSrcweir 639cdf0e10cSrcweir rtl_digest_update( handle, pData, nSize ); 640cdf0e10cSrcweir 641cdf0e10cSrcweir sal_uInt32 nKeyLen = rtl_digest_queryLength( handle ); 642cdf0e10cSrcweir sal_uInt8 *pKeyBuffer = new sal_uInt8[ nKeyLen ]; 643cdf0e10cSrcweir 644cdf0e10cSrcweir rtl_digest_get( handle, pKeyBuffer, nKeyLen ); 645cdf0e10cSrcweir rtl::OString aSum = createHex(pKeyBuffer, nKeyLen); 646cdf0e10cSrcweir delete [] pKeyBuffer; 647cdf0e10cSrcweir 648cdf0e10cSrcweir t_print("SHA Sum: %s\n", aSum.getStr()); 649cdf0e10cSrcweir // LLA: how to check right values 650cdf0e10cSrcweir // samples? 651cdf0e10cSrcweir 652cdf0e10cSrcweir rtl_digest_destroy( handle ); 653cdf0e10cSrcweir } 654cdf0e10cSrcweir void init_SHA1() 655cdf0e10cSrcweir { 656cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmSHA1 ); 657cdf0e10cSrcweir 658cdf0e10cSrcweir rtl::OString aMsg = sSampleString; 659cdf0e10cSrcweir const sal_uInt8 *pData = (const sal_uInt8*)aMsg.getStr(); 660cdf0e10cSrcweir sal_uInt32 nSize = ( aMsg.getLength() ); 661cdf0e10cSrcweir 662cdf0e10cSrcweir rtlDigestError aError = rtl_digest_init(handle, pData, nSize); 663cdf0e10cSrcweir 664cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("init(handle, pData, nSize)", aError == rtl_Digest_E_None); 665cdf0e10cSrcweir 666cdf0e10cSrcweir rtl_digest_update( handle, pData, nSize ); 667cdf0e10cSrcweir 668cdf0e10cSrcweir sal_uInt32 nKeyLen = rtl_digest_queryLength( handle ); 669cdf0e10cSrcweir sal_uInt8 *pKeyBuffer = new sal_uInt8[ nKeyLen ]; 670cdf0e10cSrcweir 671cdf0e10cSrcweir rtl_digest_get( handle, pKeyBuffer, nKeyLen ); 672cdf0e10cSrcweir rtl::OString aSum = createHex(pKeyBuffer, nKeyLen); 673cdf0e10cSrcweir delete [] pKeyBuffer; 674cdf0e10cSrcweir 675cdf0e10cSrcweir t_print("SHA1 Sum: %s\n", aSum.getStr()); 676cdf0e10cSrcweir // LLA: how to check right values 677cdf0e10cSrcweir // samples? 678cdf0e10cSrcweir 679cdf0e10cSrcweir rtl_digest_destroy( handle ); 680cdf0e10cSrcweir } 681cdf0e10cSrcweir void init_HMAC_MD5() 682cdf0e10cSrcweir { 683cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmHMAC_MD5 ); 684cdf0e10cSrcweir 685cdf0e10cSrcweir rtl::OString aMsg = sSampleString; 686cdf0e10cSrcweir const sal_uInt8 *pData = (const sal_uInt8*)aMsg.getStr(); 687cdf0e10cSrcweir sal_uInt32 nSize = ( aMsg.getLength() ); 688cdf0e10cSrcweir 689cdf0e10cSrcweir sal_uInt32 nKeyLen = rtl_digest_queryLength( handle ); 690cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE( "Keylen must be greater 0", nKeyLen ); 691cdf0e10cSrcweir 692cdf0e10cSrcweir sal_uInt8 *pKeyBuffer = new sal_uInt8[ nKeyLen ]; 693cdf0e10cSrcweir CPPUNIT_ASSERT( pKeyBuffer ); 694cdf0e10cSrcweir memset(pKeyBuffer, 0, nKeyLen); 695cdf0e10cSrcweir 696cdf0e10cSrcweir rtlDigestError aError = rtl_digest_init(handle, pKeyBuffer, nKeyLen ); 697cdf0e10cSrcweir 698cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("init(handle, pData, nSize)", aError == rtl_Digest_E_None); 699cdf0e10cSrcweir 700cdf0e10cSrcweir rtl_digest_update( handle, pData, nSize ); 701cdf0e10cSrcweir 702cdf0e10cSrcweir rtl_digest_get( handle, pKeyBuffer, nKeyLen ); 703cdf0e10cSrcweir rtl::OString aSum = createHex(pKeyBuffer, nKeyLen); 704cdf0e10cSrcweir delete [] pKeyBuffer; 705cdf0e10cSrcweir 706cdf0e10cSrcweir t_print("HMAC_MD5 Sum: %s\n", aSum.getStr()); 707cdf0e10cSrcweir // LLA: how to check right values 708cdf0e10cSrcweir // samples? 709cdf0e10cSrcweir 710cdf0e10cSrcweir rtl_digest_destroy( handle ); 711cdf0e10cSrcweir } 712cdf0e10cSrcweir void init_HMAC_SHA1() 713cdf0e10cSrcweir { 714cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmHMAC_SHA1 ); 715cdf0e10cSrcweir 716cdf0e10cSrcweir rtl::OString aMsg = sSampleString; 717cdf0e10cSrcweir const sal_uInt8 *pData = (const sal_uInt8*)aMsg.getStr(); 718cdf0e10cSrcweir sal_uInt32 nSize = ( aMsg.getLength() ); 719cdf0e10cSrcweir 720cdf0e10cSrcweir sal_uInt32 nKeyLen = rtl_digest_queryLength( handle ); 721cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE( "Keylen must be greater 0", nKeyLen ); 722cdf0e10cSrcweir 723cdf0e10cSrcweir sal_uInt8 *pKeyBuffer = new sal_uInt8[ nKeyLen ]; 724cdf0e10cSrcweir CPPUNIT_ASSERT( pKeyBuffer ); 725cdf0e10cSrcweir memset(pKeyBuffer, 0, nKeyLen); 726cdf0e10cSrcweir 727cdf0e10cSrcweir rtlDigestError aError = rtl_digest_init(handle, pKeyBuffer, nKeyLen ); 728cdf0e10cSrcweir 729cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("init(handle, pData, nSize)", aError == rtl_Digest_E_None); 730cdf0e10cSrcweir 731cdf0e10cSrcweir rtl_digest_update( handle, pData, nSize ); 732cdf0e10cSrcweir 733cdf0e10cSrcweir rtl_digest_get( handle, pKeyBuffer, nKeyLen ); 734cdf0e10cSrcweir rtl::OString aSum = createHex(pKeyBuffer, nKeyLen); 735cdf0e10cSrcweir delete [] pKeyBuffer; 736cdf0e10cSrcweir 737cdf0e10cSrcweir t_print("HMAC_SHA1 Sum: %s\n", aSum.getStr()); 738cdf0e10cSrcweir // LLA: how to check right values 739cdf0e10cSrcweir // samples? 740cdf0e10cSrcweir 741cdf0e10cSrcweir rtl_digest_destroy( handle ); 742cdf0e10cSrcweir } 743cdf0e10cSrcweir 744cdf0e10cSrcweir 745cdf0e10cSrcweir // Change the following lines only, if you add, remove or rename 746cdf0e10cSrcweir // member functions of the current class, 747cdf0e10cSrcweir // because these macros are need by auto register mechanism. 748cdf0e10cSrcweir 749cdf0e10cSrcweir CPPUNIT_TEST_SUITE(init); 750cdf0e10cSrcweir CPPUNIT_TEST( init_000 ); 751cdf0e10cSrcweir CPPUNIT_TEST( init_001 ); 752cdf0e10cSrcweir CPPUNIT_TEST( init_MD2 ); 753cdf0e10cSrcweir CPPUNIT_TEST( init_MD5 ); 754cdf0e10cSrcweir CPPUNIT_TEST( init_SHA ); 755cdf0e10cSrcweir CPPUNIT_TEST( init_SHA1 ); 756cdf0e10cSrcweir CPPUNIT_TEST( init_HMAC_MD5 ); 757cdf0e10cSrcweir CPPUNIT_TEST( init_HMAC_SHA1 ); 758cdf0e10cSrcweir CPPUNIT_TEST_SUITE_END(); 759cdf0e10cSrcweir }; // class init 760cdf0e10cSrcweir 761cdf0e10cSrcweir // ------------------------------------ 762cdf0e10cSrcweir 763cdf0e10cSrcweir rtl::OString getMD5Sum(rtl::OString const& _aMsg ) 764cdf0e10cSrcweir { 765cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmMD5 ); 766cdf0e10cSrcweir 767cdf0e10cSrcweir const sal_uInt8 *pData = (const sal_uInt8*)_aMsg.getStr(); 768cdf0e10cSrcweir sal_uInt32 nSize = ( _aMsg.getLength() ); 769cdf0e10cSrcweir 770cdf0e10cSrcweir rtl_digest_init(handle, pData, nSize); 771cdf0e10cSrcweir rtl_digest_update( handle, pData, nSize ); 772cdf0e10cSrcweir 773cdf0e10cSrcweir sal_uInt32 nMD5KeyLen = rtl_digest_queryLength( handle ); 774cdf0e10cSrcweir sal_uInt8 *pMD5KeyBuffer = new sal_uInt8[ nMD5KeyLen ]; 775cdf0e10cSrcweir 776cdf0e10cSrcweir rtl_digest_get( handle, pMD5KeyBuffer, nMD5KeyLen ); 777cdf0e10cSrcweir rtl::OString aMD5Sum = createHex(pMD5KeyBuffer, nMD5KeyLen); 778cdf0e10cSrcweir delete [] pMD5KeyBuffer; 779cdf0e10cSrcweir 780cdf0e10cSrcweir rtl_digest_destroy( handle ); 781cdf0e10cSrcweir return aMD5Sum; 782cdf0e10cSrcweir } 783cdf0e10cSrcweir 784cdf0e10cSrcweir // ----------------------------------------------------------------------------- 785cdf0e10cSrcweir 786cdf0e10cSrcweir class equalTests : public CppUnit::TestFixture 787cdf0e10cSrcweir { 788cdf0e10cSrcweir public: 789cdf0e10cSrcweir // initialise your test code values here. 790cdf0e10cSrcweir void setUp() 791cdf0e10cSrcweir { 792cdf0e10cSrcweir } 793cdf0e10cSrcweir 794cdf0e10cSrcweir void tearDown() 795cdf0e10cSrcweir { 796cdf0e10cSrcweir } 797cdf0e10cSrcweir 798cdf0e10cSrcweir // ------------------------------------ 799cdf0e10cSrcweir void equal_001() 800cdf0e10cSrcweir { 801cdf0e10cSrcweir rtl::OString aMsg1 = sSampleString; 802cdf0e10cSrcweir rtl::OString aMsg2 = sSampleString; 803cdf0e10cSrcweir 804cdf0e10cSrcweir rtl::OString aMsgMD5Sum1 = getMD5Sum(aMsg1); 805cdf0e10cSrcweir rtl::OString aMsgMD5Sum2 = getMD5Sum(aMsg2); 806cdf0e10cSrcweir 807cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("md5sum must have a length", aMsgMD5Sum1.getLength() == 32 && aMsgMD5Sum2.getLength() == 32 ); 808cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("source is the same, dest must be also the same", aMsgMD5Sum1.equals(aMsgMD5Sum2) == sal_True); 809cdf0e10cSrcweir } 810cdf0e10cSrcweir // ------------------------------------ 811cdf0e10cSrcweir void equal_002() 812cdf0e10cSrcweir { 813cdf0e10cSrcweir rtl::OString aMsg1 = sSampleString; 814cdf0e10cSrcweir rtl::OString aMsg2 = sSampleString_only_one_diff; 815cdf0e10cSrcweir 816cdf0e10cSrcweir rtl::OString aMsgMD5Sum1 = getMD5Sum(aMsg1); 817cdf0e10cSrcweir rtl::OString aMsgMD5Sum2 = getMD5Sum(aMsg2); 818cdf0e10cSrcweir 819cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("md5sum must have a length", aMsgMD5Sum1.getLength() == 32 && aMsgMD5Sum2.getLength() == 32 ); 820cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("differ only in one char", aMsgMD5Sum1.equals(aMsgMD5Sum2) == sal_False); 821cdf0e10cSrcweir } 822cdf0e10cSrcweir 823cdf0e10cSrcweir // Change the following lines only, if you add, remove or rename 824cdf0e10cSrcweir // member functions of the current class, 825cdf0e10cSrcweir // because these macros are need by auto register mechanism. 826cdf0e10cSrcweir 827cdf0e10cSrcweir CPPUNIT_TEST_SUITE(equalTests); 828cdf0e10cSrcweir CPPUNIT_TEST( equal_001 ); 829cdf0e10cSrcweir CPPUNIT_TEST( equal_002 ); 830cdf0e10cSrcweir CPPUNIT_TEST_SUITE_END(); 831cdf0e10cSrcweir }; // class create 832cdf0e10cSrcweir 833cdf0e10cSrcweir 834cdf0e10cSrcweir // ----------------------------------------------------------------------------- 835cdf0e10cSrcweir class digest_MD2 : public CppUnit::TestFixture 836cdf0e10cSrcweir { 837cdf0e10cSrcweir public: 838cdf0e10cSrcweir // initialise your test code values here. 839cdf0e10cSrcweir void setUp() 840cdf0e10cSrcweir { 841cdf0e10cSrcweir } 842cdf0e10cSrcweir 843cdf0e10cSrcweir void tearDown() 844cdf0e10cSrcweir { 845cdf0e10cSrcweir } 846cdf0e10cSrcweir 847cdf0e10cSrcweir // ------------------------------------ 848cdf0e10cSrcweir void MD2_001() 849cdf0e10cSrcweir { 850cdf0e10cSrcweir rtl::OString aMsg1 = sSampleString; 851cdf0e10cSrcweir 852cdf0e10cSrcweir sal_uInt8 *pBuffer = new sal_uInt8[ RTL_DIGEST_LENGTH_MD2 ]; 853cdf0e10cSrcweir CPPUNIT_ASSERT( pBuffer ); 854cdf0e10cSrcweir memset(pBuffer, 0, RTL_DIGEST_LENGTH_MD2 ); 855cdf0e10cSrcweir 856cdf0e10cSrcweir sal_uInt8 *pMsg1 = (sal_uInt8*)aMsg1.getStr(); 857cdf0e10cSrcweir sal_Int32 nLen = aMsg1.getLength(); 858cdf0e10cSrcweir 859cdf0e10cSrcweir rtlDigestError aError = rtl_digest_MD2(pMsg1, nLen, pBuffer, RTL_DIGEST_LENGTH_MD2); 860cdf0e10cSrcweir 861cdf0e10cSrcweir CPPUNIT_ASSERT(aError == rtl_Digest_E_None ); 862cdf0e10cSrcweir 863cdf0e10cSrcweir rtl::OString aStr = createHex(pBuffer, RTL_DIGEST_LENGTH_MD2); 864cdf0e10cSrcweir t_print("Decrypt MD2: %s\n", aStr.getStr()); 865cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("checksum of sample string is wrong. Code changes or sample problems, please check.", aStr.equals(sSampleString_MD2) ); 866cdf0e10cSrcweir 867cdf0e10cSrcweir delete [] pBuffer; 868cdf0e10cSrcweir } 869cdf0e10cSrcweir 870cdf0e10cSrcweir // Change the following lines only, if you add, remove or rename 871cdf0e10cSrcweir // member functions of the current class, 872cdf0e10cSrcweir // because these macros are need by auto register mechanism. 873cdf0e10cSrcweir 874cdf0e10cSrcweir CPPUNIT_TEST_SUITE(digest_MD2); 875cdf0e10cSrcweir CPPUNIT_TEST( MD2_001 ); 876cdf0e10cSrcweir CPPUNIT_TEST_SUITE_END(); 877cdf0e10cSrcweir }; // class create 878cdf0e10cSrcweir // ----------------------------------------------------------------------------- 879cdf0e10cSrcweir class digest_MD5 : public CppUnit::TestFixture 880cdf0e10cSrcweir { 881cdf0e10cSrcweir public: 882cdf0e10cSrcweir // initialise your test code values here. 883cdf0e10cSrcweir void setUp() 884cdf0e10cSrcweir { 885cdf0e10cSrcweir } 886cdf0e10cSrcweir 887cdf0e10cSrcweir void tearDown() 888cdf0e10cSrcweir { 889cdf0e10cSrcweir } 890cdf0e10cSrcweir // ------------------------------------ 891cdf0e10cSrcweir void MD5_001() 892cdf0e10cSrcweir { 893cdf0e10cSrcweir rtl::OString aMsg1 = sSampleString; 894cdf0e10cSrcweir 895cdf0e10cSrcweir sal_uInt8 *pBuffer = new sal_uInt8[ RTL_DIGEST_LENGTH_MD5 ]; 896cdf0e10cSrcweir CPPUNIT_ASSERT( pBuffer ); 897cdf0e10cSrcweir memset(pBuffer, 0, RTL_DIGEST_LENGTH_MD5 ); 898cdf0e10cSrcweir 899cdf0e10cSrcweir sal_uInt8 *pMsg1 = (sal_uInt8*)aMsg1.getStr(); 900cdf0e10cSrcweir sal_Int32 nLen = aMsg1.getLength(); 901cdf0e10cSrcweir 902cdf0e10cSrcweir rtlDigestError aError = rtl_digest_MD5(pMsg1, nLen, pBuffer, RTL_DIGEST_LENGTH_MD5); 903cdf0e10cSrcweir 904cdf0e10cSrcweir CPPUNIT_ASSERT(aError == rtl_Digest_E_None ); 905cdf0e10cSrcweir 906cdf0e10cSrcweir rtl::OString aStr = createHex(pBuffer, RTL_DIGEST_LENGTH_MD5); 907cdf0e10cSrcweir t_print("Decrypt MD5: %s\n", aStr.getStr()); 908cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("checksum of sample string is wrong. Code changes or sample problems, please check.", aStr.equals(sSampleString_MD5) ); 909cdf0e10cSrcweir 910cdf0e10cSrcweir delete [] pBuffer; 911cdf0e10cSrcweir } 912cdf0e10cSrcweir 913cdf0e10cSrcweir // Change the following lines only, if you add, remove or rename 914cdf0e10cSrcweir // member functions of the current class, 915cdf0e10cSrcweir // because these macros are need by auto register mechanism. 916cdf0e10cSrcweir 917cdf0e10cSrcweir CPPUNIT_TEST_SUITE(digest_MD5); 918cdf0e10cSrcweir CPPUNIT_TEST( MD5_001 ); 919cdf0e10cSrcweir CPPUNIT_TEST_SUITE_END(); 920cdf0e10cSrcweir }; // class create 921cdf0e10cSrcweir 922cdf0e10cSrcweir // ----------------------------------------------------------------------------- 923cdf0e10cSrcweir class digest_SHA : public CppUnit::TestFixture 924cdf0e10cSrcweir { 925cdf0e10cSrcweir public: 926cdf0e10cSrcweir // initialise your test code values here. 927cdf0e10cSrcweir void setUp() 928cdf0e10cSrcweir { 929cdf0e10cSrcweir } 930cdf0e10cSrcweir 931cdf0e10cSrcweir void tearDown() 932cdf0e10cSrcweir { 933cdf0e10cSrcweir } 934cdf0e10cSrcweir 935cdf0e10cSrcweir // ------------------------------------ 936cdf0e10cSrcweir void SHA_001() 937cdf0e10cSrcweir { 938cdf0e10cSrcweir rtl::OString aMsg1 = sSampleString; 939cdf0e10cSrcweir 940cdf0e10cSrcweir sal_uInt8 *pBuffer = new sal_uInt8[ RTL_DIGEST_LENGTH_SHA ]; 941cdf0e10cSrcweir CPPUNIT_ASSERT( pBuffer ); 942cdf0e10cSrcweir memset(pBuffer, 0, RTL_DIGEST_LENGTH_SHA); 943cdf0e10cSrcweir 944cdf0e10cSrcweir sal_uInt8 *pMsg1 = (sal_uInt8*)aMsg1.getStr(); 945cdf0e10cSrcweir sal_Int32 nLen = aMsg1.getLength(); 946cdf0e10cSrcweir 947cdf0e10cSrcweir rtlDigestError aError = rtl_digest_SHA(pMsg1, nLen, pBuffer, RTL_DIGEST_LENGTH_SHA); 948cdf0e10cSrcweir 949cdf0e10cSrcweir CPPUNIT_ASSERT(aError == rtl_Digest_E_None ); 950cdf0e10cSrcweir 951cdf0e10cSrcweir rtl::OString aStr = createHex(pBuffer, RTL_DIGEST_LENGTH_SHA); 952cdf0e10cSrcweir t_print("Decrypt SHA: %s\n", aStr.getStr()); 953cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("checksum of sample string is wrong. Code changes or sample problems, please check.", aStr.equals(sSampleString_SHA) ); 954cdf0e10cSrcweir 955cdf0e10cSrcweir delete [] pBuffer; 956cdf0e10cSrcweir } 957cdf0e10cSrcweir 958cdf0e10cSrcweir // Change the following lines only, if you add, remove or rename 959cdf0e10cSrcweir // member functions of the current class, 960cdf0e10cSrcweir // because these macros are need by auto register mechanism. 961cdf0e10cSrcweir 962cdf0e10cSrcweir CPPUNIT_TEST_SUITE(digest_SHA); 963cdf0e10cSrcweir CPPUNIT_TEST( SHA_001 ); 964cdf0e10cSrcweir CPPUNIT_TEST_SUITE_END(); 965cdf0e10cSrcweir }; // class create 966cdf0e10cSrcweir 967cdf0e10cSrcweir // ----------------------------------------------------------------------------- 968cdf0e10cSrcweir class digest_SHA1 : public CppUnit::TestFixture 969cdf0e10cSrcweir { 970cdf0e10cSrcweir public: 971cdf0e10cSrcweir // initialise your test code values here. 972cdf0e10cSrcweir void setUp() 973cdf0e10cSrcweir { 974cdf0e10cSrcweir } 975cdf0e10cSrcweir 976cdf0e10cSrcweir void tearDown() 977cdf0e10cSrcweir { 978cdf0e10cSrcweir } 979cdf0e10cSrcweir 980cdf0e10cSrcweir // ------------------------------------ 981cdf0e10cSrcweir void SHA1_001() 982cdf0e10cSrcweir { 983cdf0e10cSrcweir rtl::OString aMsg1 = sSampleString; 984cdf0e10cSrcweir 985cdf0e10cSrcweir sal_uInt8 *pBuffer = new sal_uInt8[ RTL_DIGEST_LENGTH_SHA1 ]; 986cdf0e10cSrcweir CPPUNIT_ASSERT( pBuffer ); 987cdf0e10cSrcweir memset(pBuffer, 0, RTL_DIGEST_LENGTH_SHA1); 988cdf0e10cSrcweir 989cdf0e10cSrcweir sal_uInt8 *pMsg1 = (sal_uInt8*)aMsg1.getStr(); 990cdf0e10cSrcweir sal_Int32 nLen = aMsg1.getLength(); 991cdf0e10cSrcweir 992cdf0e10cSrcweir rtlDigestError aError = rtl_digest_SHA1(pMsg1, nLen, pBuffer, RTL_DIGEST_LENGTH_SHA1); 993cdf0e10cSrcweir 994cdf0e10cSrcweir CPPUNIT_ASSERT(aError == rtl_Digest_E_None ); 995cdf0e10cSrcweir 996cdf0e10cSrcweir rtl::OString aStr = createHex(pBuffer, RTL_DIGEST_LENGTH_SHA1); 997cdf0e10cSrcweir t_print("Decrypt SHA1: %s\n", aStr.getStr()); 998cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("checksum of sample string is wrong. Code changes or sample problems, please check.", aStr.equals(sSampleString_SHA1) ); 999cdf0e10cSrcweir 1000cdf0e10cSrcweir delete [] pBuffer; 1001cdf0e10cSrcweir } 1002cdf0e10cSrcweir // Change the following lines only, if you add, remove or rename 1003cdf0e10cSrcweir // member functions of the current class, 1004cdf0e10cSrcweir // because these macros are need by auto register mechanism. 1005cdf0e10cSrcweir 1006cdf0e10cSrcweir CPPUNIT_TEST_SUITE(digest_SHA1); 1007cdf0e10cSrcweir CPPUNIT_TEST( SHA1_001 ); 1008cdf0e10cSrcweir CPPUNIT_TEST_SUITE_END(); 1009cdf0e10cSrcweir }; // class create 1010cdf0e10cSrcweir // ----------------------------------------------------------------------------- 1011cdf0e10cSrcweir class digest_HMAC_MD5 : public CppUnit::TestFixture 1012cdf0e10cSrcweir { 1013cdf0e10cSrcweir public: 1014cdf0e10cSrcweir // initialise your test code values here. 1015cdf0e10cSrcweir void setUp() 1016cdf0e10cSrcweir { 1017cdf0e10cSrcweir } 1018cdf0e10cSrcweir 1019cdf0e10cSrcweir void tearDown() 1020cdf0e10cSrcweir { 1021cdf0e10cSrcweir } 1022cdf0e10cSrcweir 1023cdf0e10cSrcweir // ------------------------------------ 1024cdf0e10cSrcweir void HMAC_MD5_001() 1025cdf0e10cSrcweir { 1026cdf0e10cSrcweir rtl::OString aMsg1 = sSampleString; 1027cdf0e10cSrcweir 1028cdf0e10cSrcweir sal_uInt8 *pKeyBuffer = new sal_uInt8[ RTL_DIGEST_LENGTH_HMAC_MD5 ]; 1029cdf0e10cSrcweir CPPUNIT_ASSERT( pKeyBuffer ); 1030cdf0e10cSrcweir memset(pKeyBuffer, 0, RTL_DIGEST_LENGTH_HMAC_MD5); 1031cdf0e10cSrcweir 1032cdf0e10cSrcweir sal_uInt8 *pBuffer = new sal_uInt8[ RTL_DIGEST_LENGTH_HMAC_MD5 ]; 1033cdf0e10cSrcweir CPPUNIT_ASSERT( pBuffer ); 1034cdf0e10cSrcweir memset(pBuffer, 0, RTL_DIGEST_LENGTH_HMAC_MD5); 1035cdf0e10cSrcweir 1036cdf0e10cSrcweir sal_uInt8 *pMsg1 = (sal_uInt8*)aMsg1.getStr(); 1037cdf0e10cSrcweir sal_Int32 nLen = aMsg1.getLength(); 1038cdf0e10cSrcweir 1039cdf0e10cSrcweir rtlDigestError aError = rtl_digest_HMAC_MD5(pKeyBuffer, RTL_DIGEST_LENGTH_HMAC_MD5, pMsg1, nLen, pBuffer, RTL_DIGEST_LENGTH_HMAC_MD5); 1040cdf0e10cSrcweir 1041cdf0e10cSrcweir CPPUNIT_ASSERT(aError == rtl_Digest_E_None ); 1042cdf0e10cSrcweir 1043cdf0e10cSrcweir rtl::OString aStr = createHex(pBuffer, RTL_DIGEST_LENGTH_HMAC_MD5); 1044cdf0e10cSrcweir t_print("Decrypt HMAC_MD5: %s\n", aStr.getStr()); 1045cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("md5sum of sample string is wrong. Code changes or sample problems, please check.", aStr.equals(sSampleString_HMAC_MD5) ); 1046cdf0e10cSrcweir 1047cdf0e10cSrcweir delete [] pBuffer; 1048cdf0e10cSrcweir } 1049cdf0e10cSrcweir // Change the following lines only, if you add, remove or rename 1050cdf0e10cSrcweir // member functions of the current class, 1051cdf0e10cSrcweir // because these macros are need by auto register mechanism. 1052cdf0e10cSrcweir 1053cdf0e10cSrcweir CPPUNIT_TEST_SUITE(digest_HMAC_MD5); 1054cdf0e10cSrcweir CPPUNIT_TEST( HMAC_MD5_001 ); 1055cdf0e10cSrcweir CPPUNIT_TEST_SUITE_END(); 1056cdf0e10cSrcweir }; // class create 1057cdf0e10cSrcweir // ----------------------------------------------------------------------------- 1058cdf0e10cSrcweir class digest_HMAC_SHA1 : public CppUnit::TestFixture 1059cdf0e10cSrcweir { 1060cdf0e10cSrcweir public: 1061cdf0e10cSrcweir // initialise your test code values here. 1062cdf0e10cSrcweir void setUp() 1063cdf0e10cSrcweir { 1064cdf0e10cSrcweir } 1065cdf0e10cSrcweir 1066cdf0e10cSrcweir void tearDown() 1067cdf0e10cSrcweir { 1068cdf0e10cSrcweir } 1069cdf0e10cSrcweir 1070cdf0e10cSrcweir // ------------------------------------ 1071cdf0e10cSrcweir void HMAC_SHA1_001() 1072cdf0e10cSrcweir { 1073cdf0e10cSrcweir rtl::OString aMsg1 = sSampleString; 1074cdf0e10cSrcweir 1075cdf0e10cSrcweir sal_uInt8 *pKeyBuffer = new sal_uInt8[ RTL_DIGEST_LENGTH_HMAC_SHA1 ]; 1076cdf0e10cSrcweir CPPUNIT_ASSERT( pKeyBuffer ); 1077cdf0e10cSrcweir memset(pKeyBuffer, 0, RTL_DIGEST_LENGTH_HMAC_SHA1); 1078cdf0e10cSrcweir 1079cdf0e10cSrcweir sal_uInt8 *pBuffer = new sal_uInt8[ RTL_DIGEST_LENGTH_HMAC_SHA1 ]; 1080cdf0e10cSrcweir CPPUNIT_ASSERT( pBuffer ); 1081cdf0e10cSrcweir memset(pBuffer, 0, RTL_DIGEST_LENGTH_HMAC_SHA1); 1082cdf0e10cSrcweir 1083cdf0e10cSrcweir sal_uInt8 *pMsg1 = (sal_uInt8*)aMsg1.getStr(); 1084cdf0e10cSrcweir sal_Int32 nLen = aMsg1.getLength(); 1085cdf0e10cSrcweir 1086cdf0e10cSrcweir rtlDigestError aError = rtl_digest_HMAC_SHA1(pKeyBuffer, RTL_DIGEST_LENGTH_HMAC_SHA1, pMsg1, nLen, pBuffer, RTL_DIGEST_LENGTH_HMAC_SHA1); 1087cdf0e10cSrcweir 1088cdf0e10cSrcweir CPPUNIT_ASSERT(aError == rtl_Digest_E_None ); 1089cdf0e10cSrcweir 1090cdf0e10cSrcweir rtl::OString aStr = createHex(pBuffer, RTL_DIGEST_LENGTH_HMAC_SHA1); 1091cdf0e10cSrcweir t_print("Decrypt HMAC_SHA1: %s\n", aStr.getStr()); 1092cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("md5sum of sample string is wrong. Code changes or sample problems, please check.", aStr.equals(sSampleString_HMAC_SHA1) ); 1093cdf0e10cSrcweir 1094cdf0e10cSrcweir delete [] pBuffer; 1095cdf0e10cSrcweir } 1096cdf0e10cSrcweir 1097cdf0e10cSrcweir // Change the following lines only, if you add, remove or rename 1098cdf0e10cSrcweir // member functions of the current class, 1099cdf0e10cSrcweir // because these macros are need by auto register mechanism. 1100cdf0e10cSrcweir 1101cdf0e10cSrcweir CPPUNIT_TEST_SUITE(digest_HMAC_SHA1); 1102cdf0e10cSrcweir CPPUNIT_TEST( HMAC_SHA1_001 ); 1103cdf0e10cSrcweir CPPUNIT_TEST_SUITE_END(); 1104cdf0e10cSrcweir }; // class create 1105cdf0e10cSrcweir // ----------------------------------------------------------------------------- 1106cdf0e10cSrcweir class digest_PBKDF2 : public CppUnit::TestFixture 1107cdf0e10cSrcweir { 1108cdf0e10cSrcweir public: 1109cdf0e10cSrcweir // initialise your test code values here. 1110cdf0e10cSrcweir void setUp() 1111cdf0e10cSrcweir { 1112cdf0e10cSrcweir } 1113cdf0e10cSrcweir 1114cdf0e10cSrcweir void tearDown() 1115cdf0e10cSrcweir { 1116cdf0e10cSrcweir } 1117cdf0e10cSrcweir 1118cdf0e10cSrcweir // ------------------------------------ 1119cdf0e10cSrcweir rtl::OString /* key */ run_check_PBKDF2(rtl::OString const& _sPassword, bool _bClearSalt, sal_uInt32 _nCount) 1120cdf0e10cSrcweir { 1121cdf0e10cSrcweir sal_uInt32 nKeyLen = RTL_DIGEST_LENGTH_HMAC_SHA1; 1122cdf0e10cSrcweir sal_uInt8 *pKeyBuffer = new sal_uInt8[ nKeyLen ]; 1123cdf0e10cSrcweir CPPUNIT_ASSERT( pKeyBuffer ); 1124cdf0e10cSrcweir memset(pKeyBuffer, 0, nKeyLen); 1125cdf0e10cSrcweir 1126cdf0e10cSrcweir sal_uInt8 *pPassword = (sal_uInt8*)_sPassword.getStr(); 1127cdf0e10cSrcweir sal_Int32 nPasswordLen = _sPassword.getLength(); 1128cdf0e10cSrcweir 1129cdf0e10cSrcweir sal_uInt32 nSaltDataLen = RTL_DIGEST_LENGTH_HMAC_SHA1; 1130cdf0e10cSrcweir sal_uInt8 *pSaltData = new sal_uInt8[ nSaltDataLen ]; 1131cdf0e10cSrcweir CPPUNIT_ASSERT( pSaltData ); 1132cdf0e10cSrcweir memset(pSaltData, 0, nSaltDataLen); 1133cdf0e10cSrcweir 1134cdf0e10cSrcweir if (! _bClearSalt) 1135cdf0e10cSrcweir { 1136cdf0e10cSrcweir // wilful contamination 1137cdf0e10cSrcweir pSaltData[0] = 1; 1138cdf0e10cSrcweir } 1139cdf0e10cSrcweir 1140cdf0e10cSrcweir rtlDigestError aError = rtl_digest_PBKDF2(pKeyBuffer, nKeyLen, pPassword, nPasswordLen, pSaltData, nSaltDataLen, _nCount); 1141cdf0e10cSrcweir 1142cdf0e10cSrcweir CPPUNIT_ASSERT(aError == rtl_Digest_E_None ); 1143cdf0e10cSrcweir 1144cdf0e10cSrcweir rtl::OString aKey = createHex(pKeyBuffer, nKeyLen); 1145cdf0e10cSrcweir t_print("Key: %s\n", aKey.getStr()); 1146cdf0e10cSrcweir 1147cdf0e10cSrcweir // rtl::OString sSalt = createHex(pSaltData, nSaltDataLen); 1148cdf0e10cSrcweir // t_print("Salt: %s\n", sSalt.getStr()); 1149cdf0e10cSrcweir 1150cdf0e10cSrcweir // CPPUNIT_ASSERT_MESSAGE("md5sum of sample string is wrong. Code changes or sample problems, please check.", aStr.equals(sSampleString_PBKDF2) ); 1151cdf0e10cSrcweir 1152cdf0e10cSrcweir delete [] pSaltData; 1153cdf0e10cSrcweir delete [] pKeyBuffer; 1154cdf0e10cSrcweir return aKey; 1155cdf0e10cSrcweir } 1156cdf0e10cSrcweir 1157cdf0e10cSrcweir void PBKDF2_001() 1158cdf0e10cSrcweir { 1159cdf0e10cSrcweir rtl::OString aPassword = "Password"; 1160cdf0e10cSrcweir 1161cdf0e10cSrcweir // all permutations 1162cdf0e10cSrcweir run_check_PBKDF2(aPassword, false, 1); 1163cdf0e10cSrcweir run_check_PBKDF2(aPassword, false, 2); 1164cdf0e10cSrcweir run_check_PBKDF2(aPassword, true, 1); 1165cdf0e10cSrcweir run_check_PBKDF2(aPassword, true, 2); 1166cdf0e10cSrcweir run_check_PBKDF2(aPassword, false, 3); 1167cdf0e10cSrcweir run_check_PBKDF2(aPassword, false, 4); 1168cdf0e10cSrcweir run_check_PBKDF2(aPassword, true, 3); 1169cdf0e10cSrcweir run_check_PBKDF2(aPassword, true, 4); 1170cdf0e10cSrcweir } 1171cdf0e10cSrcweir // Change the following lines only, if you add, remove or rename 1172cdf0e10cSrcweir // member functions of the current class, 1173cdf0e10cSrcweir // because these macros are need by auto register mechanism. 1174cdf0e10cSrcweir 1175cdf0e10cSrcweir CPPUNIT_TEST_SUITE(digest_PBKDF2); 1176cdf0e10cSrcweir CPPUNIT_TEST( PBKDF2_001 ); 1177cdf0e10cSrcweir CPPUNIT_TEST_SUITE_END(); 1178cdf0e10cSrcweir }; // class create 1179cdf0e10cSrcweir // ----------------------------------------------------------------------------- 1180cdf0e10cSrcweir 1181cdf0e10cSrcweir class update : public CppUnit::TestFixture 1182cdf0e10cSrcweir { 1183cdf0e10cSrcweir public: 1184cdf0e10cSrcweir // initialise your test code values here. 1185cdf0e10cSrcweir void setUp() 1186cdf0e10cSrcweir { 1187cdf0e10cSrcweir } 1188cdf0e10cSrcweir 1189cdf0e10cSrcweir void tearDown() 1190cdf0e10cSrcweir { 1191cdf0e10cSrcweir } 1192cdf0e10cSrcweir 1193cdf0e10cSrcweir void update_000() 1194cdf0e10cSrcweir { 1195cdf0e10cSrcweir rtlDigest aHandle = NULL; 1196cdf0e10cSrcweir rtlDigestError aError = rtl_digest_update(aHandle, NULL, 0); 1197cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("does not handle wrong parameter", aError == rtl_Digest_E_Argument ); 1198cdf0e10cSrcweir } 1199cdf0e10cSrcweir 1200cdf0e10cSrcweir void updateMD2_000() 1201cdf0e10cSrcweir { 1202cdf0e10cSrcweir rtlDigest aHandle = NULL; 1203cdf0e10cSrcweir rtlDigestError aError = rtl_digest_updateMD2(aHandle, NULL, 0); 1204cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("does not handle wrong parameter", aError == rtl_Digest_E_Argument ); 1205cdf0e10cSrcweir } 1206cdf0e10cSrcweir 1207cdf0e10cSrcweir void updateMD2_001() 1208cdf0e10cSrcweir { 1209cdf0e10cSrcweir rtlDigest aHandle = rtl_digest_create( rtl_Digest_AlgorithmMD2 ); 1210cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("create with rtl_Digest_AlgorithmMD2", aHandle != 0); 1211cdf0e10cSrcweir 1212cdf0e10cSrcweir rtl::OString aMsg = sSampleString; 1213cdf0e10cSrcweir const sal_uInt8* pData = (const sal_uInt8*)aMsg.getStr(); 1214cdf0e10cSrcweir 1215cdf0e10cSrcweir rtlDigestError aError = rtl_digest_updateMD2(aHandle, NULL, 0); 1216cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("handle parameter 'pData' wrong", aError == rtl_Digest_E_Argument ); 1217cdf0e10cSrcweir 1218cdf0e10cSrcweir /* rtlDigestError */ aError = rtl_digest_updateMD2(aHandle, pData, 0); 1219cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("handle parameter 'nSize' wrong", aError == rtl_Digest_E_None ); 1220cdf0e10cSrcweir 1221cdf0e10cSrcweir rtl_digest_destroyMD2(aHandle); 1222cdf0e10cSrcweir } 1223cdf0e10cSrcweir void updateMD5_000() 1224cdf0e10cSrcweir { 1225cdf0e10cSrcweir rtlDigest aHandle = NULL; 1226cdf0e10cSrcweir rtlDigestError aError = rtl_digest_updateMD5(aHandle, NULL, 0); 1227cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("does not handle wrong parameter", aError == rtl_Digest_E_Argument ); 1228cdf0e10cSrcweir } 1229cdf0e10cSrcweir 1230cdf0e10cSrcweir void updateMD5_001() 1231cdf0e10cSrcweir { 1232cdf0e10cSrcweir // use wrong Algorithm!!! This is volitional! 1233cdf0e10cSrcweir rtlDigest aHandle = rtl_digest_create( rtl_Digest_AlgorithmMD2 ); 1234cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("create with rtl_Digest_AlgorithmMD2", aHandle != 0); 1235cdf0e10cSrcweir 1236cdf0e10cSrcweir rtl::OString aMsg = sSampleString; 1237cdf0e10cSrcweir const sal_uInt8* pData = (const sal_uInt8*)aMsg.getStr(); 1238cdf0e10cSrcweir sal_uInt32 nSize = ( aMsg.getLength() ); 1239cdf0e10cSrcweir 1240cdf0e10cSrcweir rtlDigestError aError = rtl_digest_updateMD5(aHandle, pData, nSize); 1241cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("handle parameter 'handle' wrong", aError == rtl_Digest_E_Algorithm ); 1242cdf0e10cSrcweir 1243cdf0e10cSrcweir rtl_digest_destroyMD5(aHandle); 1244cdf0e10cSrcweir } 1245cdf0e10cSrcweir 1246cdf0e10cSrcweir void updateMD5_002() 1247cdf0e10cSrcweir { 1248cdf0e10cSrcweir rtlDigest aHandle = rtl_digest_create( rtl_Digest_AlgorithmMD5 ); 1249cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("create with rtl_Digest_AlgorithmMD5", aHandle != 0); 1250cdf0e10cSrcweir 1251cdf0e10cSrcweir rtl::OString aMsg = sSampleString; 1252cdf0e10cSrcweir const sal_uInt8* pData = (const sal_uInt8*)aMsg.getStr(); 1253cdf0e10cSrcweir 1254cdf0e10cSrcweir rtlDigestError aError = rtl_digest_updateMD5(aHandle, NULL, 0); 1255cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("handle parameter 'pData' wrong", aError == rtl_Digest_E_Argument ); 1256cdf0e10cSrcweir 1257cdf0e10cSrcweir /* rtlDigestError */ aError = rtl_digest_updateMD5(aHandle, pData, 0); 1258cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("handle parameter 'nSize' wrong", aError == rtl_Digest_E_None ); 1259cdf0e10cSrcweir 1260cdf0e10cSrcweir rtl_digest_destroyMD5(aHandle); 1261cdf0e10cSrcweir } 1262cdf0e10cSrcweir 1263cdf0e10cSrcweir void updateSHA_000() 1264cdf0e10cSrcweir { 1265cdf0e10cSrcweir rtlDigest aHandle = NULL; 1266cdf0e10cSrcweir rtlDigestError aError = rtl_digest_updateSHA(aHandle, NULL, 0); 1267cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("does not handle wrong parameter", aError == rtl_Digest_E_Argument ); 1268cdf0e10cSrcweir } 1269cdf0e10cSrcweir 1270cdf0e10cSrcweir void updateSHA1_000() 1271cdf0e10cSrcweir { 1272cdf0e10cSrcweir rtlDigest aHandle = NULL; 1273cdf0e10cSrcweir rtlDigestError aError = rtl_digest_updateSHA1(aHandle, NULL, 0); 1274cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("does not handle wrong parameter", aError == rtl_Digest_E_Argument ); 1275cdf0e10cSrcweir } 1276cdf0e10cSrcweir 1277cdf0e10cSrcweir void updateHMAC_MD5_000() 1278cdf0e10cSrcweir { 1279cdf0e10cSrcweir rtlDigest aHandle = NULL; 1280cdf0e10cSrcweir rtlDigestError aError = rtl_digest_updateHMAC_MD5(aHandle, NULL, 0); 1281cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("does not handle wrong parameter", aError == rtl_Digest_E_Argument ); 1282cdf0e10cSrcweir } 1283cdf0e10cSrcweir 1284cdf0e10cSrcweir void updateHMAC_SHA1_000() 1285cdf0e10cSrcweir { 1286cdf0e10cSrcweir rtlDigest aHandle = NULL; 1287cdf0e10cSrcweir rtlDigestError aError = rtl_digest_updateHMAC_SHA1(aHandle, NULL, 0); 1288cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("does not handle wrong parameter", aError == rtl_Digest_E_Argument ); 1289cdf0e10cSrcweir } 1290cdf0e10cSrcweir 1291cdf0e10cSrcweir // Change the following lines only, if you add, remove or rename 1292cdf0e10cSrcweir // member functions of the current class, 1293cdf0e10cSrcweir // because these macros are need by auto register mechanism. 1294cdf0e10cSrcweir 1295cdf0e10cSrcweir CPPUNIT_TEST_SUITE(update); 1296cdf0e10cSrcweir CPPUNIT_TEST(update_000); 1297cdf0e10cSrcweir CPPUNIT_TEST(updateMD5_000); 1298cdf0e10cSrcweir CPPUNIT_TEST(updateMD5_001); 1299cdf0e10cSrcweir CPPUNIT_TEST(updateMD5_002); 1300cdf0e10cSrcweir CPPUNIT_TEST(updateMD5_000); 1301cdf0e10cSrcweir CPPUNIT_TEST(updateSHA_000); 1302cdf0e10cSrcweir CPPUNIT_TEST(updateSHA1_000); 1303cdf0e10cSrcweir CPPUNIT_TEST(updateHMAC_MD5_000); 1304cdf0e10cSrcweir CPPUNIT_TEST(updateHMAC_SHA1_000); 1305cdf0e10cSrcweir CPPUNIT_TEST_SUITE_END(); 1306cdf0e10cSrcweir }; // class create 1307cdf0e10cSrcweir // ----------------------------------------------------------------------------- 1308cdf0e10cSrcweir 1309cdf0e10cSrcweir class get : public CppUnit::TestFixture 1310cdf0e10cSrcweir { 1311cdf0e10cSrcweir public: 1312cdf0e10cSrcweir // initialise your test code values here. 1313cdf0e10cSrcweir void setUp() 1314cdf0e10cSrcweir { 1315cdf0e10cSrcweir } 1316cdf0e10cSrcweir 1317cdf0e10cSrcweir void tearDown() 1318cdf0e10cSrcweir { 1319cdf0e10cSrcweir } 1320cdf0e10cSrcweir 1321cdf0e10cSrcweir void get_000() 1322cdf0e10cSrcweir { 1323cdf0e10cSrcweir rtlDigest aHandle = NULL; 1324cdf0e10cSrcweir rtlDigestError aError = rtl_digest_get(aHandle, NULL, 0); 1325cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("does not handle wrong parameter", aError == rtl_Digest_E_Argument ); 1326cdf0e10cSrcweir } 1327cdf0e10cSrcweir void getMD5_000() 1328cdf0e10cSrcweir { 1329cdf0e10cSrcweir rtlDigest aHandle = NULL; 1330cdf0e10cSrcweir rtlDigestError aError = rtl_digest_getMD5(aHandle, NULL, 0); 1331cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("does not handle wrong parameter", aError == rtl_Digest_E_Argument ); 1332cdf0e10cSrcweir } 1333cdf0e10cSrcweir void getMD5_001() 1334cdf0e10cSrcweir { 1335cdf0e10cSrcweir // test with wrong algorithm 1336cdf0e10cSrcweir rtlDigest aHandle = rtl_digest_create( rtl_Digest_AlgorithmMD2 ); 1337cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("create with rtl_Digest_AlgorithmMD2", aHandle != 0); 1338cdf0e10cSrcweir 1339cdf0e10cSrcweir sal_uInt32 nKeyLen = rtl_digest_queryLength( aHandle ); 1340cdf0e10cSrcweir sal_uInt8 *pKeyBuffer = new sal_uInt8[ nKeyLen ]; 1341cdf0e10cSrcweir 1342cdf0e10cSrcweir rtlDigestError aError = rtl_digest_getMD5(aHandle, NULL, 0); 1343cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("handle 2. parameter wrong", aError == rtl_Digest_E_Argument ); 1344cdf0e10cSrcweir 1345cdf0e10cSrcweir /* rtlDigestError */ aError = rtl_digest_getMD5(aHandle, pKeyBuffer, 0); 1346cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("handle parameter 'handle' wrong", aError == rtl_Digest_E_Algorithm ); 1347cdf0e10cSrcweir 1348cdf0e10cSrcweir rtl_digest_destroyMD2(aHandle); 1349cdf0e10cSrcweir } 1350cdf0e10cSrcweir 1351cdf0e10cSrcweir void getMD5_002() 1352cdf0e10cSrcweir { 1353cdf0e10cSrcweir rtlDigest aHandle = rtl_digest_create( rtl_Digest_AlgorithmMD5 ); 1354cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("create with rtl_Digest_AlgorithmMD5", aHandle != 0); 1355cdf0e10cSrcweir 1356cdf0e10cSrcweir sal_uInt32 nKeyLen = rtl_digest_queryLength( aHandle ); 1357cdf0e10cSrcweir sal_uInt8 *pKeyBuffer = new sal_uInt8[ nKeyLen ]; 1358cdf0e10cSrcweir 1359cdf0e10cSrcweir rtlDigestError aError = rtl_digest_getMD5(aHandle, NULL /* pKeyBuffer */ , nKeyLen); 1360cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("handle parameter 'pData' wrong", aError == rtl_Digest_E_Argument ); 1361cdf0e10cSrcweir 1362cdf0e10cSrcweir /* rtlDigestError */ aError = rtl_digest_getMD5(aHandle, pKeyBuffer, 0); 1363cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("handle parameter 'nSize' wrong", aError == rtl_Digest_E_BufferSize ); 1364cdf0e10cSrcweir 1365cdf0e10cSrcweir rtl_digest_destroyMD5(aHandle); 1366cdf0e10cSrcweir delete [] pKeyBuffer; 1367cdf0e10cSrcweir } 1368cdf0e10cSrcweir 1369cdf0e10cSrcweir // Change the following lines only, if you add, remove or rename 1370cdf0e10cSrcweir // member functions of the current class, 1371cdf0e10cSrcweir // because these macros are need by auto register mechanism. 1372cdf0e10cSrcweir 1373cdf0e10cSrcweir CPPUNIT_TEST_SUITE(get); 1374cdf0e10cSrcweir CPPUNIT_TEST(get_000); 1375cdf0e10cSrcweir CPPUNIT_TEST(getMD5_000); 1376cdf0e10cSrcweir CPPUNIT_TEST(getMD5_001); 1377cdf0e10cSrcweir CPPUNIT_TEST(getMD5_002); 1378cdf0e10cSrcweir CPPUNIT_TEST_SUITE_END(); 1379cdf0e10cSrcweir }; // class create 1380cdf0e10cSrcweir 1381cdf0e10cSrcweir // ----------------------------------------------------------------------------- 1382cdf0e10cSrcweir class destroy : public CppUnit::TestFixture 1383cdf0e10cSrcweir { 1384cdf0e10cSrcweir public: 1385cdf0e10cSrcweir // initialise your test code values here. 1386cdf0e10cSrcweir void setUp() 1387cdf0e10cSrcweir { 1388cdf0e10cSrcweir } 1389cdf0e10cSrcweir 1390cdf0e10cSrcweir void tearDown() 1391cdf0e10cSrcweir { 1392cdf0e10cSrcweir } 1393cdf0e10cSrcweir 1394cdf0e10cSrcweir void destroy_001() 1395cdf0e10cSrcweir { 1396cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmMD5 ); 1397cdf0e10cSrcweir CPPUNIT_ASSERT_MESSAGE("create with rtl_Digest_AlgorithmMD5", handle != 0); 1398cdf0e10cSrcweir 1399cdf0e10cSrcweir // not really testable 1400cdf0e10cSrcweir // LLA: good will test. 1401cdf0e10cSrcweir rtl_digest_destroy( handle ); 1402cdf0e10cSrcweir } 1403cdf0e10cSrcweir 1404cdf0e10cSrcweir // Change the following lines only, if you add, remove or rename 1405cdf0e10cSrcweir // member functions of the current class, 1406cdf0e10cSrcweir // because these macros are need by auto register mechanism. 1407cdf0e10cSrcweir 1408cdf0e10cSrcweir CPPUNIT_TEST_SUITE(destroy); 1409cdf0e10cSrcweir CPPUNIT_TEST(destroy_001); 1410cdf0e10cSrcweir CPPUNIT_TEST_SUITE_END(); 1411cdf0e10cSrcweir }; // class create 1412cdf0e10cSrcweir // ----------------------------------------------------------------------------- 1413cdf0e10cSrcweir 1414cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_digest::create, "rtl_digest"); 1415cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_digest::createMD2, "rtl_digest"); 1416cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_digest::createMD5, "rtl_digest"); 1417cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_digest::createSHA, "rtl_digest"); 1418cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_digest::createSHA1, "rtl_digest"); 1419cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_digest::createHMAC_MD5, "rtl_digest"); 1420cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_digest::createHMAC_SHA1, "rtl_digest"); 1421cdf0e10cSrcweir 1422cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_digest::destroy, "rtl_digest"); 1423cdf0e10cSrcweir 1424cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_digest::queryAlgorithm, "rtl_digest"); 1425cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_digest::queryLength, "rtl_digest"); 1426cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_digest::init, "rtl_digest"); 1427cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_digest::equalTests, "rtl_digest"); 1428cdf0e10cSrcweir 1429cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_digest::digest_MD2, "rtl_digest"); 1430cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_digest::digest_MD5, "rtl_digest"); 1431cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_digest::digest_SHA, "rtl_digest"); 1432cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_digest::digest_SHA1, "rtl_digest"); 1433cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_digest::digest_HMAC_MD5, "rtl_digest"); 1434cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_digest::digest_HMAC_SHA1, "rtl_digest"); 1435cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_digest::digest_PBKDF2, "rtl_digest"); 1436cdf0e10cSrcweir 1437cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_digest::update, "rtl_digest"); 1438cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_digest::get, "rtl_digest"); 1439cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_digest::destroy, "rtl_digest"); 1440cdf0e10cSrcweir } // namespace rtl_digest 1441cdf0e10cSrcweir 1442cdf0e10cSrcweir 1443cdf0e10cSrcweir // ----------------------------------------------------------------------------- 1444cdf0e10cSrcweir 1445cdf0e10cSrcweir // this macro creates an empty function, which will called by the RegisterAllFunctions() 1446cdf0e10cSrcweir // to let the user the possibility to also register some functions by hand. 1447cdf0e10cSrcweir NOADDITIONAL; 1448