summaryrefslogtreecommitdiff
path: root/comphelper
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2018-02-26 12:14:03 +0100
committerEike Rathke <erack@redhat.com>2018-02-26 12:15:17 +0100
commit384954795c4f3c0641f4b0eb7cff6f27ebfbb5de (patch)
treef315c0b702c74f16ea4eb5d2bd084919eeb317de /comphelper
parentf1a11b9ce9dda2a57bc77d3bf38167a31feff8f1 (diff)
Move convenience abstractions to DocPasswordHelper, tdf#104250 follow-up
Change-Id: If0775ccf14b631918e51342a767412948e812c87
Diffstat (limited to 'comphelper')
-rw-r--r--comphelper/qa/unit/test_hash.cxx3
-rw-r--r--comphelper/source/misc/docpasswordhelper.cxx48
-rw-r--r--comphelper/source/misc/hash.cxx46
3 files changed, 50 insertions, 47 deletions
diff --git a/comphelper/qa/unit/test_hash.cxx b/comphelper/qa/unit/test_hash.cxx
index e15b906c190f..11dcbd0bd10f 100644
--- a/comphelper/qa/unit/test_hash.cxx
+++ b/comphelper/qa/unit/test_hash.cxx
@@ -8,6 +8,7 @@
*/
#include <comphelper/hash.hxx>
+#include <comphelper/docpasswordhelper.hxx>
#include <rtl/ustring.hxx>
#include <sal/log.hxx>
@@ -111,7 +112,7 @@ void TestHash::testSHA512_saltspin()
const OUString aPass("pwd");
const OUString aAlgo("SHA-512");
const OUString aSalt("876MLoKTq42+/DLp415iZQ==");
- const OUString aHash = comphelper::Hash::calculateHashBase64( aPass, aSalt, 100000, aAlgo);
+ const OUString aHash = comphelper::DocPasswordHelper::GetOoxHashAsBase64( aPass, aSalt, 100000, aAlgo);
const OUString aStr("5l3mgNHXpWiFaBPv5Yso1Xd/UifWvQWmlDnl/hsCYbFT2sJCzorjRmBCQ/3qeDu6Q/4+GIE8a1DsdaTwYh1q2g==");
CPPUNIT_ASSERT_EQUAL(aStr, aHash);
}
diff --git a/comphelper/source/misc/docpasswordhelper.cxx b/comphelper/source/misc/docpasswordhelper.cxx
index 81e1e996816f..e6055b29cebc 100644
--- a/comphelper/source/misc/docpasswordhelper.cxx
+++ b/comphelper/source/misc/docpasswordhelper.cxx
@@ -23,6 +23,9 @@
#include <comphelper/docpasswordhelper.hxx>
#include <comphelper/storagehelper.hxx>
+#include <comphelper/hash.hxx>
+#include <comphelper/base64.hxx>
+#include <comphelper/sequence.hxx>
#include <com/sun/star/beans/PropertyValue.hpp>
#include <com/sun/star/task/XInteractionHandler.hpp>
#include <com/sun/star/lang/IllegalArgumentException.hpp>
@@ -256,6 +259,51 @@ Sequence< sal_Int8 > DocPasswordHelper::GetXLHashAsSequence(
}
+css::uno::Sequence<sal_Int8> DocPasswordHelper::GetOoxHashAsSequence(
+ const rtl::OUString& rPassword,
+ const rtl::OUString& rSaltValue,
+ sal_uInt32 nSpinCount,
+ const rtl::OUString& rAlgorithmName)
+{
+ comphelper::HashType eType;
+ if (rAlgorithmName == "SHA-512")
+ eType = comphelper::HashType::SHA512;
+ else if (rAlgorithmName == "SHA-256")
+ eType = comphelper::HashType::SHA256;
+ else if (rAlgorithmName == "SHA-1")
+ eType = comphelper::HashType::SHA1;
+ else if (rAlgorithmName == "MD5")
+ eType = comphelper::HashType::MD5;
+ else
+ return css::uno::Sequence<sal_Int8>();
+
+ std::vector<unsigned char> aSaltVec;
+ if (!rSaltValue.isEmpty())
+ {
+ css::uno::Sequence<sal_Int8> aSaltSeq;
+ comphelper::Base64::decode( aSaltSeq, rSaltValue);
+ aSaltVec = comphelper::sequenceToContainer<std::vector<unsigned char>>( aSaltSeq);
+ }
+
+ std::vector<unsigned char> hash( comphelper::Hash::calculateHash( rPassword, aSaltVec, nSpinCount, eType));
+
+ return comphelper::containerToSequence<sal_Int8>( hash);
+}
+
+OUString DocPasswordHelper::GetOoxHashAsBase64(
+ const rtl::OUString& rPassword,
+ const rtl::OUString& rSaltValue,
+ sal_uInt32 nSpinCount,
+ const rtl::OUString& rAlgorithmName)
+{
+ css::uno::Sequence<sal_Int8> aSeq( GetOoxHashAsSequence( rPassword, rSaltValue, nSpinCount, rAlgorithmName));
+
+ OUStringBuffer aBuf;
+ comphelper::Base64::encode( aBuf, aSeq);
+ return aBuf.makeStringAndClear();
+}
+
+
/*static*/ uno::Sequence< sal_Int8 > DocPasswordHelper::GenerateRandomByteSequence( sal_Int32 nLength )
{
uno::Sequence< sal_Int8 > aResult( nLength );
diff --git a/comphelper/source/misc/hash.cxx b/comphelper/source/misc/hash.cxx
index 0a91536347b9..b629d8d17530 100644
--- a/comphelper/source/misc/hash.cxx
+++ b/comphelper/source/misc/hash.cxx
@@ -8,8 +8,6 @@
*/
#include <comphelper/hash.hxx>
-#include <comphelper/base64.hxx>
-#include <comphelper/sequence.hxx>
#include <rtl/ustring.hxx>
#include <rtl/alloc.h>
#include <osl/endian.h>
@@ -231,50 +229,6 @@ std::vector<unsigned char> Hash::calculateHash(
return calculateHash( pPassBytes, nPassBytesLen, rSaltValue.data(), rSaltValue.size(), nSpinCount, eType);
}
-css::uno::Sequence<sal_Int8> Hash::calculateHashSequence(
- const rtl::OUString& rPassword,
- const rtl::OUString& rSaltValue,
- sal_uInt32 nSpinCount,
- const rtl::OUString& rAlgorithmName)
-{
- HashType eType;
- if (rAlgorithmName == "SHA-512")
- eType = HashType::SHA512;
- else if (rAlgorithmName == "SHA-256")
- eType = HashType::SHA256;
- else if (rAlgorithmName == "SHA-1")
- eType = HashType::SHA1;
- else if (rAlgorithmName == "MD5")
- eType = HashType::MD5;
- else
- return css::uno::Sequence<sal_Int8>();
-
- std::vector<unsigned char> aSaltVec;
- if (!rSaltValue.isEmpty())
- {
- css::uno::Sequence<sal_Int8> aSaltSeq;
- comphelper::Base64::decode( aSaltSeq, rSaltValue);
- aSaltVec = comphelper::sequenceToContainer<std::vector<unsigned char>>( aSaltSeq);
- }
-
- std::vector<unsigned char> hash( calculateHash( rPassword, aSaltVec, nSpinCount, eType));
-
- return comphelper::containerToSequence<sal_Int8>( hash);
-}
-
-OUString Hash::calculateHashBase64(
- const rtl::OUString& rPassword,
- const rtl::OUString& rSaltValue,
- sal_uInt32 nSpinCount,
- const rtl::OUString& rAlgorithmName)
-{
- css::uno::Sequence<sal_Int8> aSeq( calculateHashSequence( rPassword, rSaltValue, nSpinCount, rAlgorithmName));
-
- OUStringBuffer aBuf;
- comphelper::Base64::encode( aBuf, aSeq);
- return aBuf.makeStringAndClear();
-}
-
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */