Browse Source

SEC-1689: Re-instate crypto as separate library (for use in non-Spring Security apps), as well as packaging with core.

Luke Taylor 14 năm trước cách đây
mục cha
commit
e27f655e9d
31 tập tin đã thay đổi với 48 bổ sung11 xóa
  1. 16 2
      buildSrc/src/main/groovy/bundlor/BundlorPlugin.groovy
  2. 18 8
      core/core.gradle
  3. 12 0
      crypto/crypto.gradle
  4. 0 0
      crypto/src/main/java/org/springframework/security/crypto/codec/Base64.java
  5. 0 0
      crypto/src/main/java/org/springframework/security/crypto/codec/Hex.java
  6. 0 0
      crypto/src/main/java/org/springframework/security/crypto/codec/Utf8.java
  7. 0 0
      crypto/src/main/java/org/springframework/security/crypto/codec/package-info.java
  8. 0 0
      crypto/src/main/java/org/springframework/security/crypto/encrypt/AesBytesEncryptor.java
  9. 0 0
      crypto/src/main/java/org/springframework/security/crypto/encrypt/BytesEncryptor.java
  10. 0 0
      crypto/src/main/java/org/springframework/security/crypto/encrypt/CipherUtils.java
  11. 0 0
      crypto/src/main/java/org/springframework/security/crypto/encrypt/Encryptors.java
  12. 0 0
      crypto/src/main/java/org/springframework/security/crypto/encrypt/HexEncodingTextEncryptor.java
  13. 0 0
      crypto/src/main/java/org/springframework/security/crypto/encrypt/TextEncryptor.java
  14. 0 0
      crypto/src/main/java/org/springframework/security/crypto/keygen/BytesKeyGenerator.java
  15. 0 0
      crypto/src/main/java/org/springframework/security/crypto/keygen/HexEncodingStringKeyGenerator.java
  16. 0 0
      crypto/src/main/java/org/springframework/security/crypto/keygen/KeyGenerators.java
  17. 0 0
      crypto/src/main/java/org/springframework/security/crypto/keygen/SecureRandomBytesKeyGenerator.java
  18. 0 0
      crypto/src/main/java/org/springframework/security/crypto/keygen/SharedKeyGenerator.java
  19. 0 0
      crypto/src/main/java/org/springframework/security/crypto/keygen/StringKeyGenerator.java
  20. 0 0
      crypto/src/main/java/org/springframework/security/crypto/password/Digester.java
  21. 0 0
      crypto/src/main/java/org/springframework/security/crypto/password/NoOpPasswordEncoder.java
  22. 0 0
      crypto/src/main/java/org/springframework/security/crypto/password/PasswordEncoder.java
  23. 0 0
      crypto/src/main/java/org/springframework/security/crypto/password/StandardPasswordEncoder.java
  24. 0 0
      crypto/src/main/java/org/springframework/security/crypto/util/EncodingUtils.java
  25. 0 0
      crypto/src/test/java/org/springframework/security/crypto/codec/Utf8Tests.java
  26. 0 0
      crypto/src/test/java/org/springframework/security/crypto/encrypt/EncryptorsTests.java
  27. 0 0
      crypto/src/test/java/org/springframework/security/crypto/keygen/KeyGeneratorsTests.java
  28. 0 0
      crypto/src/test/java/org/springframework/security/crypto/password/DigesterTests.java
  29. 0 0
      crypto/src/test/java/org/springframework/security/crypto/password/StandardPasswordEncoderTests.java
  30. 0 0
      crypto/src/test/java/org/springframework/security/crypto/util/EncodingUtilsTests.java
  31. 2 1
      settings.gradle

+ 16 - 2
buildSrc/src/main/groovy/bundlor/BundlorPlugin.groovy

