diff options
-rw-r--r-- | include/oox/crypto/Standard2007Engine.hxx | 7 | ||||
-rw-r--r-- | oox/source/crypto/DocumentDecryption.cxx | 4 | ||||
-rw-r--r-- | oox/source/crypto/Standard2007Engine.cxx | 8 |
3 files changed, 10 insertions, 9 deletions
diff --git a/include/oox/crypto/Standard2007Engine.hxx b/include/oox/crypto/Standard2007Engine.hxx index b4130539e57c..2ee4a553a918 100644 --- a/include/oox/crypto/Standard2007Engine.hxx +++ b/include/oox/crypto/Standard2007Engine.hxx @@ -52,8 +52,9 @@ const sal_uInt32 VERSION_INFO_AGILE = 0x00040004; const sal_uInt32 SALT_LENGTH = 16; const sal_uInt32 ENCRYPTED_VERIFIER_LENGTH = 16; -const sal_uInt32 ENCRYPTED_RC4_VERIFIER_HASH_LENGTH = 20; -const sal_uInt32 ENCRYPTED_AES_VERIFIER_HASH_LENGTH = 32; +const sal_uInt32 ENCRYPTED_SHA1_VERIFIER_HASH_LENGTH = 20; +const sal_uInt32 ENCRYPTED_SHA256_VERIFIER_HASH_LENGTH = 32; +const sal_uInt32 ENCRYPTED_SHA512_VERIFIER_HASH_LENGTH = 64; struct EncryptionStandardHeader { @@ -75,7 +76,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_AES_VERIFIER_HASH_LENGTH]; // verifier value hash - itself also encrypted + sal_uInt8 encryptedVerifierHash[ENCRYPTED_SHA256_VERIFIER_HASH_LENGTH]; // verifier value hash - itself also encrypted EncryptionVerifierAES(); }; diff --git a/oox/source/crypto/DocumentDecryption.cxx b/oox/source/crypto/DocumentDecryption.cxx index b07c74f89b5f..d60c6b3d45e3 100644 --- a/oox/source/crypto/DocumentDecryption.cxx +++ b/oox/source/crypto/DocumentDecryption.cxx @@ -241,7 +241,7 @@ bool DocumentDecryption::readAgileEncryptionInfo(Reference< XInputStream >& xInp info.cipherAlgorithm == "AES" && info.cipherChaining == "ChainingModeCBC" && info.hashAlgorithm == "SHA1" && - info.hashSize == 20) + info.hashSize == ENCRYPTED_SHA1_VERIFIER_HASH_LENGTH) { return true; } @@ -251,7 +251,7 @@ bool DocumentDecryption::readAgileEncryptionInfo(Reference< XInputStream >& xInp info.cipherAlgorithm == "AES" && info.cipherChaining == "ChainingModeCBC" && info.hashAlgorithm == "SHA512" && - info.hashSize == 64 ) + info.hashSize == ENCRYPTED_SHA512_VERIFIER_HASH_LENGTH ) { return true; } diff --git a/oox/source/crypto/Standard2007Engine.cxx b/oox/source/crypto/Standard2007Engine.cxx index 98b94a173940..2266e44f49d4 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_AES_VERIFIER_HASH_LENGTH, 0); + hash.resize(ENCRYPTED_SHA256_VERIFIER_HASH_LENGTH, 0); - vector<sal_uInt8> encryptedHash(ENCRYPTED_AES_VERIFIER_HASH_LENGTH, 0); + vector<sal_uInt8> encryptedHash(ENCRYPTED_SHA256_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_AES_VERIFIER_HASH_LENGTH); + vector<sal_uInt8> encryptedHash(ENCRYPTED_SHA256_VERIFIER_HASH_LENGTH); std::copy( mInfo.verifier.encryptedVerifierHash, - mInfo.verifier.encryptedVerifierHash + ENCRYPTED_AES_VERIFIER_HASH_LENGTH, + mInfo.verifier.encryptedVerifierHash + ENCRYPTED_SHA256_VERIFIER_HASH_LENGTH, encryptedHash.begin()); vector<sal_uInt8> verifier(encryptedVerifier.size(), 0); |