[jboss-cvs] JBossAS SVN: r84069 - in projects/security/security-jboss-sx/trunk/jbosssx/src/main/java/org/jboss: security and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Feb 10 12:00:00 EST 2009


Author: anil.saldhana at jboss.com
Date: 2009-02-10 12:00:00 -0500 (Tue, 10 Feb 2009)
New Revision: 84069

Modified:
   projects/security/security-jboss-sx/trunk/jbosssx/src/main/java/org/jboss/crypto/JBossSXProvider.java
   projects/security/security-jboss-sx/trunk/jbosssx/src/main/java/org/jboss/security/SecurityActions.java
   projects/security/security-jboss-sx/trunk/jbosssx/src/main/java/org/jboss/security/SimplePrincipal.java
Log:
SECURITY-345: loadtime serial version uid generation to take care of JBAS4.x and 5.x incompatibility

Modified: projects/security/security-jboss-sx/trunk/jbosssx/src/main/java/org/jboss/crypto/JBossSXProvider.java
===================================================================
--- projects/security/security-jboss-sx/trunk/jbosssx/src/main/java/org/jboss/crypto/JBossSXProvider.java	2009-02-10 16:42:37 UTC (rev 84068)
+++ projects/security/security-jboss-sx/trunk/jbosssx/src/main/java/org/jboss/crypto/JBossSXProvider.java	2009-02-10 17:00:00 UTC (rev 84069)
@@ -21,6 +21,9 @@
 */
 package org.jboss.crypto;
 
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+
 /** A Java2 security provider for cryptographic algorithms provided by
  the JBossSX framework.
 
@@ -29,7 +32,7 @@
 */
 public class JBossSXProvider extends java.security.Provider
 { 
-   private static final long serialVersionUID = -2338131128387727845L;
+   private static final long serialVersionUID = suid();
    public static final String PROVIDER_NAME = "JBossSX";
    public static final String PROVIDER_INFO = "JBossSX Provier Version 1.0";
    public static final double PROVIDER_VERSION = 1.0;
@@ -50,5 +53,32 @@
       super.put("MessageDigest.SHA_ReverseInterleave", "org.jboss.crypto.digest.SHAReverseInterleave");
       super.put("Alg.Alias.MessageDigest.SHA-SRP-Reverse", "SHA_ReverseInterleave");
    }
-
-}
+   
+   //https://jira.jboss.org/jira/browse/SECURITY-365
+   private static long suid()
+   {
+      //Load JBossSecurityContext - if exists implies JBAS5.x onwards
+      try
+      { 
+         ClassLoader cl = getContextClassLoader();
+         cl.loadClass("org.jboss.security.plugins.JBossSecurityContext"); 
+         return 1L;
+      }
+      catch(Throwable t)
+      {   
+      } 
+      //Pre-JBAS5.x code
+      return -2338131128387727845L;
+   }
+   
+   private static ClassLoader getContextClassLoader()
+   {
+      return AccessController.doPrivileged(new PrivilegedAction<ClassLoader>()
+      {
+         public ClassLoader run()
+         {
+            return Thread.currentThread().getContextClassLoader();
+         }
+      });
+   } 
+}
\ No newline at end of file

Modified: projects/security/security-jboss-sx/trunk/jbosssx/src/main/java/org/jboss/security/SecurityActions.java
===================================================================
--- projects/security/security-jboss-sx/trunk/jbosssx/src/main/java/org/jboss/security/SecurityActions.java	2009-02-10 16:42:37 UTC (rev 84068)
+++ projects/security/security-jboss-sx/trunk/jbosssx/src/main/java/org/jboss/security/SecurityActions.java	2009-02-10 17:00:00 UTC (rev 84069)
@@ -78,4 +78,15 @@
       }
       return prop;
    }
+   
+   static ClassLoader getContextClassLoader()
+   {
+      return AccessController.doPrivileged(new PrivilegedAction<ClassLoader>()
+      {
+         public ClassLoader run()
+         {
+            return Thread.currentThread().getContextClassLoader();
+         }
+      });
+   }
 }

Modified: projects/security/security-jboss-sx/trunk/jbosssx/src/main/java/org/jboss/security/SimplePrincipal.java
===================================================================
--- projects/security/security-jboss-sx/trunk/jbosssx/src/main/java/org/jboss/security/SimplePrincipal.java	2009-02-10 16:42:37 UTC (rev 84068)
+++ projects/security/security-jboss-sx/trunk/jbosssx/src/main/java/org/jboss/security/SimplePrincipal.java	2009-02-10 17:00:00 UTC (rev 84069)
@@ -33,7 +33,7 @@
  */
 public class SimplePrincipal implements Principal, Serializable
 {
-   private static final long serialVersionUID = 7701951188631723261L;
+   private static final long serialVersionUID = suid();
    private final String name;
 
    public SimplePrincipal(String name)
@@ -76,4 +76,21 @@
    {
       return name;
    }
+   
+   //https://jira.jboss.org/jira/browse/SECURITY-365
+   private static long suid()
+   {
+      //Load JBossSecurityContext - if exists implies JBAS5.x onwards
+      try
+      { 
+         ClassLoader cl = SecurityActions.getContextClassLoader();
+         cl.loadClass("org.jboss.security.plugins.JBossSecurityContext"); 
+         return 1L;
+      }
+      catch(Throwable t)
+      {   
+      } 
+      //Pre-JBAS5.x code
+      return 7701951188631723261L;
+   }
 }
\ No newline at end of file




More information about the jboss-cvs-commits mailing list