From e27f655e9d313f6c0010f4d4e7bd308eacd61292 Mon Sep 17 00:00:00 2001 From: Luke Taylor Date: Fri, 10 Jun 2011 00:01:25 +0100 Subject: [PATCH] SEC-1689: Re-instate crypto as separate library (for use in non-Spring Security apps), as well as packaging with core. --- .../main/groovy/bundlor/BundlorPlugin.groovy | 18 +++++++++++-- core/core.gradle | 26 +++++++++++++------ crypto/crypto.gradle | 12 +++++++++ .../security/crypto/codec/Base64.java | 0 .../security/crypto/codec/Hex.java | 0 .../security/crypto/codec/Utf8.java | 0 .../security/crypto/codec/package-info.java | 0 .../crypto/encrypt/AesBytesEncryptor.java | 0 .../crypto/encrypt/BytesEncryptor.java | 0 .../security/crypto/encrypt/CipherUtils.java | 0 .../security/crypto/encrypt/Encryptors.java | 0 .../encrypt/HexEncodingTextEncryptor.java | 0 .../crypto/encrypt/TextEncryptor.java | 0 .../crypto/keygen/BytesKeyGenerator.java | 0 .../keygen/HexEncodingStringKeyGenerator.java | 0 .../security/crypto/keygen/KeyGenerators.java | 0 .../keygen/SecureRandomBytesKeyGenerator.java | 0 .../crypto/keygen/SharedKeyGenerator.java | 0 .../crypto/keygen/StringKeyGenerator.java | 0 .../security/crypto/password/Digester.java | 0 .../crypto/password/NoOpPasswordEncoder.java | 0 .../crypto/password/PasswordEncoder.java | 0 .../password/StandardPasswordEncoder.java | 0 .../security/crypto/util/EncodingUtils.java | 0 .../security/crypto/codec/Utf8Tests.java | 0 .../crypto/encrypt/EncryptorsTests.java | 0 .../crypto/keygen/KeyGeneratorsTests.java | 0 .../crypto/password/DigesterTests.java | 0 .../StandardPasswordEncoderTests.java | 0 .../crypto/util/EncodingUtilsTests.java | 0 settings.gradle | 3 ++- 31 files changed, 48 insertions(+), 11 deletions(-) create mode 100644 crypto/crypto.gradle rename {core => crypto}/src/main/java/org/springframework/security/crypto/codec/Base64.java (100%) rename {core => crypto}/src/main/java/org/springframework/security/crypto/codec/Hex.java (100%) rename {core => crypto}/src/main/java/org/springframework/security/crypto/codec/Utf8.java (100%) rename {core => crypto}/src/main/java/org/springframework/security/crypto/codec/package-info.java (100%) rename {core => crypto}/src/main/java/org/springframework/security/crypto/encrypt/AesBytesEncryptor.java (100%) rename {core => crypto}/src/main/java/org/springframework/security/crypto/encrypt/BytesEncryptor.java (100%) rename {core => crypto}/src/main/java/org/springframework/security/crypto/encrypt/CipherUtils.java (100%) rename {core => crypto}/src/main/java/org/springframework/security/crypto/encrypt/Encryptors.java (100%) rename {core => crypto}/src/main/java/org/springframework/security/crypto/encrypt/HexEncodingTextEncryptor.java (100%) rename {core => crypto}/src/main/java/org/springframework/security/crypto/encrypt/TextEncryptor.java (100%) rename {core => crypto}/src/main/java/org/springframework/security/crypto/keygen/BytesKeyGenerator.java (100%) rename {core => crypto}/src/main/java/org/springframework/security/crypto/keygen/HexEncodingStringKeyGenerator.java (100%) rename {core => crypto}/src/main/java/org/springframework/security/crypto/keygen/KeyGenerators.java (100%) rename {core => crypto}/src/main/java/org/springframework/security/crypto/keygen/SecureRandomBytesKeyGenerator.java (100%) rename {core => crypto}/src/main/java/org/springframework/security/crypto/keygen/SharedKeyGenerator.java (100%) rename {core => crypto}/src/main/java/org/springframework/security/crypto/keygen/StringKeyGenerator.java (100%) rename {core => crypto}/src/main/java/org/springframework/security/crypto/password/Digester.java (100%) rename {core => crypto}/src/main/java/org/springframework/security/crypto/password/NoOpPasswordEncoder.java (100%) rename {core => crypto}/src/main/java/org/springframework/security/crypto/password/PasswordEncoder.java (100%) rename {core => crypto}/src/main/java/org/springframework/security/crypto/password/StandardPasswordEncoder.java (100%) rename {core => crypto}/src/main/java/org/springframework/security/crypto/util/EncodingUtils.java (100%) rename {core => crypto}/src/test/java/org/springframework/security/crypto/codec/Utf8Tests.java (100%) rename {core => crypto}/src/test/java/org/springframework/security/crypto/encrypt/EncryptorsTests.java (100%) rename {core => crypto}/src/test/java/org/springframework/security/crypto/keygen/KeyGeneratorsTests.java (100%) rename {core => crypto}/src/test/java/org/springframework/security/crypto/password/DigesterTests.java (100%) rename {core => crypto}/src/test/java/org/springframework/security/crypto/password/StandardPasswordEncoderTests.java (100%) rename {core => crypto}/src/test/java/org/springframework/security/crypto/util/EncodingUtilsTests.java (100%) diff --git a/buildSrc/src/main/groovy/bundlor/BundlorPlugin.groovy b/buildSrc/src/main/groovy/bundlor/BundlorPlugin.groovy index c900280a0b..b3b389163c 100644 --- a/buildSrc/src/main/groovy/bundlor/BundlorPlugin.groovy +++ b/buildSrc/src/main/groovy/bundlor/BundlorPlugin.groovy @@ -45,6 +45,7 @@ class BundlorPlugin implements Plugin { 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) diff --git a/core/core.gradle b/core/core.gradle index 0812d22d00..152970b978 100644 --- a/core/core.gradle +++ b/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' - } } diff --git a/crypto/crypto.gradle b/crypto/crypto.gradle new file mode 100644 index 0000000000..6b096821a7 --- /dev/null +++ b/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' + } +} diff --git a/core/src/main/java/org/springframework/security/crypto/codec/Base64.java b/crypto/src/main/java/org/springframework/security/crypto/codec/Base64.java similarity index 100% rename from core/src/main/java/org/springframework/security/crypto/codec/Base64.java rename to crypto/src/main/java/org/springframework/security/crypto/codec/Base64.java diff --git a/core/src/main/java/org/springframework/security/crypto/codec/Hex.java b/crypto/src/main/java/org/springframework/security/crypto/codec/Hex.java similarity index 100% rename from core/src/main/java/org/springframework/security/crypto/codec/Hex.java rename to crypto/src/main/java/org/springframework/security/crypto/codec/Hex.java diff --git a/core/src/main/java/org/springframework/security/crypto/codec/Utf8.java b/crypto/src/main/java/org/springframework/security/crypto/codec/Utf8.java similarity index 100% rename from core/src/main/java/org/springframework/security/crypto/codec/Utf8.java rename to crypto/src/main/java/org/springframework/security/crypto/codec/Utf8.java diff --git a/core/src/main/java/org/springframework/security/crypto/codec/package-info.java b/crypto/src/main/java/org/springframework/security/crypto/codec/package-info.java similarity index 100% rename from core/src/main/java/org/springframework/security/crypto/codec/package-info.java rename to crypto/src/main/java/org/springframework/security/crypto/codec/package-info.java diff --git a/core/src/main/java/org/springframework/security/crypto/encrypt/AesBytesEncryptor.java b/crypto/src/main/java/org/springframework/security/crypto/encrypt/AesBytesEncryptor.java similarity index 100% rename from core/src/main/java/org/springframework/security/crypto/encrypt/AesBytesEncryptor.java rename to crypto/src/main/java/org/springframework/security/crypto/encrypt/AesBytesEncryptor.java diff --git a/core/src/main/java/org/springframework/security/crypto/encrypt/BytesEncryptor.java b/crypto/src/main/java/org/springframework/security/crypto/encrypt/BytesEncryptor.java similarity index 100% rename from core/src/main/java/org/springframework/security/crypto/encrypt/BytesEncryptor.java rename to crypto/src/main/java/org/springframework/security/crypto/encrypt/BytesEncryptor.java diff --git a/core/src/main/java/org/springframework/security/crypto/encrypt/CipherUtils.java b/crypto/src/main/java/org/springframework/security/crypto/encrypt/CipherUtils.java similarity index 100% rename from core/src/main/java/org/springframework/security/crypto/encrypt/CipherUtils.java rename to crypto/src/main/java/org/springframework/security/crypto/encrypt/CipherUtils.java diff --git a/core/src/main/java/org/springframework/security/crypto/encrypt/Encryptors.java b/crypto/src/main/java/org/springframework/security/crypto/encrypt/Encryptors.java similarity index 100% rename from core/src/main/java/org/springframework/security/crypto/encrypt/Encryptors.java rename to crypto/src/main/java/org/springframework/security/crypto/encrypt/Encryptors.java diff --git a/core/src/main/java/org/springframework/security/crypto/encrypt/HexEncodingTextEncryptor.java b/crypto/src/main/java/org/springframework/security/crypto/encrypt/HexEncodingTextEncryptor.java similarity index 100% rename from core/src/main/java/org/springframework/security/crypto/encrypt/HexEncodingTextEncryptor.java rename to crypto/src/main/java/org/springframework/security/crypto/encrypt/HexEncodingTextEncryptor.java diff --git a/core/src/main/java/org/springframework/security/crypto/encrypt/TextEncryptor.java b/crypto/src/main/java/org/springframework/security/crypto/encrypt/TextEncryptor.java similarity index 100% rename from core/src/main/java/org/springframework/security/crypto/encrypt/TextEncryptor.java rename to crypto/src/main/java/org/springframework/security/crypto/encrypt/TextEncryptor.java diff --git a/core/src/main/java/org/springframework/security/crypto/keygen/BytesKeyGenerator.java b/crypto/src/main/java/org/springframework/security/crypto/keygen/BytesKeyGenerator.java similarity index 100% rename from core/src/main/java/org/springframework/security/crypto/keygen/BytesKeyGenerator.java rename to crypto/src/main/java/org/springframework/security/crypto/keygen/BytesKeyGenerator.java diff --git a/core/src/main/java/org/springframework/security/crypto/keygen/HexEncodingStringKeyGenerator.java b/crypto/src/main/java/org/springframework/security/crypto/keygen/HexEncodingStringKeyGenerator.java similarity index 100% rename from core/src/main/java/org/springframework/security/crypto/keygen/HexEncodingStringKeyGenerator.java rename to crypto/src/main/java/org/springframework/security/crypto/keygen/HexEncodingStringKeyGenerator.java diff --git a/core/src/main/java/org/springframework/security/crypto/keygen/KeyGenerators.java b/crypto/src/main/java/org/springframework/security/crypto/keygen/KeyGenerators.java similarity index 100% rename from core/src/main/java/org/springframework/security/crypto/keygen/KeyGenerators.java rename to crypto/src/main/java/org/springframework/security/crypto/keygen/KeyGenerators.java diff --git a/core/src/main/java/org/springframework/security/crypto/keygen/SecureRandomBytesKeyGenerator.java b/crypto/src/main/java/org/springframework/security/crypto/keygen/SecureRandomBytesKeyGenerator.java similarity index 100% rename from core/src/main/java/org/springframework/security/crypto/keygen/SecureRandomBytesKeyGenerator.java rename to crypto/src/main/java/org/springframework/security/crypto/keygen/SecureRandomBytesKeyGenerator.java diff --git a/core/src/main/java/org/springframework/security/crypto/keygen/SharedKeyGenerator.java b/crypto/src/main/java/org/springframework/security/crypto/keygen/SharedKeyGenerator.java similarity index 100% rename from core/src/main/java/org/springframework/security/crypto/keygen/SharedKeyGenerator.java rename to crypto/src/main/java/org/springframework/security/crypto/keygen/SharedKeyGenerator.java diff --git a/core/src/main/java/org/springframework/security/crypto/keygen/StringKeyGenerator.java b/crypto/src/main/java/org/springframework/security/crypto/keygen/StringKeyGenerator.java similarity index 100% rename from core/src/main/java/org/springframework/security/crypto/keygen/StringKeyGenerator.java rename to crypto/src/main/java/org/springframework/security/crypto/keygen/StringKeyGenerator.java diff --git a/core/src/main/java/org/springframework/security/crypto/password/Digester.java b/crypto/src/main/java/org/springframework/security/crypto/password/Digester.java similarity index 100% rename from core/src/main/java/org/springframework/security/crypto/password/Digester.java rename to crypto/src/main/java/org/springframework/security/crypto/password/Digester.java diff --git a/core/src/main/java/org/springframework/security/crypto/password/NoOpPasswordEncoder.java b/crypto/src/main/java/org/springframework/security/crypto/password/NoOpPasswordEncoder.java similarity index 100% rename from core/src/main/java/org/springframework/security/crypto/password/NoOpPasswordEncoder.java rename to crypto/src/main/java/org/springframework/security/crypto/password/NoOpPasswordEncoder.java diff --git a/core/src/main/java/org/springframework/security/crypto/password/PasswordEncoder.java b/crypto/src/main/java/org/springframework/security/crypto/password/PasswordEncoder.java similarity index 100% rename from core/src/main/java/org/springframework/security/crypto/password/PasswordEncoder.java rename to crypto/src/main/java/org/springframework/security/crypto/password/PasswordEncoder.java diff --git a/core/src/main/java/org/springframework/security/crypto/password/StandardPasswordEncoder.java b/crypto/src/main/java/org/springframework/security/crypto/password/StandardPasswordEncoder.java similarity index 100% rename from core/src/main/java/org/springframework/security/crypto/password/StandardPasswordEncoder.java rename to crypto/src/main/java/org/springframework/security/crypto/password/StandardPasswordEncoder.java diff --git a/core/src/main/java/org/springframework/security/crypto/util/EncodingUtils.java b/crypto/src/main/java/org/springframework/security/crypto/util/EncodingUtils.java similarity index 100% rename from core/src/main/java/org/springframework/security/crypto/util/EncodingUtils.java rename to crypto/src/main/java/org/springframework/security/crypto/util/EncodingUtils.java diff --git a/core/src/test/java/org/springframework/security/crypto/codec/Utf8Tests.java b/crypto/src/test/java/org/springframework/security/crypto/codec/Utf8Tests.java similarity index 100% rename from core/src/test/java/org/springframework/security/crypto/codec/Utf8Tests.java rename to crypto/src/test/java/org/springframework/security/crypto/codec/Utf8Tests.java diff --git a/core/src/test/java/org/springframework/security/crypto/encrypt/EncryptorsTests.java b/crypto/src/test/java/org/springframework/security/crypto/encrypt/EncryptorsTests.java similarity index 100% rename from core/src/test/java/org/springframework/security/crypto/encrypt/EncryptorsTests.java rename to crypto/src/test/java/org/springframework/security/crypto/encrypt/EncryptorsTests.java diff --git a/core/src/test/java/org/springframework/security/crypto/keygen/KeyGeneratorsTests.java b/crypto/src/test/java/org/springframework/security/crypto/keygen/KeyGeneratorsTests.java similarity index 100% rename from core/src/test/java/org/springframework/security/crypto/keygen/KeyGeneratorsTests.java rename to crypto/src/test/java/org/springframework/security/crypto/keygen/KeyGeneratorsTests.java diff --git a/core/src/test/java/org/springframework/security/crypto/password/DigesterTests.java b/crypto/src/test/java/org/springframework/security/crypto/password/DigesterTests.java similarity index 100% rename from core/src/test/java/org/springframework/security/crypto/password/DigesterTests.java rename to crypto/src/test/java/org/springframework/security/crypto/password/DigesterTests.java diff --git a/core/src/test/java/org/springframework/security/crypto/password/StandardPasswordEncoderTests.java b/crypto/src/test/java/org/springframework/security/crypto/password/StandardPasswordEncoderTests.java similarity index 100% rename from core/src/test/java/org/springframework/security/crypto/password/StandardPasswordEncoderTests.java rename to crypto/src/test/java/org/springframework/security/crypto/password/StandardPasswordEncoderTests.java diff --git a/core/src/test/java/org/springframework/security/crypto/util/EncodingUtilsTests.java b/crypto/src/test/java/org/springframework/security/crypto/util/EncodingUtilsTests.java similarity index 100% rename from core/src/test/java/org/springframework/security/crypto/util/EncodingUtilsTests.java rename to crypto/src/test/java/org/springframework/security/crypto/util/EncodingUtilsTests.java diff --git a/settings.gradle b/settings.gradle index 971618fcbe..41e71cbfca 100644 --- a/settings.gradle +++ b/settings.gradle @@ -8,7 +8,8 @@ def String[] modules = [ 'cas', 'openid', 'taglibs', - 'aspects' + 'aspects', + 'crypto' ] def String[] samples = [