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