Author: tilman
Date: Wed Apr  3 14:22:27 2024
New Revision: 1916786

URL: http://svn.apache.org/viewvc?rev=1916786&view=rev
Log:
PDFBOX-5798: use MessageDigest.isEqual() to prevent timing attacks

Modified:
    
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/StandardSecurityHandler.java

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/StandardSecurityHandler.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/StandardSecurityHandler.java?rev=1916786&r1=1916785&r2=1916786&view=diff
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/StandardSecurityHandler.java
 (original)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/StandardSecurityHandler.java
 Wed Apr  3 14:22:27 2024
@@ -607,7 +607,7 @@ public final class StandardSecurityHandl
                 hash = computeHash2A(truncatedOwnerPassword, oValidationSalt, 
user);
             }
 
-            return Arrays.equals(hash, oHash);
+            return MessageDigest.isEqual(hash, oHash);
         }
         else
         {
@@ -980,12 +980,12 @@ public final class StandardSecurityHandl
                                                    length, encryptMetadata);
         if (encRevision == 2)
         {
-            return Arrays.equals(user, passwordBytes);
+            return MessageDigest.isEqual(user, passwordBytes);
         }
         else
         {
             // compare first 16 bytes only
-            return Arrays.equals(Arrays.copyOf(user, 16), 
Arrays.copyOf(passwordBytes, 16));
+            return MessageDigest.isEqual(Arrays.copyOf(user, 16), 
Arrays.copyOf(passwordBytes, 16));
         }
     }
 
@@ -1007,7 +1007,7 @@ public final class StandardSecurityHandl
             hash = computeHash2A(truncatedPassword, uValidationSalt, null);
         }
 
-        return Arrays.equals(hash, uHash);
+        return MessageDigest.isEqual(hash, uHash);
     }
 
     /**


Reply via email to