Author: tilman
Date: Tue Feb 17 20:37:39 2026
New Revision: 1931918

Log:
PDFBOX-5660: optimize, as suggested by Valery Bokov; closes #421

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
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/StandardSecurityHandler.java
  Tue Feb 17 20:37:35 2026        (r1931917)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/StandardSecurityHandler.java
  Tue Feb 17 20:37:39 2026        (r1931918)
@@ -236,34 +236,29 @@ public final class StandardSecurityHandl
         AccessPermission currentAccessPermission;
 
         byte[] encryptedKey;
-        byte[] passwordBytes;
+        byte[] passwordBytes = password.getBytes(passwordCharset);
         boolean isOwnerPassword;
-        if( isOwnerPassword(password.getBytes(passwordCharset), userKey, 
ownerKey,
+        if (isOwnerPassword(passwordBytes, userKey, ownerKey,
                                  dicPermissions, documentIDBytes, dicRevision,
                                  dicLength, encryptMetadata) )
         {
             currentAccessPermission = 
AccessPermission.getOwnerAccessPermission();
             setCurrentAccessPermission(currentAccessPermission);
             
-            if (dicRevision == 6 || dicRevision == 5)
+            if (dicRevision != 5 && dicRevision != 6)
             {
-                passwordBytes = password.getBytes(passwordCharset);
-            }
-            else
-            {
-                passwordBytes = 
getUserPassword(password.getBytes(passwordCharset),
+                passwordBytes = getUserPassword(passwordBytes,
                         ownerKey, dicRevision, dicLength );
             }
             isOwnerPassword = true;
         }
-        else if( isUserPassword(password.getBytes(passwordCharset), userKey, 
ownerKey,
+        else if (isUserPassword(passwordBytes, userKey, ownerKey,
                            dicPermissions, documentIDBytes, dicRevision,
                            dicLength, encryptMetadata) )
         {
             currentAccessPermission = new AccessPermission(dicPermissions);
             currentAccessPermission.setReadOnly();
             setCurrentAccessPermission(currentAccessPermission);
-            passwordBytes = password.getBytes(passwordCharset);
             isOwnerPassword = false;
         }
         else

Reply via email to