[utilities COMMIT] in /java-support/trunk: pom.xml src/main/java/net/shibboleth/utilities/java/support/security/DataS...

noreply at shibboleth.net noreply at shibboleth.net
Thu Sep 5 16:12:28 EDT 2013


Author: scantor
Date: Thu Sep  5 16:12:28 2013
New Revision: 442

URL: http://svn.shibboleth.net/view/utilities?rev=442&view=rev
Log:
Rebase DataSealer on AES-GCM using BC-native API.

Modified:
    java-support/trunk/pom.xml
    java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/security/DataSealer.java
    java-support/trunk/src/test/java/net/shibboleth/utilities/java/support/security/DataSealerTest.java

Modified: java-support/trunk/pom.xml
URL: http://svn.shibboleth.net/view/utilities/java-support/trunk/pom.xml?rev=442&r1=441&r2=442&view=diff
==============================================================================
--- java-support/trunk/pom.xml (original)
+++ java-support/trunk/pom.xml Thu Sep  5 16:12:28 2013
@@ -70,6 +70,12 @@
             <optional>true</optional>
         </dependency>
 
+        <dependency>
+            <groupId>org.bouncycastle</groupId>
+            <artifactId>bcprov-jdk15</artifactId>
+            <optional>true</optional>
+        </dependency>
+
         <!-- Provided Dependencies -->
         <dependency>
             <groupId>ch.qos.logback</groupId>

Modified: java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/security/DataSealer.java
URL: http://svn.shibboleth.net/view/utilities/java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/security/DataSealer.java?rev=442&r1=441&r2=442&view=diff
==============================================================================
--- java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/security/DataSealer.java (original)
+++ java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/security/DataSealer.java Thu Sep  5 16:12:28 2013
@@ -23,30 +23,34 @@
 import java.io.DataOutputStream;
 import java.io.FileInputStream;
 import java.io.IOException;
+import java.nio.charset.StandardCharsets;
 import java.security.GeneralSecurityException;
 import java.security.Key;
 import java.security.KeyException;
 import java.security.KeyStore;
 import java.security.SecureRandom;
-import java.util.Arrays;
 import java.util.zip.GZIPInputStream;
 import java.util.zip.GZIPOutputStream;
 
 import javax.annotation.Nonnull;
-import javax.crypto.Cipher;
-import javax.crypto.Mac;
 import javax.crypto.SecretKey;
-import javax.crypto.spec.IvParameterSpec;
 
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 import net.shibboleth.utilities.java.support.codec.Base64Support;
 import net.shibboleth.utilities.java.support.component.AbstractInitializableComponent;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.utilities.java.support.component.ComponentSupport;
 import net.shibboleth.utilities.java.support.logic.Constraint;
 import net.shibboleth.utilities.java.support.logic.ConstraintViolationException;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
+import org.bouncycastle.crypto.InvalidCipherTextException;
+import org.bouncycastle.crypto.engines.AESEngine;
+import org.bouncycastle.crypto.modes.GCMBlockCipher;
+import org.bouncycastle.crypto.params.AEADParameters;
+import org.bouncycastle.crypto.params.KeyParameter;
+import org.bouncycastle.util.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -83,23 +87,9 @@
     /** Password for encryption key(s). */
     @NonnullAfterInit private String cipherKeyPassword;
 
-    /** Encryption algorithm to use. */
-    @Nonnull @NotEmpty private String cipherAlgorithm;
-
-    /** Keystore alias for the MAC key. */
-    @NonnullAfterInit private String macKeyAlias;
-
-    /** Password for MAC key. */
-    @NonnullAfterInit private String macKeyPassword;
-
-    /** MAC algorithm to use. */
-    @Nonnull @NotEmpty private String macAlgorithm;
-
     /** Constructor. */
     public DataSealer() {
         keystoreType = "JCEKS";
-        cipherAlgorithm = "AES/CBC/PKCS5Padding";
-        macAlgorithm = "HmacSHA256";
     }
     
     /** {@inheritDoc} */
@@ -115,19 +105,11 @@
                 throw new ComponentInitializationException(e);
             }
             
-            if (macKeyAlias == null) {
-                macKeyAlias = cipherKeyAlias;
-            }
-            
-            if (macKeyPassword == null) {
-                macKeyPassword = cipherKeyPassword;
-            }
-
             if (random == null) {
                 random = new SecureRandom();
             }
 
-            loadKeys();
+            cipherKey = loadKey(cipherKeyAlias);
 
             // Before we finish initialization, make sure that things are working.
             testEncryption();
@@ -214,47 +196,13 @@
     }
 
     /**
-     * Returns the encryption algorithm.
-     * 
-     * @return the encryption algorithm
-     */
-    @Nonnull @NotEmpty public String getCipherAlgorithm() {
-        return cipherAlgorithm;
-    }
-
-    /**
-     * Returns the MAC key alias.
-     * 
-     * @return the MAC key alias
-     */

[... 709 lines stripped ...]


More information about the commits mailing list