upgrade to xpdf 1.01.
[swftools.git] / pdf2swf / xpdf / Decrypt.h
index 3ea4374..52afb2f 100644 (file)
@@ -2,7 +2,7 @@
 //
 // Decrypt.h
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
@@ -24,7 +24,7 @@ class Decrypt {
 public:
 
   // Initialize the decryptor object.
-  Decrypt(Guchar *fileKey, int objNum, int objGen);
+  Decrypt(Guchar *fileKey, int keyLength, int objNum, int objGen);
 
   // Reset decryption.
   void reset();
@@ -32,16 +32,26 @@ public:
   // Decrypt one byte.
   Guchar decryptByte(Guchar c);
 
-  // Generate a file key.  The <fileKey> buffer must have space for
-  // at least 16 bytes.  Checks user key and returns gTrue if okay.
-  // <userPassword> may be NULL.
-  static GBool makeFileKey(GString *ownerKey, GString *userKey,
+  // Generate a file key.  The <fileKey> buffer must have space for at
+  // least 16 bytes.  Checks <ownerPassword> and then <userPassword>
+  // and returns true if either is correct.  Sets <ownerPasswordOk> if
+  // the owner password was correct.  Either or both of the passwords
+  // may be NULL, which is treated as an empty string.
+  static GBool makeFileKey(int encVersion, int encRevision, int keyLength,
+                          GString *ownerKey, GString *userKey,
                           int permissions, GString *fileID,
-                          GString *userPassword, Guchar *fileKey);
+                          GString *ownerPassword, GString *userPassword,
+                          Guchar *fileKey, GBool *ownerPasswordOk);
 
 private:
 
-  Guchar objKey[16];
+  static GBool makeFileKey2(int encVersion, int encRevision, int keyLength,
+                           GString *ownerKey, GString *userKey,
+                           int permissions, GString *fileID,
+                           GString *userPassword, Guchar *fileKey);
+
+  int objKeyLength;
+  Guchar objKey[21];
   Guchar state[256];
   Guchar x, y;
 };