[Libreoffice-commits] core.git: include/oox oox/source

Caolán McNamara caolanm at redhat.com
Thu Oct 20 12:42:06 UTC 2016


 include/oox/crypto/Standard2007Engine.hxx |    5 +++--
 oox/source/crypto/Standard2007Engine.cxx  |    8 ++++----
 2 files changed, 7 insertions(+), 6 deletions(-)

New commits:
commit 491884350ce74f36044b3348bd66356ad1c234af
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Thu Oct 20 13:41:03 2016 +0100

    hash len is 20 for xls cryptoapi configuration
    
    Change-Id: I6e06b8578959b8147043179db57e875b1d98d57d

diff --git a/include/oox/crypto/Standard2007Engine.hxx b/include/oox/crypto/Standard2007Engine.hxx
index 39ce8946..b413053 100644
--- a/include/oox/crypto/Standard2007Engine.hxx
+++ b/include/oox/crypto/Standard2007Engine.hxx
@@ -52,7 +52,8 @@ const sal_uInt32 VERSION_INFO_AGILE         = 0x00040004;
 
 const sal_uInt32 SALT_LENGTH                    = 16;
 const sal_uInt32 ENCRYPTED_VERIFIER_LENGTH      = 16;
-const sal_uInt32 ENCRYPTED_VERIFIER_HASH_LENGTH = 32;
+const sal_uInt32 ENCRYPTED_RC4_VERIFIER_HASH_LENGTH = 20;
+const sal_uInt32 ENCRYPTED_AES_VERIFIER_HASH_LENGTH = 32;
 
 struct EncryptionStandardHeader
 {
@@ -74,7 +75,7 @@ struct EncryptionVerifierAES
     sal_uInt8  salt[SALT_LENGTH];                                       // random generated salt value
     sal_uInt8  encryptedVerifier[ENCRYPTED_VERIFIER_LENGTH];            // randomly generated verifier value
     sal_uInt32 encryptedVerifierHashSize;                               // actually written hash size - depends on algorithm
-    sal_uInt8  encryptedVerifierHash[ENCRYPTED_VERIFIER_HASH_LENGTH];   // verifier value hash - itself also encrypted
+    sal_uInt8  encryptedVerifierHash[ENCRYPTED_AES_VERIFIER_HASH_LENGTH];   // verifier value hash - itself also encrypted
 
     EncryptionVerifierAES();
 };
diff --git a/oox/source/crypto/Standard2007Engine.cxx b/oox/source/crypto/Standard2007Engine.cxx
index 34fa226..98b94a1 100644
--- a/oox/source/crypto/Standard2007Engine.cxx
+++ b/oox/source/crypto/Standard2007Engine.cxx
@@ -90,9 +90,9 @@ bool Standard2007Engine::generateVerifier()
     vector<sal_uInt8> hash(RTL_DIGEST_LENGTH_SHA1, 0);
     mInfo.verifier.encryptedVerifierHashSize = RTL_DIGEST_LENGTH_SHA1;
     Digest::sha1(hash, verifier);
-    hash.resize(ENCRYPTED_VERIFIER_HASH_LENGTH, 0);
+    hash.resize(ENCRYPTED_AES_VERIFIER_HASH_LENGTH, 0);
 
-    vector<sal_uInt8> encryptedHash(ENCRYPTED_VERIFIER_HASH_LENGTH, 0);
+    vector<sal_uInt8> encryptedHash(ENCRYPTED_AES_VERIFIER_HASH_LENGTH, 0);
 
     Encrypt aEncryptorHash(mKey, iv, Crypto::AES_128_ECB);
     aEncryptorHash.update(encryptedHash, hash, hash.size());
@@ -162,10 +162,10 @@ bool Standard2007Engine::generateEncryptionKey(const OUString& password)
         mInfo.verifier.encryptedVerifier + ENCRYPTED_VERIFIER_LENGTH,
         encryptedVerifier.begin());
 
-    vector<sal_uInt8> encryptedHash(ENCRYPTED_VERIFIER_HASH_LENGTH);
+    vector<sal_uInt8> encryptedHash(ENCRYPTED_AES_VERIFIER_HASH_LENGTH);
     std::copy(
         mInfo.verifier.encryptedVerifierHash,
-        mInfo.verifier.encryptedVerifierHash + ENCRYPTED_VERIFIER_HASH_LENGTH,
+        mInfo.verifier.encryptedVerifierHash + ENCRYPTED_AES_VERIFIER_HASH_LENGTH,
         encryptedHash.begin());
 
     vector<sal_uInt8> verifier(encryptedVerifier.size(), 0);


More information about the Libreoffice-commits mailing list