@@ -45,6 +45,7 @@ class BundlorPlugin implements Plugin<Project> {
 
 public class Bundlor extends DefaultTask {
     @InputFile
+    @Optional
     File manifestTemplate
 
     @OutputDirectory
@@ -69,13 +70,26 @@ public class Bundlor extends DefaultTask {
 
     Bundlor() {
         manifestTemplate = new File(project.projectDir, 'template.mf')
+
+        if (!manifestTemplate.exists()) {
+            logger.info("No bundlor template for project " + project.name)
+            manifestTemplate = null
+        }
+
         inputPaths = project.files(project.sourceSets.main.classesDir)
-        project.jar.manifest.from manifest
-        project.jar.inputs.files manifest
+
+        if (manifestTemplate != null) {
+            project.jar.manifest.from manifest
+            project.jar.inputs.files manifest
+        }
     }
 
     @TaskAction
     void createManifest() {
+        if (manifestTemplate == null) {
+            return;
+        }
+
         logging.captureStandardOutput(LogLevel.INFO)
 
         project.mkdir(bundlorDir)

+ 18 - 8
core/core.gradle

@@ -1,5 +1,9 @@
 // Core build file
 
+// We don't define a module dependency on crypto to avoid creating a transitive dependency
+def cryptoProject = project(':spring-security-crypto')
+def cryptoClasses = cryptoProject.sourceSets.main.classes
+
 dependencies {
     compile 'aopalliance:aopalliance:1.0',
             "net.sf.ehcache:ehcache:$ehcacheVersion",
@@ -20,16 +24,22 @@ dependencies {
                 "cglib:cglib-nodep:$cglibVersion"
 }
 
-// jdkVersion = System.properties['java.version']
-// isJdk6 = jdkVersion >= '1.6'
-int maxAESKeySize = javax.crypto.Cipher.getMaxAllowedKeyLength('AES')
+compileJava.dependsOn cryptoProject.compileJava
+classes.dependsOn cryptoProject.classes
+
+classes.doLast {
+    copy {
+        from cryptoClasses
+        into sourceSets.main.classesDir
+    }
+}
+
+sourceSets.main.compileClasspath += cryptoClasses
+sourceSets.test.compileClasspath += cryptoClasses
+
+sourceJar.from cryptoProject.sourceSets.main.java
 
 test {
     systemProperties['springSecurityVersion'] = version
     systemProperties['springVersion'] = springVersion
-
-    if (maxAESKeySize < 256) {
-        logger.warn("AES keysize limited to $maxAESKeySize, skipping EncryptorsTests")
-        exclude '**/EncryptorsTests.class'
-    }
 }

+ 12 - 0
crypto/crypto.gradle

@@ -0,0 +1,12 @@
+// crypto module build file
+
+// jdkVersion = System.properties['java.version']
+// isJdk6 = jdkVersion >= '1.6'
+int maxAESKeySize = javax.crypto.Cipher.getMaxAllowedKeyLength('AES')
+
+test {
+    if (maxAESKeySize < 256) {
+        println "AES keysize limited to $maxAESKeySize, skipping EncryptorsTests"
+        exclude '**/EncryptorsTests.class'
+    }
+}

+ 0 - 0
core/src/main/java/org/springframework/security/crypto/codec/Base64.java → crypto/src/main/java/org/springframework/security/crypto/codec/Base64.java


+ 0 - 0
core/src/main/java/org/springframework/security/crypto/codec/Hex.java → crypto/src/main/java/org/springframework/security/crypto/codec/Hex.java


+ 0 - 0
core/src/main/java/org/springframework/security/crypto/codec/Utf8.java → crypto/src/main/java/org/springframework/security/crypto/codec/Utf8.java


+ 0 - 0
core/src/main/java/org/springframework/security/crypto/codec/package-info.java → crypto/src/main/java/org/springframework/security/crypto/codec/package-info.java


+ 0 - 0
core/src/main/java/org/springframework/security/crypto/encrypt/AesBytesEncryptor.java → crypto/src/main/java/org/springframework/security/crypto/encrypt/AesBytesEncryptor.java


+ 0 - 0
core/src/main/java/org/springframework/security/crypto/encrypt/BytesEncryptor.java → crypto/src/main/java/org/springframework/security/crypto/encrypt/BytesEncryptor.java


+ 0 - 0
core/src/main/java/org/springframework/security/crypto/encrypt/CipherUtils.java → crypto/src/main/java/org/springframework/security/crypto/encrypt/CipherUtils.java


+ 0 - 0
core/src/main/java/org/springframework/security/crypto/encrypt/Encryptors.java → crypto/src/main/java/org/springframework/security/crypto/encrypt/Encryptors.java


+ 0 - 0
core/src/main/java/org/springframework/security/crypto/encrypt/HexEncodingTextEncryptor.java → crypto/src/main/java/org/springframework/security/crypto/encrypt/HexEncodingTextEncryptor.java


+ 0 - 0
core/src/main/java/org/springframework/security/crypto/encrypt/TextEncryptor.java → crypto/src/main/java/org/springframework/security/crypto/encrypt/TextEncryptor.java


+ 0 - 0
core/src/main/java/org/springframework/security/crypto/keygen/BytesKeyGenerator.java → crypto/src/main/java/org/springframework/security/crypto/keygen/BytesKeyGenerator.java


+ 0 - 0
core/src/main/java/org/springframework/security/crypto/keygen/HexEncodingStringKeyGenerator.java → crypto/src/main/java/org/springframework/security/crypto/keygen/HexEncodingStringKeyGenerator.java


+ 0 - 0
core/src/main/java/org/springframework/security/crypto/keygen/KeyGenerators.java → crypto/src/main/java/org/springframework/security/crypto/keygen/KeyGenerators.java


+ 0 - 0
core/src/main/java/org/springframework/security/crypto/keygen/SecureRandomBytesKeyGenerator.java → crypto/src/main/java/org/springframework/security/crypto/keygen/SecureRandomBytesKeyGenerator.java


+ 0 - 0
core/src/main/java/org/springframework/security/crypto/keygen/SharedKeyGenerator.java → crypto/src/main/java/org/springframework/security/crypto/keygen/SharedKeyGenerator.java


+ 0 - 0
core/src/main/java/org/springframework/security/crypto/keygen/StringKeyGenerator.java → crypto/src/main/java/org/springframework/security/crypto/keygen/StringKeyGenerator.java


+ 0 - 0
core/src/main/java/org/springframework/security/crypto/password/Digester.java → crypto/src/main/java/org/springframework/security/crypto/password/Digester.java


+ 0 - 0
core/src/main/java/org/springframework/security/crypto/password/NoOpPasswordEncoder.java → crypto/src/main/java/org/springframework/security/crypto/password/NoOpPasswordEncoder.java


+ 0 - 0
core/src/main/java/org/springframework/security/crypto/password/PasswordEncoder.java → crypto/src/main/java/org/springframework/security/crypto/password/PasswordEncoder.java


+ 0 - 0
core/src/main/java/org/springframework/security/crypto/password/StandardPasswordEncoder.java → crypto/src/main/java/org/springframework/security/crypto/password/StandardPasswordEncoder.java


+ 0 - 0
core/src/main/java/org/springframework/security/crypto/util/EncodingUtils.java → crypto/src/main/java/org/springframework/security/crypto/util/EncodingUtils.java


+ 0 - 0
core/src/test/java/org/springframework/security/crypto/codec/Utf8Tests.java → crypto/src/test/java/org/springframework/security/crypto/codec/Utf8Tests.java


+ 0 - 0
core/src/test/java/org/springframework/security/crypto/encrypt/EncryptorsTests.java → crypto/src/test/java/org/springframework/security/crypto/encrypt/EncryptorsTests.java


+ 0 - 0
core/src/test/java/org/springframework/security/crypto/keygen/KeyGeneratorsTests.java → crypto/src/test/java/org/springframework/security/crypto/keygen/KeyGeneratorsTests.java


+ 0 - 0
core/src/test/java/org/springframework/security/crypto/password/DigesterTests.java → crypto/src/test/java/org/springframework/security/crypto/password/DigesterTests.java


+ 0 - 0
core/src/test/java/org/springframework/security/crypto/password/StandardPasswordEncoderTests.java → crypto/src/test/java/org/springframework/security/crypto/password/StandardPasswordEncoderTests.java


+ 0 - 0
core/src/test/java/org/springframework/security/crypto/util/EncodingUtilsTests.java → crypto/src/test/java/org/springframework/security/crypto/util/EncodingUtilsTests.java


+ 2 - 1
settings.gradle

@@ -8,7 +8,8 @@ def String[] modules = [
     'cas',
     'openid',
     'taglibs',
-    'aspects'
+    'aspects',
+    'crypto'
 ]
 
 def String[] samples = [