diff options
author | Vasily Melenchuk <vasily.melenchuk@cib.de> | 2019-09-03 21:08:34 +0300 |
---|---|---|
committer | Thorsten Behrens <Thorsten.Behrens@CIB.de> | 2020-05-25 10:04:15 +0200 |
commit | b9353394f46e46485fd148f2842f0c1e8e5322e3 (patch) | |
tree | bf3dcc20cafbc00275c7154858379361b5147ff9 /oox/qa | |
parent | 2f17679a46ca1336cb82ef652e09f423c5b8923d (diff) |
[MS-OFFCRYPTO] convert oox implementation into UNO service
To permit pluggable crypto services, abstract existing
implementation behind an XPackageEncryption API.
Previous code already had two halfway-polymorphic classes (agile and
standard 2007 engine), so we're not adding much additional layers.
As MS crypto always uses OLE storage to wrap content into one single
file, current implementation passes all substorage names down into
XPackageEncryption APi, so different downstream implementations (e.g.
for MS RMS, or Azure AIP) are possible.
Because OleStorage classes are internal to LibO core, access is provided
via XInput/XOutput stream API function.
Change-Id: Icc32a4e0ce215090c3b739f1dcaa0654b36b7f08
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/84436
Tested-by: Jenkins
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
Diffstat (limited to 'oox/qa')
-rw-r--r-- | oox/qa/unit/CryptoTest.cxx | 46 |
1 files changed, 23 insertions, 23 deletions
diff --git a/oox/qa/unit/CryptoTest.cxx b/oox/qa/unit/CryptoTest.cxx index e1a4781d234c..c4058619e5c9 100644 --- a/oox/qa/unit/CryptoTest.cxx +++ b/oox/qa/unit/CryptoTest.cxx @@ -66,7 +66,7 @@ void CryptoTest::testCryptoHash() aContentString.getStr() + aContentString.getLength()); std::vector<sal_uInt8> aKey = { 'k', 'e', 'y' }; { - oox::core::CryptoHash aCryptoHash(aKey, oox::core::CryptoHashType::SHA1); + oox::crypto::CryptoHash aCryptoHash(aKey, oox::crypto::CryptoHashType::SHA1); aCryptoHash.update(aContent); std::vector<sal_uInt8> aHash = aCryptoHash.finalize(); CPPUNIT_ASSERT_EQUAL(std::string("de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9"), @@ -74,7 +74,7 @@ void CryptoTest::testCryptoHash() } { - oox::core::CryptoHash aCryptoHash(aKey, oox::core::CryptoHashType::SHA256); + oox::crypto::CryptoHash aCryptoHash(aKey, oox::crypto::CryptoHashType::SHA256); aCryptoHash.update(aContent); std::vector<sal_uInt8> aHash = aCryptoHash.finalize(); CPPUNIT_ASSERT_EQUAL( @@ -83,7 +83,7 @@ void CryptoTest::testCryptoHash() } { - oox::core::CryptoHash aCryptoHash(aKey, oox::core::CryptoHashType::SHA512); + oox::crypto::CryptoHash aCryptoHash(aKey, oox::crypto::CryptoHashType::SHA512); aCryptoHash.update(aContent); std::vector<sal_uInt8> aHash = aCryptoHash.finalize(); CPPUNIT_ASSERT_EQUAL( @@ -95,18 +95,18 @@ void CryptoTest::testCryptoHash() void CryptoTest::testRoundUp() { - CPPUNIT_ASSERT_EQUAL(16, oox::core::roundUp(16, 16)); - CPPUNIT_ASSERT_EQUAL(32, oox::core::roundUp(32, 16)); - CPPUNIT_ASSERT_EQUAL(64, oox::core::roundUp(64, 16)); + CPPUNIT_ASSERT_EQUAL(16, oox::crypto::roundUp(16, 16)); + CPPUNIT_ASSERT_EQUAL(32, oox::crypto::roundUp(32, 16)); + CPPUNIT_ASSERT_EQUAL(64, oox::crypto::roundUp(64, 16)); - CPPUNIT_ASSERT_EQUAL(16, oox::core::roundUp(01, 16)); - CPPUNIT_ASSERT_EQUAL(32, oox::core::roundUp(17, 16)); - CPPUNIT_ASSERT_EQUAL(32, oox::core::roundUp(31, 16)); + CPPUNIT_ASSERT_EQUAL(16, oox::crypto::roundUp(01, 16)); + CPPUNIT_ASSERT_EQUAL(32, oox::crypto::roundUp(17, 16)); + CPPUNIT_ASSERT_EQUAL(32, oox::crypto::roundUp(31, 16)); } void CryptoTest::testStandard2007() { - oox::core::Standard2007Engine aEngine; + oox::crypto::Standard2007Engine aEngine; { aEngine.setupEncryption("Password"); @@ -173,7 +173,7 @@ void CryptoTest::testStandard2007() void CryptoTest::testAgileEncryptionVerifier() { - oox::core::AgileEngine aEngine; + oox::crypto::AgileEngine aEngine; OUString aPassword("Password"); @@ -200,9 +200,9 @@ void CryptoTest::testAgileEncrpytionInfoWritingAndParsing() { // Preset AES128 - SHA1 SvMemoryStream aEncryptionInfo; { - oox::core::AgileEngine aEngine; + oox::crypto::AgileEngine aEngine; - aEngine.setPreset(oox::core::AgileEncryptionPreset::AES_128_SHA1); + aEngine.setPreset(oox::crypto::AgileEncryptionPreset::AES_128_SHA1); aEngine.setupEncryption(aPassword); aKeyDataSalt = aEngine.getInfo().keyDataSalt; @@ -218,7 +218,7 @@ void CryptoTest::testAgileEncrpytionInfoWritingAndParsing() aEncryptionInfo.Seek(STREAM_SEEK_TO_BEGIN); { - oox::core::AgileEngine aEngine; + oox::crypto::AgileEngine aEngine; uno::Reference<io::XInputStream> xInputStream( new utl::OSeekableInputStreamWrapper(aEncryptionInfo)); @@ -227,7 +227,7 @@ void CryptoTest::testAgileEncrpytionInfoWritingAndParsing() CPPUNIT_ASSERT(aEngine.readEncryptionInfo(xInputStream)); - oox::core::AgileEncryptionInfo& rInfo = aEngine.getInfo(); + oox::crypto::AgileEncryptionInfo& rInfo = aEngine.getInfo(); CPPUNIT_ASSERT_EQUAL(sal_Int32(100000), rInfo.spinCount); CPPUNIT_ASSERT_EQUAL(sal_Int32(16), rInfo.saltSize); CPPUNIT_ASSERT_EQUAL(sal_Int32(128), rInfo.keyBits); @@ -246,9 +246,9 @@ void CryptoTest::testAgileEncrpytionInfoWritingAndParsing() { // Preset AES256 - SHA512 SvMemoryStream aEncryptionInfo; { - oox::core::AgileEngine aEngine; + oox::crypto::AgileEngine aEngine; - aEngine.setPreset(oox::core::AgileEncryptionPreset::AES_256_SHA512); + aEngine.setPreset(oox::crypto::AgileEncryptionPreset::AES_256_SHA512); aEngine.setupEncryption(aPassword); aKeyDataSalt = aEngine.getInfo().keyDataSalt; @@ -264,7 +264,7 @@ void CryptoTest::testAgileEncrpytionInfoWritingAndParsing() aEncryptionInfo.Seek(STREAM_SEEK_TO_BEGIN); { - oox::core::AgileEngine aEngine; + oox::crypto::AgileEngine aEngine; uno::Reference<io::XInputStream> xInputStream( new utl::OSeekableInputStreamWrapper(aEncryptionInfo)); @@ -273,7 +273,7 @@ void CryptoTest::testAgileEncrpytionInfoWritingAndParsing() CPPUNIT_ASSERT(aEngine.readEncryptionInfo(xInputStream)); - oox::core::AgileEncryptionInfo& rInfo = aEngine.getInfo(); + oox::crypto::AgileEncryptionInfo& rInfo = aEngine.getInfo(); CPPUNIT_ASSERT_EQUAL(sal_Int32(100000), rInfo.spinCount); CPPUNIT_ASSERT_EQUAL(sal_Int32(16), rInfo.saltSize); CPPUNIT_ASSERT_EQUAL(sal_Int32(256), rInfo.keyBits); @@ -301,7 +301,7 @@ void CryptoTest::testAgileDataIntegrityHmacKey() SvMemoryStream aEncryptionInfo; { - oox::core::AgileEngine aEngine; + oox::crypto::AgileEngine aEngine; aEngine.setupEncryption(aPassword); oox::BinaryXOutputStream aBinaryEncryptionInfoOutputStream( new utl::OSeekableOutputStreamWrapper(aEncryptionInfo), true); @@ -316,7 +316,7 @@ void CryptoTest::testAgileDataIntegrityHmacKey() aEncryptionInfo.Seek(STREAM_SEEK_TO_BEGIN); { - oox::core::AgileEngine aEngine; + oox::crypto::AgileEngine aEngine; uno::Reference<io::XInputStream> xInputStream( new utl::OSeekableInputStreamWrapper(aEncryptionInfo)); @@ -346,7 +346,7 @@ void CryptoTest::testAgileEncryptingAndDecrypting() OString aTestString = OUStringToOString("1234567890ABCDEFGH", RTL_TEXTENCODING_UTF8); { - oox::core::AgileEngine aEngine; + oox::crypto::AgileEngine aEngine; // Setup input SvMemoryStream aUnencryptedInput; @@ -381,7 +381,7 @@ void CryptoTest::testAgileEncryptingAndDecrypting() aEncryptionInfo.Seek(STREAM_SEEK_TO_BEGIN); { - oox::core::AgileEngine aEngine; + oox::crypto::AgileEngine aEngine; // Read encryption info uno::Reference<io::XInputStream> xEncryptionInfo( |