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"
27f6483e82SDamjan 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
CreateMD5FromString(const rtl::OUString & aMsg)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 );
42*e6348c9cSDamjan Jovanovic if ( handle != NULL )
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
80f6483e82SDamjan Jovanovic class create : public ::testing::Test
81cdf0e10cSrcweir {
82cdf0e10cSrcweir public:
83cdf0e10cSrcweir // initialise your test code values here.
SetUp()84f6483e82SDamjan Jovanovic void SetUp()
85cdf0e10cSrcweir {
86cdf0e10cSrcweir }
87cdf0e10cSrcweir
TearDown()88f6483e82SDamjan Jovanovic void TearDown()
89cdf0e10cSrcweir {
90cdf0e10cSrcweir }
91cdf0e10cSrcweir }; // class create
92cdf0e10cSrcweir
TEST_F(create,create_001)93f6483e82SDamjan Jovanovic TEST_F(create, create_001)
94f6483e82SDamjan Jovanovic {
95f6483e82SDamjan Jovanovic rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmMD5 );
96f6483e82SDamjan Jovanovic ASSERT_TRUE(handle != 0) << "create with rtl_Digest_AlgorithmMD5";
97f6483e82SDamjan Jovanovic rtl_digest_destroy( handle );
98f6483e82SDamjan Jovanovic }
TEST_F(create,create_002)99f6483e82SDamjan Jovanovic TEST_F(create, create_002)
100f6483e82SDamjan Jovanovic {
101f6483e82SDamjan Jovanovic rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmMD2 );
102f6483e82SDamjan Jovanovic ASSERT_TRUE(handle != 0) << "create with rtl_Digest_AlgorithmMD2";
103f6483e82SDamjan Jovanovic rtl_digest_destroy( handle );
104f6483e82SDamjan Jovanovic }
TEST_F(create,create_003)105f6483e82SDamjan Jovanovic TEST_F(create, create_003)
106f6483e82SDamjan Jovanovic {
107f6483e82SDamjan Jovanovic rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmSHA );
108f6483e82SDamjan Jovanovic ASSERT_TRUE(handle != 0) << "create with rtl_Digest_AlgorithmSHA";
109f6483e82SDamjan Jovanovic rtl_digest_destroy( handle );
110f6483e82SDamjan Jovanovic }
TEST_F(create,create_004)111f6483e82SDamjan Jovanovic TEST_F(create, create_004)
112f6483e82SDamjan Jovanovic {
113f6483e82SDamjan Jovanovic rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmSHA1 );
114f6483e82SDamjan Jovanovic ASSERT_TRUE(handle != 0) << "create with rtl_Digest_AlgorithmSHA1";
115f6483e82SDamjan Jovanovic rtl_digest_destroy( handle );
116f6483e82SDamjan Jovanovic }
TEST_F(create,create_005)117f6483e82SDamjan Jovanovic TEST_F(create, create_005)
118f6483e82SDamjan Jovanovic {
119f6483e82SDamjan Jovanovic rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmHMAC_MD5 );
120f6483e82SDamjan Jovanovic ASSERT_TRUE(handle != 0) << "create with rtl_Digest_AlgorithmHMAC_MD5";
121f6483e82SDamjan Jovanovic rtl_digest_destroy( handle );
122f6483e82SDamjan Jovanovic }
TEST_F(create,create_006)123f6483e82SDamjan Jovanovic TEST_F(create, create_006)
124f6483e82SDamjan Jovanovic {
125f6483e82SDamjan Jovanovic rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmHMAC_SHA1 );
126f6483e82SDamjan Jovanovic ASSERT_TRUE(handle != 0) << "create with rtl_Digest_AlgorithmHMAC_SHA1";
127f6483e82SDamjan Jovanovic rtl_digest_destroy( handle );
128f6483e82SDamjan Jovanovic }
TEST_F(create,create_007)129f6483e82SDamjan Jovanovic TEST_F(create, create_007)
130f6483e82SDamjan Jovanovic {
131f6483e82SDamjan Jovanovic rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmInvalid );
132f6483e82SDamjan Jovanovic printf("Handle is %p\n", handle);
133f6483e82SDamjan Jovanovic ASSERT_TRUE(handle == 0) << "create with NULL";
134f6483e82SDamjan Jovanovic rtl_digest_destroy( handle );
135f6483e82SDamjan Jovanovic }
136cdf0e10cSrcweir
137cdf0e10cSrcweir
138cdf0e10cSrcweir
139cdf0e10cSrcweir // -----------------------------------------------------------------------------
140cdf0e10cSrcweir
141f6483e82SDamjan Jovanovic class createMD5 : public ::testing::Test
142cdf0e10cSrcweir {
143cdf0e10cSrcweir public:
144cdf0e10cSrcweir // initialise your test code values here.
SetUp()145f6483e82SDamjan Jovanovic void SetUp()
146cdf0e10cSrcweir {
147cdf0e10cSrcweir }
148cdf0e10cSrcweir
TearDown()149f6483e82SDamjan Jovanovic void TearDown()
150cdf0e10cSrcweir {
151cdf0e10cSrcweir }
152f6483e82SDamjan Jovanovic }; // class create
153cdf0e10cSrcweir
TEST_F(createMD5,createMD5_001)154f6483e82SDamjan Jovanovic TEST_F(createMD5, createMD5_001)
155cdf0e10cSrcweir {
156cdf0e10cSrcweir rtlDigest handle = rtl_digest_createMD5();
157cdf0e10cSrcweir
158cdf0e10cSrcweir rtlDigestAlgorithm aAlgo = rtl_digest_queryAlgorithm(handle);
159f6483e82SDamjan Jovanovic ASSERT_TRUE(rtl_Digest_AlgorithmMD5 == aAlgo) << "query handle";
160cdf0e10cSrcweir
161cdf0e10cSrcweir rtl_digest_destroy( handle );
162cdf0e10cSrcweir }
163cdf0e10cSrcweir
164cdf0e10cSrcweir
165cdf0e10cSrcweir // -----------------------------------------------------------------------------
166cdf0e10cSrcweir
167f6483e82SDamjan Jovanovic class createMD2 : public ::testing::Test
168cdf0e10cSrcweir {
169cdf0e10cSrcweir public:
170cdf0e10cSrcweir // initialise your test code values here.
SetUp()171f6483e82SDamjan Jovanovic void SetUp()
172cdf0e10cSrcweir {
173cdf0e10cSrcweir }
174cdf0e10cSrcweir
TearDown()175f6483e82SDamjan Jovanovic void TearDown()
176cdf0e10cSrcweir {
177cdf0e10cSrcweir }
178f6483e82SDamjan Jovanovic }; // class create
179cdf0e10cSrcweir
TEST_F(createMD2,createMD2_001)180f6483e82SDamjan Jovanovic TEST_F(createMD2, createMD2_001)
181cdf0e10cSrcweir {
182cdf0e10cSrcweir rtlDigest handle = rtl_digest_createMD2( );
183cdf0e10cSrcweir
184cdf0e10cSrcweir rtlDigestAlgorithm aAlgo = rtl_digest_queryAlgorithm(handle);
185f6483e82SDamjan Jovanovic ASSERT_TRUE(rtl_Digest_AlgorithmMD2 == aAlgo) << "query handle";
186cdf0e10cSrcweir
187cdf0e10cSrcweir rtl_digest_destroy( handle );
188cdf0e10cSrcweir }
189cdf0e10cSrcweir
190cdf0e10cSrcweir // -----------------------------------------------------------------------------
191cdf0e10cSrcweir
192f6483e82SDamjan Jovanovic class createSHA : public ::testing::Test
193cdf0e10cSrcweir {
194cdf0e10cSrcweir public:
195cdf0e10cSrcweir // initialise your test code values here.
SetUp()196f6483e82SDamjan Jovanovic void SetUp()
197cdf0e10cSrcweir {
198cdf0e10cSrcweir }
199cdf0e10cSrcweir
TearDown()200f6483e82SDamjan Jovanovic void TearDown()
201cdf0e10cSrcweir {
202cdf0e10cSrcweir }
203f6483e82SDamjan Jovanovic }; // class create
204cdf0e10cSrcweir
TEST_F(createSHA,createSHA_001)205f6483e82SDamjan Jovanovic TEST_F(createSHA, createSHA_001)
206cdf0e10cSrcweir {
207cdf0e10cSrcweir rtlDigest handle = rtl_digest_createSHA( );
208cdf0e10cSrcweir
209cdf0e10cSrcweir rtlDigestAlgorithm aAlgo = rtl_digest_queryAlgorithm(handle);
210f6483e82SDamjan Jovanovic ASSERT_TRUE(rtl_Digest_AlgorithmSHA == aAlgo) << "query handle";
211cdf0e10cSrcweir
212cdf0e10cSrcweir rtl_digest_destroy( handle );
213cdf0e10cSrcweir }
214f6483e82SDamjan Jovanovic
215cdf0e10cSrcweir // -----------------------------------------------------------------------------
216cdf0e10cSrcweir
217f6483e82SDamjan Jovanovic class createSHA1 : public ::testing::Test
218cdf0e10cSrcweir {
219cdf0e10cSrcweir public:
220cdf0e10cSrcweir // initialise your test code values here.
SetUp()221f6483e82SDamjan Jovanovic void SetUp()
222cdf0e10cSrcweir {
223cdf0e10cSrcweir }
224cdf0e10cSrcweir
TearDown()225f6483e82SDamjan Jovanovic void TearDown()
226cdf0e10cSrcweir {
227cdf0e10cSrcweir }
228f6483e82SDamjan Jovanovic }; // class create
229cdf0e10cSrcweir
TEST_F(createSHA1,createSHA1_001)230f6483e82SDamjan Jovanovic TEST_F(createSHA1, createSHA1_001)
231cdf0e10cSrcweir {
232cdf0e10cSrcweir rtlDigest handle = rtl_digest_createSHA1();
233cdf0e10cSrcweir
234cdf0e10cSrcweir rtlDigestAlgorithm aAlgo = rtl_digest_queryAlgorithm(handle);
235f6483e82SDamjan Jovanovic ASSERT_TRUE(rtl_Digest_AlgorithmSHA1 == aAlgo) << "query handle";
236cdf0e10cSrcweir
237cdf0e10cSrcweir rtl_digest_destroy( handle );
238cdf0e10cSrcweir }
239f6483e82SDamjan Jovanovic
240cdf0e10cSrcweir // -----------------------------------------------------------------------------
241cdf0e10cSrcweir
242f6483e82SDamjan Jovanovic class createHMAC_MD5 : public ::testing::Test
243cdf0e10cSrcweir {
244cdf0e10cSrcweir public:
245cdf0e10cSrcweir // initialise your test code values here.
SetUp()246f6483e82SDamjan Jovanovic void SetUp()
247cdf0e10cSrcweir {
248cdf0e10cSrcweir }
249cdf0e10cSrcweir
TearDown()250f6483e82SDamjan Jovanovic void TearDown()
251cdf0e10cSrcweir {
252cdf0e10cSrcweir }
253f6483e82SDamjan Jovanovic }; // class create
254cdf0e10cSrcweir
TEST_F(createHMAC_MD5,createHMAC_MD5_001)255f6483e82SDamjan Jovanovic TEST_F(createHMAC_MD5, createHMAC_MD5_001)
256cdf0e10cSrcweir {
257cdf0e10cSrcweir rtlDigest handle = rtl_digest_createHMAC_MD5();
258cdf0e10cSrcweir
259cdf0e10cSrcweir rtlDigestAlgorithm aAlgo = rtl_digest_queryAlgorithm(handle);
260f6483e82SDamjan Jovanovic ASSERT_TRUE(rtl_Digest_AlgorithmHMAC_MD5 == aAlgo) << "query handle";
261cdf0e10cSrcweir
262cdf0e10cSrcweir rtl_digest_destroy( handle );
263cdf0e10cSrcweir }
264f6483e82SDamjan Jovanovic
265cdf0e10cSrcweir // -----------------------------------------------------------------------------
266cdf0e10cSrcweir
267f6483e82SDamjan Jovanovic class createHMAC_SHA1 : public ::testing::Test
268cdf0e10cSrcweir {
269cdf0e10cSrcweir public:
270cdf0e10cSrcweir // initialise your test code values here.
SetUp()271f6483e82SDamjan Jovanovic void SetUp()
272cdf0e10cSrcweir {
273cdf0e10cSrcweir }
274cdf0e10cSrcweir
TearDown()275f6483e82SDamjan Jovanovic void TearDown()
276cdf0e10cSrcweir {
277cdf0e10cSrcweir }
278f6483e82SDamjan Jovanovic }; // class create
279cdf0e10cSrcweir
TEST_F(createHMAC_SHA1,createHMAC_SHA1_001)280f6483e82SDamjan Jovanovic TEST_F(createHMAC_SHA1, createHMAC_SHA1_001)
281cdf0e10cSrcweir {
282cdf0e10cSrcweir rtlDigest handle = rtl_digest_createHMAC_SHA1();
283cdf0e10cSrcweir
284cdf0e10cSrcweir rtlDigestAlgorithm aAlgo = rtl_digest_queryAlgorithm(handle);
285f6483e82SDamjan Jovanovic ASSERT_TRUE(rtl_Digest_AlgorithmHMAC_SHA1 == aAlgo) << "query handle";
286cdf0e10cSrcweir
287cdf0e10cSrcweir rtl_digest_destroy( handle );
288cdf0e10cSrcweir }
289cdf0e10cSrcweir
290cdf0e10cSrcweir // -----------------------------------------------------------------------------
291cdf0e10cSrcweir
292f6483e82SDamjan Jovanovic class queryAlgorithm : public ::testing::Test
293cdf0e10cSrcweir {
294cdf0e10cSrcweir public:
295cdf0e10cSrcweir // initialise your test code values here.
SetUp()296f6483e82SDamjan Jovanovic void SetUp()
297cdf0e10cSrcweir {
298cdf0e10cSrcweir }
299cdf0e10cSrcweir
TearDown()300f6483e82SDamjan Jovanovic void TearDown()
301cdf0e10cSrcweir {
302cdf0e10cSrcweir }
303f6483e82SDamjan Jovanovic }; // class create
304cdf0e10cSrcweir
TEST_F(queryAlgorithm,query_001)305f6483e82SDamjan Jovanovic TEST_F(queryAlgorithm, query_001)
306cdf0e10cSrcweir {
307cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmMD5 );
308cdf0e10cSrcweir
309cdf0e10cSrcweir rtlDigestAlgorithm aAlgo = rtl_digest_queryAlgorithm(handle);
310f6483e82SDamjan Jovanovic ASSERT_TRUE(rtl_Digest_AlgorithmMD5 == aAlgo) << "query handle";
311cdf0e10cSrcweir
312cdf0e10cSrcweir rtl_digest_destroy( handle );
313cdf0e10cSrcweir }
TEST_F(queryAlgorithm,query_002)314f6483e82SDamjan Jovanovic TEST_F(queryAlgorithm, query_002)
315cdf0e10cSrcweir {
316cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmMD2 );
317cdf0e10cSrcweir
318cdf0e10cSrcweir rtlDigestAlgorithm aAlgo = rtl_digest_queryAlgorithm(handle);
319f6483e82SDamjan Jovanovic ASSERT_TRUE(rtl_Digest_AlgorithmMD2 == aAlgo) << "query handle";
320cdf0e10cSrcweir
321cdf0e10cSrcweir rtl_digest_destroy( handle );
322cdf0e10cSrcweir }
TEST_F(queryAlgorithm,query_003)323f6483e82SDamjan Jovanovic TEST_F(queryAlgorithm, query_003)
324cdf0e10cSrcweir {
325cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmSHA );
326cdf0e10cSrcweir
327cdf0e10cSrcweir rtlDigestAlgorithm aAlgo = rtl_digest_queryAlgorithm(handle);
328f6483e82SDamjan Jovanovic ASSERT_TRUE(rtl_Digest_AlgorithmSHA == aAlgo) << "query handle";
329cdf0e10cSrcweir
330cdf0e10cSrcweir rtl_digest_destroy( handle );
331cdf0e10cSrcweir }
TEST_F(queryAlgorithm,query_004)332f6483e82SDamjan Jovanovic TEST_F(queryAlgorithm, query_004)
333cdf0e10cSrcweir {
334cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmSHA1 );
335cdf0e10cSrcweir
336cdf0e10cSrcweir rtlDigestAlgorithm aAlgo = rtl_digest_queryAlgorithm(handle);
337f6483e82SDamjan Jovanovic ASSERT_TRUE(rtl_Digest_AlgorithmSHA1 == aAlgo) << "query handle";
338cdf0e10cSrcweir
339cdf0e10cSrcweir rtl_digest_destroy( handle );
340cdf0e10cSrcweir }
TEST_F(queryAlgorithm,query_005)341f6483e82SDamjan 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);
346f6483e82SDamjan Jovanovic ASSERT_TRUE(rtl_Digest_AlgorithmHMAC_MD5 == aAlgo) << "query handle";
347cdf0e10cSrcweir
348cdf0e10cSrcweir rtl_digest_destroy( handle );
349cdf0e10cSrcweir }
TEST_F(queryAlgorithm,query_006)350f6483e82SDamjan 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);
355f6483e82SDamjan Jovanovic ASSERT_TRUE(rtl_Digest_AlgorithmHMAC_SHA1 == aAlgo) << "query handle";
356cdf0e10cSrcweir
357cdf0e10cSrcweir rtl_digest_destroy( handle );
358cdf0e10cSrcweir }
TEST_F(queryAlgorithm,query_007)359f6483e82SDamjan Jovanovic TEST_F(queryAlgorithm, query_007)
360cdf0e10cSrcweir {
361cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmInvalid );
362cdf0e10cSrcweir
363cdf0e10cSrcweir rtlDigestAlgorithm aAlgo = rtl_digest_queryAlgorithm(handle);
364f6483e82SDamjan Jovanovic ASSERT_TRUE(rtl_Digest_AlgorithmInvalid == aAlgo) << "query handle";
365cdf0e10cSrcweir
366cdf0e10cSrcweir rtl_digest_destroy( handle );
367cdf0e10cSrcweir }
368cdf0e10cSrcweir
369cdf0e10cSrcweir // -----------------------------------------------------------------------------
370f6483e82SDamjan Jovanovic class queryLength : public ::testing::Test
371cdf0e10cSrcweir {
372cdf0e10cSrcweir public:
373cdf0e10cSrcweir // initialise your test code values here.
SetUp()374f6483e82SDamjan Jovanovic void SetUp()
375cdf0e10cSrcweir {
376cdf0e10cSrcweir }
377cdf0e10cSrcweir
TearDown()378f6483e82SDamjan Jovanovic void TearDown()
379cdf0e10cSrcweir {
380cdf0e10cSrcweir }
381cdf0e10cSrcweir
382f6483e82SDamjan Jovanovic }; // class create
383f6483e82SDamjan Jovanovic
TEST_F(queryLength,queryLength_MD5)384f6483e82SDamjan 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);
389f6483e82SDamjan Jovanovic // printf("nAlgoLength:=%d\n", nAlgoLength);
390f6483e82SDamjan Jovanovic ASSERT_TRUE(RTL_DIGEST_LENGTH_MD5 == nAlgoLength) << "query Length";
391cdf0e10cSrcweir
392cdf0e10cSrcweir rtl_digest_destroy( handle );
393cdf0e10cSrcweir }
TEST_F(queryLength,queryLength_MD2)394f6483e82SDamjan 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);
399f6483e82SDamjan Jovanovic // printf("nAlgoLength:=%d\n", nAlgoLength);
400f6483e82SDamjan Jovanovic ASSERT_TRUE(RTL_DIGEST_LENGTH_MD2 == nAlgoLength) << "query length";
401cdf0e10cSrcweir
402cdf0e10cSrcweir rtl_digest_destroy( handle );
403cdf0e10cSrcweir }
TEST_F(queryLength,queryLength_SHA)404f6483e82SDamjan 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);
409f6483e82SDamjan Jovanovic // printf("nAlgoLength:=%d\n", nAlgoLength);
410f6483e82SDamjan Jovanovic ASSERT_TRUE(RTL_DIGEST_LENGTH_SHA == nAlgoLength) << "query length";
411cdf0e10cSrcweir
412cdf0e10cSrcweir rtl_digest_destroy( handle );
413cdf0e10cSrcweir }
TEST_F(queryLength,queryLength_SHA1)414f6483e82SDamjan 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);
419f6483e82SDamjan Jovanovic // printf("nAlgoLength:=%d\n", nAlgoLength);
420f6483e82SDamjan Jovanovic ASSERT_TRUE(RTL_DIGEST_LENGTH_SHA1 == nAlgoLength) << "query length";
421cdf0e10cSrcweir
422cdf0e10cSrcweir rtl_digest_destroy( handle );
423cdf0e10cSrcweir }
TEST_F(queryLength,queryLength_HMAC_MD5)424f6483e82SDamjan 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);
429f6483e82SDamjan Jovanovic // printf("nAlgoLength:=%d\n", nAlgoLength);
430f6483e82SDamjan Jovanovic ASSERT_TRUE(RTL_DIGEST_LENGTH_HMAC_MD5 == nAlgoLength) << "query length";
431cdf0e10cSrcweir
432cdf0e10cSrcweir rtl_digest_destroy( handle );
433cdf0e10cSrcweir }
TEST_F(queryLength,queryLength_HMAC_SHA1)434f6483e82SDamjan 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);
439f6483e82SDamjan Jovanovic // printf("nAlgoLength:=%d\n", nAlgoLength);
440f6483e82SDamjan Jovanovic ASSERT_TRUE(RTL_DIGEST_LENGTH_HMAC_SHA1 == nAlgoLength) << "query length";
441cdf0e10cSrcweir
442cdf0e10cSrcweir rtl_digest_destroy( handle );
443cdf0e10cSrcweir }
444cdf0e10cSrcweir
TEST_F(queryLength,queryLength_Illegal)445f6483e82SDamjan 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);
450f6483e82SDamjan Jovanovic // printf("nAlgoLength:=%d\n", nAlgoLength);
451f6483e82SDamjan Jovanovic ASSERT_TRUE(0 == nAlgoLength) << "query length";
452cdf0e10cSrcweir
453cdf0e10cSrcweir rtl_digest_destroy( handle );
454cdf0e10cSrcweir }
455cdf0e10cSrcweir
456cdf0e10cSrcweir // -----------------------------------------------------------------------------
457cdf0e10cSrcweir
createHex(sal_uInt8 * _pMD5KeyBuffer,sal_uInt32 _nMD5KeyLen)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 {
467f6483e82SDamjan 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 // -----------------------------------------------------------------------------
477f6483e82SDamjan Jovanovic class init : public ::testing::Test
478cdf0e10cSrcweir {
479cdf0e10cSrcweir public:
480cdf0e10cSrcweir // initialise your test code values here.
SetUp()481f6483e82SDamjan Jovanovic void SetUp()
482cdf0e10cSrcweir {
483cdf0e10cSrcweir }
484cdf0e10cSrcweir
TearDown()485f6483e82SDamjan Jovanovic void TearDown()
486cdf0e10cSrcweir {
487cdf0e10cSrcweir }
488f6483e82SDamjan Jovanovic }; // class init
489cdf0e10cSrcweir
TEST_F(init,init_000)490f6483e82SDamjan Jovanovic TEST_F(init, init_000)
491cdf0e10cSrcweir {
492cdf0e10cSrcweir rtlDigest handle = NULL;
493cdf0e10cSrcweir
494cdf0e10cSrcweir rtlDigestError aError = rtl_digest_init(handle, NULL, 0);
495cdf0e10cSrcweir
496f6483e82SDamjan Jovanovic ASSERT_TRUE(aError == rtl_Digest_E_Argument) << "init(NULL, 0, 0)";
497cdf0e10cSrcweir }
498cdf0e10cSrcweir
TEST_F(init,init_001)499f6483e82SDamjan 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
505f6483e82SDamjan Jovanovic ASSERT_TRUE(aError == rtl_Digest_E_None) << "init(handle, 0, 0)";
506cdf0e10cSrcweir
507cdf0e10cSrcweir rtl_digest_destroy( handle );
508cdf0e10cSrcweir }
509cdf0e10cSrcweir
510cdf0e10cSrcweir // ------------------------------------
TEST_F(init,init_MD2)511f6483e82SDamjan 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
521f6483e82SDamjan 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
532f6483e82SDamjan 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
TEST_F(init,init_MD5)539f6483e82SDamjan 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
549f6483e82SDamjan 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
560f6483e82SDamjan 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
TEST_F(init,init_SHA)567f6483e82SDamjan 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
577f6483e82SDamjan 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
588f6483e82SDamjan Jovanovic printf("SHA Sum: %s\n", aSum.getStr());
589cdf0e10cSrcweir // LLA: how to check right values
590cdf0e10cSrcweir // samples?
591cdf0e10cSrcweir
592cdf0e10cSrcweir rtl_digest_destroy( handle );
593cdf0e10cSrcweir }
TEST_F(init,init_SHA1)594f6483e82SDamjan 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
604f6483e82SDamjan 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
615f6483e82SDamjan Jovanovic printf("SHA1 Sum: %s\n", aSum.getStr());
616cdf0e10cSrcweir // LLA: how to check right values
617cdf0e10cSrcweir // samples?
618cdf0e10cSrcweir
619cdf0e10cSrcweir rtl_digest_destroy( handle );
620cdf0e10cSrcweir }
TEST_F(init,init_HMAC_MD5)621f6483e82SDamjan 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 );
630f6483e82SDamjan Jovanovic ASSERT_TRUE(nKeyLen) << "Keylen must be greater 0";
631cdf0e10cSrcweir
632cdf0e10cSrcweir sal_uInt8 *pKeyBuffer = new sal_uInt8[ nKeyLen ];
633f6483e82SDamjan Jovanovic ASSERT_TRUE( pKeyBuffer );
634cdf0e10cSrcweir memset(pKeyBuffer, 0, nKeyLen);
635cdf0e10cSrcweir
636cdf0e10cSrcweir rtlDigestError aError = rtl_digest_init(handle, pKeyBuffer, nKeyLen );
637cdf0e10cSrcweir
638f6483e82SDamjan 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
646f6483e82SDamjan 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 }
TEST_F(init,init_HMAC_SHA1)652f6483e82SDamjan 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 );
661f6483e82SDamjan Jovanovic ASSERT_TRUE(nKeyLen) << "Keylen must be greater 0";
662cdf0e10cSrcweir
663cdf0e10cSrcweir sal_uInt8 *pKeyBuffer = new sal_uInt8[ nKeyLen ];
664f6483e82SDamjan Jovanovic ASSERT_TRUE( pKeyBuffer );
665cdf0e10cSrcweir memset(pKeyBuffer, 0, nKeyLen);
666cdf0e10cSrcweir
667cdf0e10cSrcweir rtlDigestError aError = rtl_digest_init(handle, pKeyBuffer, nKeyLen );
668cdf0e10cSrcweir
669f6483e82SDamjan 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
677f6483e82SDamjan 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
getMD5Sum(rtl::OString const & _aMsg)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
708f6483e82SDamjan Jovanovic class equalTests : public ::testing::Test
709cdf0e10cSrcweir {
710cdf0e10cSrcweir public:
711cdf0e10cSrcweir // initialise your test code values here.
SetUp()712f6483e82SDamjan Jovanovic void SetUp()
713cdf0e10cSrcweir {
714cdf0e10cSrcweir }
715cdf0e10cSrcweir
TearDown()716f6483e82SDamjan Jovanovic void TearDown()
717cdf0e10cSrcweir {
718cdf0e10cSrcweir }
719f6483e82SDamjan Jovanovic }; // class create
720cdf0e10cSrcweir
TEST_F(equalTests,equal_001)721f6483e82SDamjan 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
729f6483e82SDamjan Jovanovic ASSERT_TRUE(aMsgMD5Sum1.getLength() == 32 && aMsgMD5Sum2.getLength() == 32) << "md5sum must have a length";
730f6483e82SDamjan Jovanovic ASSERT_TRUE(aMsgMD5Sum1.equals(aMsgMD5Sum2) == sal_True) << "source is the same, dest must be also the same";
731cdf0e10cSrcweir }
732cdf0e10cSrcweir // ------------------------------------
TEST_F(equalTests,equal_002)733f6483e82SDamjan 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
741f6483e82SDamjan Jovanovic ASSERT_TRUE(aMsgMD5Sum1.getLength() == 32 && aMsgMD5Sum2.getLength() == 32) << "md5sum must have a length";
742f6483e82SDamjan Jovanovic ASSERT_TRUE(aMsgMD5Sum1.equals(aMsgMD5Sum2) == sal_False) << "differ only in one char";
743cdf0e10cSrcweir }
744cdf0e10cSrcweir
745cdf0e10cSrcweir
746cdf0e10cSrcweir // -----------------------------------------------------------------------------
747f6483e82SDamjan Jovanovic class digest_MD2 : public ::testing::Test
748cdf0e10cSrcweir {
749cdf0e10cSrcweir public:
750cdf0e10cSrcweir // initialise your test code values here.
SetUp()751f6483e82SDamjan Jovanovic void SetUp()
752cdf0e10cSrcweir {
753cdf0e10cSrcweir }
754cdf0e10cSrcweir
TearDown()755f6483e82SDamjan Jovanovic void TearDown()
756cdf0e10cSrcweir {
757cdf0e10cSrcweir }
758f6483e82SDamjan Jovanovic }; // class digest_MD2
759cdf0e10cSrcweir
TEST_F(digest_MD2,MD2_001)760f6483e82SDamjan 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 ];
765f6483e82SDamjan 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
773f6483e82SDamjan Jovanovic ASSERT_TRUE(aError == rtl_Digest_E_None );
774cdf0e10cSrcweir
775cdf0e10cSrcweir rtl::OString aStr = createHex(pBuffer, RTL_DIGEST_LENGTH_MD2);
776f6483e82SDamjan Jovanovic printf("Decrypt MD2: %s\n", aStr.getStr());
777f6483e82SDamjan Jovanovic ASSERT_TRUE(aStr.equals(sSampleString_MD2)) <<
778f6483e82SDamjan Jovanovic "checksum of sample string is wrong. Code changes or sample problems, please check.";
779cdf0e10cSrcweir
780cdf0e10cSrcweir delete [] pBuffer;
781cdf0e10cSrcweir }
782cdf0e10cSrcweir // -----------------------------------------------------------------------------
783f6483e82SDamjan Jovanovic class digest_MD5 : public ::testing::Test
784cdf0e10cSrcweir {
785cdf0e10cSrcweir public:
786cdf0e10cSrcweir // initialise your test code values here.
SetUp()787f6483e82SDamjan Jovanovic void SetUp()
788cdf0e10cSrcweir {
789cdf0e10cSrcweir }
790cdf0e10cSrcweir
TearDown()791f6483e82SDamjan Jovanovic void TearDown()
792cdf0e10cSrcweir {
793cdf0e10cSrcweir }
794f6483e82SDamjan Jovanovic }; // class digest_MD5
795f6483e82SDamjan Jovanovic
TEST_F(digest_MD5,MD5_001)796f6483e82SDamjan 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 ];
801f6483e82SDamjan 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
809f6483e82SDamjan Jovanovic ASSERT_TRUE(aError == rtl_Digest_E_None );
810cdf0e10cSrcweir
811cdf0e10cSrcweir rtl::OString aStr = createHex(pBuffer, RTL_DIGEST_LENGTH_MD5);
812f6483e82SDamjan Jovanovic printf("Decrypt MD5: %s\n", aStr.getStr());
813f6483e82SDamjan Jovanovic ASSERT_TRUE(aStr.equals(sSampleString_MD5) ) <<
814f6483e82SDamjan Jovanovic "checksum of sample string is wrong. Code changes or sample problems, please check.";
815cdf0e10cSrcweir
816cdf0e10cSrcweir delete [] pBuffer;
817cdf0e10cSrcweir }
818cdf0e10cSrcweir
819cdf0e10cSrcweir // -----------------------------------------------------------------------------
820f6483e82SDamjan Jovanovic class digest_SHA : public ::testing::Test
821cdf0e10cSrcweir {
822cdf0e10cSrcweir public:
823cdf0e10cSrcweir // initialise your test code values here.
SetUp()824f6483e82SDamjan Jovanovic void SetUp()
825cdf0e10cSrcweir {
826cdf0e10cSrcweir }
827cdf0e10cSrcweir
TearDown()828f6483e82SDamjan Jovanovic void TearDown()
829cdf0e10cSrcweir {
830cdf0e10cSrcweir }
831f6483e82SDamjan Jovanovic }; // class create
832cdf0e10cSrcweir
TEST_F(digest_SHA,SHA_001)833f6483e82SDamjan 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 ];
838f6483e82SDamjan 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
846f6483e82SDamjan Jovanovic ASSERT_TRUE(aError == rtl_Digest_E_None );
847cdf0e10cSrcweir
848cdf0e10cSrcweir rtl::OString aStr = createHex(pBuffer, RTL_DIGEST_LENGTH_SHA);
849f6483e82SDamjan Jovanovic printf("Decrypt SHA: %s\n", aStr.getStr());
850f6483e82SDamjan Jovanovic ASSERT_TRUE(aStr.equals(sSampleString_SHA)) <<
851f6483e82SDamjan Jovanovic "checksum of sample string is wrong. Code changes or sample problems, please check.";
852cdf0e10cSrcweir
853cdf0e10cSrcweir delete [] pBuffer;
854cdf0e10cSrcweir }
855cdf0e10cSrcweir // -----------------------------------------------------------------------------
856f6483e82SDamjan Jovanovic class digest_SHA1 : public ::testing::Test
857cdf0e10cSrcweir {
858cdf0e10cSrcweir public:
859cdf0e10cSrcweir // initialise your test code values here.
SetUp()860f6483e82SDamjan Jovanovic void SetUp()
861cdf0e10cSrcweir {
862cdf0e10cSrcweir }
863cdf0e10cSrcweir
TearDown()864f6483e82SDamjan Jovanovic void TearDown()
865cdf0e10cSrcweir {
866cdf0e10cSrcweir }
867f6483e82SDamjan Jovanovic }; // class create
868cdf0e10cSrcweir
TEST_F(digest_SHA1,SHA1_001)869f6483e82SDamjan 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 ];
874f6483e82SDamjan 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
882f6483e82SDamjan Jovanovic ASSERT_TRUE(aError == rtl_Digest_E_None );
883cdf0e10cSrcweir
884cdf0e10cSrcweir rtl::OString aStr = createHex(pBuffer, RTL_DIGEST_LENGTH_SHA1);
885f6483e82SDamjan Jovanovic printf("Decrypt SHA1: %s\n", aStr.getStr());
886f6483e82SDamjan Jovanovic ASSERT_TRUE(aStr.equals(sSampleString_SHA1)) <<
887f6483e82SDamjan Jovanovic "checksum of sample string is wrong. Code changes or sample problems, please check.";
888cdf0e10cSrcweir
889cdf0e10cSrcweir delete [] pBuffer;
890cdf0e10cSrcweir }
891cdf0e10cSrcweir // -----------------------------------------------------------------------------
892f6483e82SDamjan Jovanovic class digest_HMAC_MD5 : public ::testing::Test
893cdf0e10cSrcweir {
894cdf0e10cSrcweir public:
895cdf0e10cSrcweir // initialise your test code values here.
SetUp()896f6483e82SDamjan Jovanovic void SetUp()
897cdf0e10cSrcweir {
898cdf0e10cSrcweir }
899cdf0e10cSrcweir
TearDown()900f6483e82SDamjan Jovanovic void TearDown()
901cdf0e10cSrcweir {
902cdf0e10cSrcweir }
903f6483e82SDamjan Jovanovic }; // class create
904cdf0e10cSrcweir
TEST_F(digest_HMAC_MD5,HMAC_MD5_001)905f6483e82SDamjan 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 ];
910f6483e82SDamjan 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 ];
914f6483e82SDamjan 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
922f6483e82SDamjan Jovanovic ASSERT_TRUE(aError == rtl_Digest_E_None );
923cdf0e10cSrcweir
924cdf0e10cSrcweir rtl::OString aStr = createHex(pBuffer, RTL_DIGEST_LENGTH_HMAC_MD5);
925f6483e82SDamjan Jovanovic printf("Decrypt HMAC_MD5: %s\n", aStr.getStr());
926f6483e82SDamjan Jovanovic ASSERT_TRUE(aStr.equals(sSampleString_HMAC_MD5)) <<
927f6483e82SDamjan Jovanovic "md5sum of sample string is wrong. Code changes or sample problems, please check.";
928cdf0e10cSrcweir
929cdf0e10cSrcweir delete [] pBuffer;
930cdf0e10cSrcweir }
931cdf0e10cSrcweir
932cdf0e10cSrcweir // -----------------------------------------------------------------------------
933f6483e82SDamjan Jovanovic class digest_HMAC_SHA1 : public ::testing::Test
934cdf0e10cSrcweir {
935cdf0e10cSrcweir public:
936cdf0e10cSrcweir // initialise your test code values here.
SetUp()937f6483e82SDamjan Jovanovic void SetUp()
938cdf0e10cSrcweir {
939cdf0e10cSrcweir }
940cdf0e10cSrcweir
TearDown()941f6483e82SDamjan Jovanovic void TearDown()
942cdf0e10cSrcweir {
943cdf0e10cSrcweir }
944f6483e82SDamjan Jovanovic }; // class create
945cdf0e10cSrcweir
TEST_F(digest_HMAC_SHA1,HMAC_SHA1_001)946f6483e82SDamjan 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 ];
951f6483e82SDamjan 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 ];
955f6483e82SDamjan 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
963f6483e82SDamjan Jovanovic ASSERT_TRUE(aError == rtl_Digest_E_None );
964cdf0e10cSrcweir
965cdf0e10cSrcweir rtl::OString aStr = createHex(pBuffer, RTL_DIGEST_LENGTH_HMAC_SHA1);
966f6483e82SDamjan Jovanovic printf("Decrypt HMAC_SHA1: %s\n", aStr.getStr());
967f6483e82SDamjan Jovanovic ASSERT_TRUE(aStr.equals(sSampleString_HMAC_SHA1)) <<
968f6483e82SDamjan Jovanovic "md5sum of sample string is wrong. Code changes or sample problems, please check.";
969cdf0e10cSrcweir
970cdf0e10cSrcweir delete [] pBuffer;
971cdf0e10cSrcweir }
972cdf0e10cSrcweir // -----------------------------------------------------------------------------
973f6483e82SDamjan Jovanovic class digest_PBKDF2 : public ::testing::Test
974cdf0e10cSrcweir {
975cdf0e10cSrcweir public:
976cdf0e10cSrcweir // initialise your test code values here.
SetUp()977f6483e82SDamjan Jovanovic void SetUp()
978cdf0e10cSrcweir {
979cdf0e10cSrcweir }
980cdf0e10cSrcweir
TearDown()981f6483e82SDamjan Jovanovic void TearDown()
982cdf0e10cSrcweir {
983cdf0e10cSrcweir }
984cdf0e10cSrcweir
run_check_PBKDF2(rtl::OString const & _sPassword,bool _bClearSalt,sal_uInt32 _nCount)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 ];
989f6483e82SDamjan 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 ];
997f6483e82SDamjan 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
1008f6483e82SDamjan Jovanovic EXPECT_TRUE(aError == rtl_Digest_E_None );
1009cdf0e10cSrcweir
1010cdf0e10cSrcweir rtl::OString aKey = createHex(pKeyBuffer, nKeyLen);
1011f6483e82SDamjan Jovanovic printf("Key: %s\n", aKey.getStr());
1012cdf0e10cSrcweir
1013cdf0e10cSrcweir // rtl::OString sSalt = createHex(pSaltData, nSaltDataLen);
1014f6483e82SDamjan Jovanovic // printf("Salt: %s\n", sSalt.getStr());
1015cdf0e10cSrcweir
1016f6483e82SDamjan Jovanovic // EXPECT_TRUE(aStr.equals(sSampleString_PBKDF2)) <<
1017f6483e82SDamjan 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 }
1023f6483e82SDamjan Jovanovic }; // class create
1024cdf0e10cSrcweir
TEST_F(digest_PBKDF2,PBKDF2_001)1025f6483e82SDamjan 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
1042f6483e82SDamjan Jovanovic class update : public ::testing::Test
1043cdf0e10cSrcweir {
1044cdf0e10cSrcweir public:
1045cdf0e10cSrcweir // initialise your test code values here.
SetUp()1046f6483e82SDamjan Jovanovic void SetUp()
1047cdf0e10cSrcweir {
1048cdf0e10cSrcweir }
1049cdf0e10cSrcweir
TearDown()1050f6483e82SDamjan Jovanovic void TearDown()
1051cdf0e10cSrcweir {
1052cdf0e10cSrcweir }
1053f6483e82SDamjan Jovanovic }; // class create
1054cdf0e10cSrcweir
TEST_F(update,update_000)1055f6483e82SDamjan Jovanovic TEST_F(update, update_000)
1056cdf0e10cSrcweir {
1057cdf0e10cSrcweir rtlDigest aHandle = NULL;
1058cdf0e10cSrcweir rtlDigestError aError = rtl_digest_update(aHandle, NULL, 0);
1059f6483e82SDamjan Jovanovic ASSERT_TRUE(aError == rtl_Digest_E_Argument) << "does not handle wrong parameter";
1060cdf0e10cSrcweir }
1061cdf0e10cSrcweir
TEST_F(update,updateMD2_000)1062f6483e82SDamjan Jovanovic TEST_F(update, updateMD2_000)
1063cdf0e10cSrcweir {
1064cdf0e10cSrcweir rtlDigest aHandle = NULL;
1065cdf0e10cSrcweir rtlDigestError aError = rtl_digest_updateMD2(aHandle, NULL, 0);
1066f6483e82SDamjan Jovanovic ASSERT_TRUE(aError == rtl_Digest_E_Argument) << "does not handle wrong parameter";
1067cdf0e10cSrcweir }
1068cdf0e10cSrcweir
TEST_F(update,updateMD2_001)1069f6483e82SDamjan Jovanovic TEST_F(update, updateMD2_001)
1070cdf0e10cSrcweir {
1071cdf0e10cSrcweir rtlDigest aHandle = rtl_digest_create( rtl_Digest_AlgorithmMD2 );
1072f6483e82SDamjan 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);
1078f6483e82SDamjan Jovanovic ASSERT_TRUE(aError == rtl_Digest_E_Argument) << "handle parameter 'pData' wrong";
1079cdf0e10cSrcweir
1080cdf0e10cSrcweir /* rtlDigestError */ aError = rtl_digest_updateMD2(aHandle, pData, 0);
1081f6483e82SDamjan Jovanovic ASSERT_TRUE(aError == rtl_Digest_E_None) << "handle parameter 'nSize' wrong";
1082cdf0e10cSrcweir
1083cdf0e10cSrcweir rtl_digest_destroyMD2(aHandle);
1084cdf0e10cSrcweir }
TEST_F(update,updateMD5_000)1085f6483e82SDamjan Jovanovic TEST_F(update, updateMD5_000)
1086cdf0e10cSrcweir {
1087cdf0e10cSrcweir rtlDigest aHandle = NULL;
1088cdf0e10cSrcweir rtlDigestError aError = rtl_digest_updateMD5(aHandle, NULL, 0);
1089f6483e82SDamjan Jovanovic ASSERT_TRUE(aError == rtl_Digest_E_Argument) << "does not handle wrong parameter";
1090cdf0e10cSrcweir }
1091cdf0e10cSrcweir
TEST_F(update,updateMD5_001)1092f6483e82SDamjan Jovanovic TEST_F(update, updateMD5_001)
1093cdf0e10cSrcweir {
1094cdf0e10cSrcweir // use wrong Algorithm!!! This is volitional!
1095cdf0e10cSrcweir rtlDigest aHandle = rtl_digest_create( rtl_Digest_AlgorithmMD2 );
1096f6483e82SDamjan 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);
1103f6483e82SDamjan Jovanovic ASSERT_TRUE(aError == rtl_Digest_E_Algorithm) << "handle parameter 'handle' wrong";
1104cdf0e10cSrcweir
1105cdf0e10cSrcweir rtl_digest_destroyMD5(aHandle);
1106cdf0e10cSrcweir }
1107cdf0e10cSrcweir
TEST_F(update,updateMD5_002)1108f6483e82SDamjan Jovanovic TEST_F(update, updateMD5_002)
1109cdf0e10cSrcweir {
1110cdf0e10cSrcweir rtlDigest aHandle = rtl_digest_create( rtl_Digest_AlgorithmMD5 );
1111f6483e82SDamjan 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);
1117f6483e82SDamjan Jovanovic ASSERT_TRUE(aError == rtl_Digest_E_Argument) << "handle parameter 'pData' wrong";
1118cdf0e10cSrcweir
1119cdf0e10cSrcweir /* rtlDigestError */ aError = rtl_digest_updateMD5(aHandle, pData, 0);
1120f6483e82SDamjan Jovanovic ASSERT_TRUE(aError == rtl_Digest_E_None) << "handle parameter 'nSize' wrong";
1121cdf0e10cSrcweir
1122cdf0e10cSrcweir rtl_digest_destroyMD5(aHandle);
1123cdf0e10cSrcweir }
1124cdf0e10cSrcweir
TEST_F(update,updateSHA_000)1125f6483e82SDamjan Jovanovic TEST_F(update, updateSHA_000)
1126cdf0e10cSrcweir {
1127cdf0e10cSrcweir rtlDigest aHandle = NULL;
1128cdf0e10cSrcweir rtlDigestError aError = rtl_digest_updateSHA(aHandle, NULL, 0);
1129f6483e82SDamjan Jovanovic ASSERT_TRUE(aError == rtl_Digest_E_Argument) << "does not handle wrong parameter";
1130cdf0e10cSrcweir }
1131cdf0e10cSrcweir
TEST_F(update,updateSHA1_000)1132f6483e82SDamjan Jovanovic TEST_F(update, updateSHA1_000)
1133cdf0e10cSrcweir {
1134cdf0e10cSrcweir rtlDigest aHandle = NULL;
1135cdf0e10cSrcweir rtlDigestError aError = rtl_digest_updateSHA1(aHandle, NULL, 0);
1136f6483e82SDamjan Jovanovic ASSERT_TRUE(aError == rtl_Digest_E_Argument) << "does not handle wrong parameter";
1137cdf0e10cSrcweir }
1138cdf0e10cSrcweir
TEST_F(update,updateHMAC_MD5_000)1139f6483e82SDamjan Jovanovic TEST_F(update, updateHMAC_MD5_000)
1140cdf0e10cSrcweir {
1141cdf0e10cSrcweir rtlDigest aHandle = NULL;
1142cdf0e10cSrcweir rtlDigestError aError = rtl_digest_updateHMAC_MD5(aHandle, NULL, 0);
1143f6483e82SDamjan Jovanovic ASSERT_TRUE(aError == rtl_Digest_E_Argument) << "does not handle wrong parameter";
1144cdf0e10cSrcweir }
1145cdf0e10cSrcweir
TEST_F(update,updateHMAC_SHA1_000)1146f6483e82SDamjan Jovanovic TEST_F(update, updateHMAC_SHA1_000)
1147cdf0e10cSrcweir {
1148cdf0e10cSrcweir rtlDigest aHandle = NULL;
1149cdf0e10cSrcweir rtlDigestError aError = rtl_digest_updateHMAC_SHA1(aHandle, NULL, 0);
1150f6483e82SDamjan Jovanovic ASSERT_TRUE(aError == rtl_Digest_E_Argument) << "does not handle wrong parameter";
1151cdf0e10cSrcweir }
1152cdf0e10cSrcweir
1153cdf0e10cSrcweir // -----------------------------------------------------------------------------
1154cdf0e10cSrcweir
1155f6483e82SDamjan Jovanovic class get : public ::testing::Test
1156cdf0e10cSrcweir {
1157cdf0e10cSrcweir public:
1158cdf0e10cSrcweir // initialise your test code values here.
SetUp()1159f6483e82SDamjan Jovanovic void SetUp()
1160cdf0e10cSrcweir {
1161cdf0e10cSrcweir }
1162cdf0e10cSrcweir
TearDown()1163f6483e82SDamjan Jovanovic void TearDown()
1164cdf0e10cSrcweir {
1165cdf0e10cSrcweir }
1166f6483e82SDamjan Jovanovic }; // class create
1167cdf0e10cSrcweir
TEST_F(get,get_000)1168f6483e82SDamjan Jovanovic TEST_F(get, get_000)
1169cdf0e10cSrcweir {
1170cdf0e10cSrcweir rtlDigest aHandle = NULL;
1171cdf0e10cSrcweir rtlDigestError aError = rtl_digest_get(aHandle, NULL, 0);
1172f6483e82SDamjan Jovanovic ASSERT_TRUE(aError == rtl_Digest_E_Argument) << "does not handle wrong parameter";
1173cdf0e10cSrcweir }
TEST_F(get,getMD5_000)1174f6483e82SDamjan Jovanovic TEST_F(get, getMD5_000)
1175cdf0e10cSrcweir {
1176cdf0e10cSrcweir rtlDigest aHandle = NULL;
1177cdf0e10cSrcweir rtlDigestError aError = rtl_digest_getMD5(aHandle, NULL, 0);
1178f6483e82SDamjan Jovanovic ASSERT_TRUE(aError == rtl_Digest_E_Argument) << "does not handle wrong parameter";
1179cdf0e10cSrcweir }
TEST_F(get,getMD5_001)1180f6483e82SDamjan Jovanovic TEST_F(get, getMD5_001)
1181cdf0e10cSrcweir {
1182cdf0e10cSrcweir // test with wrong algorithm
1183cdf0e10cSrcweir rtlDigest aHandle = rtl_digest_create( rtl_Digest_AlgorithmMD2 );
1184f6483e82SDamjan 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);
1190f6483e82SDamjan Jovanovic ASSERT_TRUE(aError == rtl_Digest_E_Argument) << "handle 2. parameter wrong";
1191cdf0e10cSrcweir
1192cdf0e10cSrcweir /* rtlDigestError */ aError = rtl_digest_getMD5(aHandle, pKeyBuffer, 0);
1193f6483e82SDamjan Jovanovic ASSERT_TRUE(aError == rtl_Digest_E_Algorithm) << "handle parameter 'handle' wrong";
1194cdf0e10cSrcweir
1195cdf0e10cSrcweir rtl_digest_destroyMD2(aHandle);
1196cdf0e10cSrcweir }
1197cdf0e10cSrcweir
TEST_F(get,getMD5_002)1198f6483e82SDamjan Jovanovic TEST_F(get, getMD5_002)
1199cdf0e10cSrcweir {
1200cdf0e10cSrcweir rtlDigest aHandle = rtl_digest_create( rtl_Digest_AlgorithmMD5 );
1201f6483e82SDamjan 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);
1207f6483e82SDamjan Jovanovic ASSERT_TRUE(aError == rtl_Digest_E_Argument) << "handle parameter 'pData' wrong";
1208cdf0e10cSrcweir
1209cdf0e10cSrcweir /* rtlDigestError */ aError = rtl_digest_getMD5(aHandle, pKeyBuffer, 0);
1210f6483e82SDamjan Jovanovic ASSERT_TRUE(aError == rtl_Digest_E_BufferSize) << "handle parameter 'nSize' wrong";
1211cdf0e10cSrcweir
1212cdf0e10cSrcweir rtl_digest_destroyMD5(aHandle);
1213cdf0e10cSrcweir delete [] pKeyBuffer;
1214cdf0e10cSrcweir }
1215cdf0e10cSrcweir // -----------------------------------------------------------------------------
1216f6483e82SDamjan Jovanovic class destroy : public ::testing::Test
1217cdf0e10cSrcweir {
1218cdf0e10cSrcweir public:
1219cdf0e10cSrcweir // initialise your test code values here.
SetUp()1220f6483e82SDamjan Jovanovic void SetUp()
1221cdf0e10cSrcweir {
1222cdf0e10cSrcweir }
1223cdf0e10cSrcweir
TearDown()1224f6483e82SDamjan Jovanovic void TearDown()
1225cdf0e10cSrcweir {
1226cdf0e10cSrcweir }
1227f6483e82SDamjan Jovanovic }; // class create
1228cdf0e10cSrcweir
TEST_F(destroy,destroy_001)1229f6483e82SDamjan Jovanovic TEST_F(destroy, destroy_001)
1230cdf0e10cSrcweir {
1231cdf0e10cSrcweir rtlDigest handle = rtl_digest_create( rtl_Digest_AlgorithmMD5 );
1232f6483e82SDamjan 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
main(int argc,char ** argv)1242f6483e82SDamjan Jovanovic int main(int argc, char **argv)
1243f6483e82SDamjan Jovanovic {
1244f6483e82SDamjan Jovanovic ::testing::InitGoogleTest(&argc, argv);
1245f6483e82SDamjan Jovanovic return RUN_ALL_TESTS();
1246f6483e82SDamjan Jovanovic }
1247