]> git.parisson.com Git - pdf.js.git/commitdiff
Suppress metadata decryption
authorYury Delendik <ydelendik@mozilla.com>
Sun, 27 May 2012 23:03:04 +0000 (18:03 -0500)
committerYury Delendik <ydelendik@mozilla.com>
Sun, 27 May 2012 23:03:04 +0000 (18:03 -0500)
src/crypto.js
src/obj.js

index c86551f368f40be72174e1912d668e23bc552f42..cd0cf74e4d7443d990543f693aa81f7eebb249a6 100644 (file)
@@ -546,8 +546,10 @@ var CipherTransformFactory = (function CipherTransformFactoryClosure() {
     var userPassword = stringToBytes(dict.get('U'));
     var flags = dict.get('P');
     var revision = dict.get('R');
-    var encryptMetadata =
+    var encryptMetadata = algorithm == 4 &&  // meaningful when V is 4
       dict.get('EncryptMetadata') !== false; // makes true as default value
+    this.encryptMetadata = encryptMetadata;
+
     var fileIdBytes = stringToBytes(fileId);
     var passwordBytes;
     if (password)
index acc9e1284818ab79e29f54ede0e8acd4fa37e4cc..3b7eb563bf337c46f4072d1fc01c7398e461ef4a 100644 (file)
@@ -132,7 +132,14 @@ var Catalog = (function CatalogClosure() {
 
   Catalog.prototype = {
     get metadata() {
-      var stream = this.catDict.get('Metadata');
+      var streamRef = this.catDict.getRaw('Metadata');
+      if (!isRef(streamRef))
+        return shadow(this, 'metadata', null);
+
+      var encryptMetadata = !this.xref.encrypt ? false :
+        this.xref.encrypt.encryptMetadata;
+
+      var stream = this.xref.fetch(streamRef, !encryptMetadata);
       var metadata;
       if (stream && isDict(stream.dict)) {
         var type = stream.dict.get('Type');