That's great. Thank you for testing. My own tests also show it no longer crashes, both the Standard and Agile encryption are working now :).
On Sun, Mar 17, 2024 at 7:59 PM Matthias Seidel <matthias.sei...@hamburg.de> wrote: > Hi Damjan, All, > > That seems to have fixed the crashes on Windows... > > Regards, > > Matthias > > Am 17.03.24 um 16:56 schrieb Matthias Seidel: > > I am already doing a full build,but hopefully I could pull your last > > commit soon enough. > > > > Regards, > > > > Matthias > > > > Am 17.03.24 um 15:20 schrieb Damjan Jovanovic: > >> If you haven't done "dmake clean" yet like me, try to "git pull" my > >> latest > >> commit, and then in main/instsetoo_native "build --from oox -P2 -- -P2". > >> > >> This commit fixes at least one more issue: > >> > >> commit 244f2bcc921bc5dc45e6c1970e27ac2409c44e17 (HEAD -> trunk, > >> origin/trunk, origin/HEAD) > >> Author: Damjan Jovanovic <dam...@apache.org> > >> Date: Sun Mar 17 15:56:38 2024 +0200 > >> > >> Don't allow calls to OpenSSLCipher::blockSize() before the cipher > >> is initialized. > >> > >> On Sun, Mar 17, 2024 at 1:24 PM Matthias Seidel > >> <matthias.sei...@hamburg.de> > >> wrote: > >> > >>> WTH, shortly after I sent this mail I could open the files... > >>> > >>> Matthias > >>> > >>> Am 17.03.24 um 14:22 schrieb Matthias Seidel: > >>>> Hi Damjan, > >>>> > >>>> That was fast! ;-) > >>>> > >>>> I can confirm that it builds now on Windows. > >>>> > >>>> When I try to open password protected MS Office 2020+ files (xlsx, > >>>> docx) I now get the password dialog > >>>> > >>>> But when I enter the correct password AOO crashes. > >>>> > >>>> Regards, > >>>> > >>>> Matthias > >>>> > >>>> P.S.: This was a partial build, I will try a complete build now. > >>>> > >>>> Am 17.03.24 um 12:23 schrieb Damjan Jovanovic: > >>>>> I've fixed this now and it seems to build on Windows too. The fixes > >>>>> are in > >>>>> these commits, and if they work, should be cherry-picked in the given > >>>>> order: > >>>>> > >>>>> f65b4e326d91bfe900dc1dd22ece69e3ddd8444a > >>>>> f3025b08c40161265442c34e2b50bc05aa5388c6 > >>>>> 42c0a318a970f6f7f43d26a8397448d5d5b8bd36 > >>>>> > >>>>> There were several problems on Windows. The Visual Studio 2008 > >>>>> compiler > >>>>> doesn't have the ::std::vector::data() method (even though it > >>>>> should, it > >>>>> was part of the C++98/03 standard), I had to use &vector[0] instead. > >>>>> Also > >>>>> that ancient OpenSSL version we use internally, 1.0.x, uses > >>>>> EVP_MD_CTX_create()/destroy() instead of EVP_MD_CTX_new()/free(). > >>>>> Finally > >>>>> some template function was unhappy about parameter type ambiguity > >>>>> (even > >>>>> though superior compilers like Clang are perfectly happy), and I had > >>>>> to add > >>>>> casts. > >>>>> > >>>>> > >>>>> On Sun, Mar 17, 2024 at 11:15 AM Matthias Seidel > >>>>> <matthias.sei...@hamburg.de> > >>>>> wrote: > >>>>> > >>>>>> Hi Damjan, > >>>>>> > >>>>>> You are right, the interesting part is at the beginning: > >>>>>> > >>>>>> --- > >>>>>> > >>>>>> ============= > >>>>>> Building module oox > >>>>>> ============= > >>>>>> > >>>>>> Entering /cygdrive/c/Source/openoffice/main/oox/prj > >>>>>> > >>>>>> cd .. && make -s -r -j1 && make -s -r deliverlog > >>>>>> [ build CXX ] oox/source/core/encryption > >>>>>> encryption.cxx > >>>>>> > c:/Source/openoffice/main/oox/inc\oox/helper/openssl_wrapper.hxx(44) > >>>>>> : > >>>>>> error C3861: 'EVP_MD_CTX_new': identifier not found > >>>>>> > c:/Source/openoffice/main/oox/inc\oox/helper/openssl_wrapper.hxx(51) > >>>>>> : > >>>>>> error C3861: 'EVP_MD_CTX_free': identifier not found > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(100) : > >>>>>> error > >>>>>> C2782: 'bool oox::getFlag(Type,Type)' : template parameter 'Type' is > >>>>>> ambiguous > >>>>>> c:/Source/openoffice/main/oox/inc\oox/helper/helper.hxx(141) : see > >>>>>> declaration of 'oox::getFlag' > >>>>>> could be 'unsigned int' > >>>>>> or 'sal_uInt32' > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(133) : > >>>>>> error > >>>>>> C2782: 'bool oox::getFlag(Type,Type)' : template parameter 'Type' is > >>>>>> ambiguous > >>>>>> c:/Source/openoffice/main/oox/inc\oox/helper/helper.hxx(141) : see > >>>>>> declaration of 'oox::getFlag' > >>>>>> could be 'unsigned int' > >>>>>> or 'sal_uInt32' > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(134) : > >>>>>> error > >>>>>> C2782: 'bool oox::getFlag(Type,Type)' : template parameter 'Type' is > >>>>>> ambiguous > >>>>>> c:/Source/openoffice/main/oox/inc\oox/helper/helper.hxx(141) : see > >>>>>> declaration of 'oox::getFlag' > >>>>>> could be 'unsigned int' > >>>>>> or 'sal_uInt32' > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(210) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(214) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(217) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(299) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(362) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(700) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(701) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(702) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(710) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(711) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(753) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(754) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(756) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(780) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(781) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(783) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(809) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(833) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(833) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(833) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(852) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(854) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(882) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(882) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(882) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(888) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(888) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(888) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(930) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(932) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(932) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(938) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> c:/Source/openoffice/main/oox/source/core/encryption.cxx(946) : > >>>>>> error > >>>>>> C2039: 'data' : is not a member of 'std::vector<_Ty>' > >>>>>> with > >>>>>> [ > >>>>>> _Ty=sal_uInt8 > >>>>>> ] > >>>>>> make: *** No rule to make target > >>>>>> '/cygdrive/c/Source/openoffice/main/solver/450/ > >>>>>> wntmsci12.pro/workdir/CxxObject/oox/source/core/encryption.o', > >>>>>> needed by > >>>>>> '/cygdrive/c/Source/openoffice/main/solver/450/ > >>>>>> wntmsci12.pro/workdir/LinkTarget/Library/ioox.lib'. > >>>>>> Stop. > >>>>>> dmake: Error code 2, while making 'all' > >>>>>> > >>>>>> 1 module(s): > >>>>>> oox > >>>>>> need(s) to be rebuilt > >>>>>> > >>>>>> Reason(s): > >>>>>> > >>>>>> ERROR: error 65280 occurred while making > >>>>>> /cygdrive/c/Source/openoffice/main/oox/prj > >>>>>> > >>>>>> When you have fixed the errors in that module you can resume the > >>>>>> build > >>>>>> by running: > >>>>>> > >>>>>> build --from oox > >>>>>> > >>>>>> --- > >>>>>> > >>>>>> Regards, > >>>>>> > >>>>>> Matthias > >>>>>> > >>>>>> Am 17.03.24 um 01:55 schrieb Damjan Jovanovic: > >>>>>>> Please check further up in the log, or run "build" in main/oox > >>>>>>> again. > >>>>>>> > >>>>>>> That "No rule to make target" happens after other errors break > >>>>>> compilation. > >>>>>>> On Sat, Mar 16, 2024 at 8:38 PM Matthias Seidel < > >>>>>> matthias.sei...@hamburg.de> > >>>>>>> wrote: > >>>>>>> > >>>>>>>> Hi Damjan, > >>>>>>>> > >>>>>>>> Tried to build trunk on Windows but it stops here: > >>>>>>>> > >>>>>>>> make: *** No rule to make target > >>>>>>>> '/cygdrive/c/Source/openoffice/main/solver/450/ > >>>>>>>> wntmsci12.pro/workdir/CxxObject/oox/source/core/encryption.o', > >>>>>>>> needed by > >>>>>>>> '/cygdrive/c/Source/openoffice/main/solver/450/ > >>>>>>>> wntmsci12.pro/workdir/LinkTarget/Library/ioox.lib'. > >>>>>>>> Stop. > >>>>>>>> dmake: Error code 2, while making 'all' > >>>>>>>> > >>>>>>>> 1 module(s): > >>>>>>>> oox > >>>>>>>> need(s) to be rebuilt > >>>>>>>> > >>>>>>>> Reason(s): > >>>>>>>> > >>>>>>>> ERROR: error 65280 occurred while making > >>>>>>>> /cygdrive/c/Source/openoffice/main/oox/prj > >>>>>>>> > >>>>>>>> When you have fixed the errors in that module you can resume the > >>>>>>>> build > >>>>>>>> by running: > >>>>>>>> > >>>>>>>> build --from oox > >>>>>>>> > >>>>>>>> Am 16.03.24 um 04:49 schrieb Damjan Jovanovic: > >>>>>>>>> Hi > >>>>>>>>> > >>>>>>>>> Bug 118236 with 7 votes, the inability to open password-protected > >>>>>>>>> (encrypted) OOXML files from MS Office 2010+, is now fixed in > >>>>>>>>> trunk :-) > >>>>>>>>> > >>>>>>>>> ---snip--- > >>>>>>>>> commit 506fa58b1970084a0caacb50b3a805e469be4756 (HEAD -> trunk, > >>>>>>>>> origin/trunk, origin/HEAD) > >>>>>>>>> Author: Damjan Jovanovic <dam...@apache.org> > >>>>>>>>> Date: Sat Mar 2 18:47:05 2024 +0200 > >>>>>>>>> > >>>>>>>>> Implement the (MS Office 2010+) OOXML "Agile encryption" > >>>>>> support, so > >>>>>>>>> that we > >>>>>>>>> can open such password-protected OOXML files. > >>>>>>>>> > >>>>>>>>> Adds all the Agile encryption XML tokens and > >>>>>>>>> namespaces, and > >>>>>> parses > >>>>>>>> the > >>>>>>>>> XML > >>>>>>>>> from EncryptionInfo stream, gets OpenOffice to > >>>>>>>>> recognize the > >>>>>> file is > >>>>>>>>> encrypted > >>>>>>>>> and ask for a password, and successfully decrypts the > >>>>>>>>> file if > >>>>>>>> password > >>>>>>>>> is > >>>>>>>>> correct. > >>>>>>>>> > >>>>>>>>> Also a number of other fixes and improvements: > >>>>>>>>> - Sorted main/oox/source/token/tokens.txt so it's in > >>>>>>>>> alphabetical > >>>>>>>> order > >>>>>>>>> (wrong order might have broken certain tokens?). > >>>>>>>>> - Refactored how OOXML encryption is generally handled. > >>>>>>>>> It's now > >>>>>> in > >>>>>>>> its > >>>>>>>>> own file. > >>>>>>>>> - Added logging to the FilterDetect class. It logs to the > >>>>>>>> office-wide > >>>>>>>>> default > >>>>>>>>> logger. > >>>>>>>>> - Added a flush() method to the BinaryXOutputStream > >>>>>>>>> class. > >>>>>>>>> - Changed FilterDetect to use XMultiComponentFactory and > >>>>>>>>> XComponentContext > >>>>>>>>> instead of the deprecated XMultiServiceFactory. > >>>>>>>>> - Error handling was generally improved. > >>>>>>>>> - Exception safety and some memory safety (::std::vector > >>>>>>>>> instead > >>>>>> of > >>>>>>>>> new[]) > >>>>>>>>> in all the new code. Memory leaks should not be > >>>>>>>>> possible. > >>>>>>>>> > >>>>>>>>> Much of the code involved in the decryption was ported > >>>>>>>>> from the > >>>>>>>>> excellent > >>>>>>>>> Apache POI project, so it's been credited in our > >>>>>>>>> NOTICE file. > >>>>>>>>> > >>>>>>>>> Patch by: me > >>>>>>>>> ---snip--- > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> It took much longer than I expected: > >>>>>>>>> > >>>>>>>>> The MS-OFFCRYPTO specification was unclear, and plain wrong in > >>>>>>>>> some > >>>>>>>> parts, > >>>>>>>>> eg. "SHA-1" in the spec but "SHA1" in actual OOXML documents; > >>>>>>>>> I've made > >>>>>>>> our > >>>>>>>>> code support both. > >>>>>>>>> > >>>>>>>>> The "Standard" encryption from MS Office 2007 that we already > >>>>>>>>> supported > >>>>>>>> was > >>>>>>>>> itself a mess, and much work was needed to refactor and clean up > >>>>>>>>> that > >>>>>>>> code > >>>>>>>>> before the "Agile" encryption could also be added. > >>>>>>>>> > >>>>>>>>> Then XML parsing had to be added, since Agile encryption > >>>>>>>>> specifies > >>>>>>>> settings > >>>>>>>>> in XML instead of binary like Standard encryption did. XML > >>>>>>>>> handling in > >>>>>>>>> OpenOffice is pretty outdated, with no support for namespaces, > >>>>>>>>> but at > >>>>>>>> least > >>>>>>>>> the newer "FastParser" does support namespaces and is in fact > >>>>>>>>> very fast > >>>>>>>>> because it converts strings to unique integers, and packs > >>>>>>>>> namespaces > >>>>>> into > >>>>>>>>> bit fields, for faster comparisons. I ended up updating the > >>>>>>>>> main/oox > >>>>>>>>> FastParser to support the new Agile encryption namespaces and > >>>>>>>>> elements. > >>>>>>>>> > >>>>>>>>> MS-OFFCRYPTO also only describes encryption, not decryption, and > >>>>>>>>> since > >>>>>> we > >>>>>>>>> can only read OOXML, only decryption matters. > >>>>>>>>> > >>>>>>>>> Apache POI code was tremendously helpful in figuring out the > >>>>>>>>> decryption > >>>>>>>>> process. Most of the decryption code I added was just ported > >>>>>>>>> directly > >>>>>>>> from > >>>>>>>>> theirs, and thus I've added Apache POI to our NOTICE file (please > >>>>>>>>> check > >>>>>>>>> that I've done it correctly). Also several bugs were figured > >>>>>>>>> out by > >>>>>>>>> simultaneously stepping through our code in gdb and their code in > >>>>>>>> NetBeans, > >>>>>>>>> and comparing respective values. A big thank you to the Apache > >>>>>>>>> POI > >>>>>>>>> developers, whose OOXML support is still better than ours in many > >>>>>>>>> ways! > >>>>>>>>> > >>>>>>>>> I used OpenSSL for all the message digest and encryption > >>>>>>>>> stuff, both > >>>>>>>>> because our MD5 and SHA1 algorithms are broken (bug 127661), and > >>>>>> because > >>>>>>>>> Agile encryption requires many digests and ciphers that OpenSSL > >>>>>> supports > >>>>>>>>> but we don't. > >>>>>>>>> > >>>>>>>>> Anyway, it works now. All encrypted OOXML files should work, eg. > >>>>>>>>> text > >>>>>>>>> documents, spreadsheets, presentations, etc. > >>>>>>>>> > >>>>>>>>> Other issues I am aware of: > >>>>>>>>> - We only support password encrypted documents. Certificate > >>>>>>>>> encrypted > >>>>>>>>> documents: not yet. ODF 1.3 also added certificate encryption, so > >>>>>>>>> maybe > >>>>>>>>> that's something we should develop together. > >>>>>>>>> - There are other variations of encryption we still don't > >>>>>>>>> support, eg. > >>>>>>>> the > >>>>>>>>> "Extensible" encryption, the "RC4 CryptoAPI" encryption, "XOR > >>>>>>>> obfuscation", > >>>>>>>>> etc. Apache POI would be a good source for those too. It's > >>>>>>>>> unclear to > >>>>>> me > >>>>>>>>> how widely those are used, and whether they are worth > >>>>>>>>> implementing. > >>>>>>>>> - It may need to be rearchitected when we add OOXML writing. > >>>>>>>>> - A lot of other required cleanups to our code were > >>>>>>>>> discovered, will > >>>>>>>>> discuss those separately. > >>>>>>>>> > >>>>>>>>> I've squashed all my work into a single commit, so it can be > >>>>>>>>> easily > >>>>>>>>> cherry-picked to AOO42X and maybe even AOO41X when people are > >>>>>>>>> happy > >>>>>> with > >>>>>>>> it. > >>>>>>>>> Regards > >>>>>>>>> Damjan > >>>>>>>>> >