diff options
Diffstat (limited to 'oox/source/crypto/Standard2007Engine.cxx')
-rw-r--r-- | oox/source/crypto/Standard2007Engine.cxx | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/oox/source/crypto/Standard2007Engine.cxx b/oox/source/crypto/Standard2007Engine.cxx index 86d9092be574..b48f6e517758 100644 --- a/oox/source/crypto/Standard2007Engine.cxx +++ b/oox/source/crypto/Standard2007Engine.cxx @@ -11,6 +11,7 @@ #include <oox/crypto/Standard2007Engine.hxx> #include <com/sun/star/io/XStream.hpp> +#include <com/sun/star/io/SequenceInputStream.hpp> #include <oox/crypto/CryptTools.hxx> #include <oox/helper/binaryinputstream.hxx> #include <oox/helper/binaryoutputstream.hxx> @@ -44,6 +45,12 @@ constexpr const sal_uInt32 AES128Size = 16; } // end anonymous namespace +Standard2007Engine::Standard2007Engine(const css::uno::Reference<css::uno::XComponentContext>& rxContext) + : mxContext(rxContext) +{ + +} + bool Standard2007Engine::generateVerifier() { // only support key of size 128 bit (16 byte) @@ -289,9 +296,24 @@ void Standard2007Engine::encrypt(css::uno::Reference<css::io::XInputStream> & r } } -bool Standard2007Engine::readEncryptionInfo(oox::ole::OleStorage& rOleStorage) +css::uno::Reference<css::io::XInputStream> Standard2007Engine::getStream(css::uno::Sequence<css::beans::NamedValue> & rStreams, const OUString sStreamName) +{ + for (const auto & aStream : rStreams) + { + if (aStream.Name == sStreamName) + { + css::uno::Sequence<sal_Int8> aSeq; + aStream.Value >>= aSeq; + Reference<XInputStream> aStream(css::io::SequenceInputStream::createStreamFromSequence(mxContext, aSeq), UNO_QUERY_THROW); + return aStream; + } + } + return nullptr; +} + +bool Standard2007Engine::readEncryptionInfo(css::uno::Sequence<css::beans::NamedValue> aStreams) { - Reference<css::io::XInputStream> rxInputStream = rOleStorage.openInputStream("EncryptionInfo"); + Reference<css::io::XInputStream> rxInputStream = getStream(aStreams, "EncryptionInfo"); BinaryXInputStream aBinaryStream(rxInputStream, false); aBinaryStream.readuInt32(); // Version |