You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2014/04/04 14:03:42 UTC
svn commit: r1584628 - in /cayenne/main/trunk/cayenne-crypto/src:
main/java/org/apache/cayenne/crypto/CryptoModuleBuilder.java
test/java/org/apache/cayenne/crypto/unit/CryptoUnitUtils.java
test/java/org/apache/cayenne/crypto/unit/CryptoUnitUtilsTest.java
Author: aadamchik
Date: Fri Apr 4 12:03:42 2014
New Revision: 1584628
URL: http://svn.apache.org/r1584628
Log:
CAY-1916 cayenne-crypto module that enables data encryption for certain model attributes
integration testing and fixes
Modified:
cayenne/main/trunk/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/CryptoModuleBuilder.java
cayenne/main/trunk/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/unit/CryptoUnitUtils.java
cayenne/main/trunk/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/unit/CryptoUnitUtilsTest.java
Modified: cayenne/main/trunk/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/CryptoModuleBuilder.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/CryptoModuleBuilder.java?rev=1584628&r1=1584627&r2=1584628&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/CryptoModuleBuilder.java (original)
+++ cayenne/main/trunk/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/CryptoModuleBuilder.java Fri Apr 4 12:03:42 2014
@@ -36,6 +36,7 @@ import org.apache.cayenne.crypto.transfo
import org.apache.cayenne.crypto.transformer.TransformerFactory;
import org.apache.cayenne.crypto.transformer.bytes.BytesTransformerFactory;
import org.apache.cayenne.crypto.transformer.bytes.DefaultBytesTransformerFactory;
+import org.apache.cayenne.crypto.transformer.value.JceValueTransformerFactory;
import org.apache.cayenne.crypto.transformer.value.ValueTransformerFactory;
import org.apache.cayenne.di.Binder;
import org.apache.cayenne.di.MapBuilder;
@@ -85,6 +86,8 @@ public class CryptoModuleBuilder {
this.keySourceType = JceksKeySource.class;
this.columnMapperPattern = "^CRYPTO_";
+
+ this.valueTransformerFactoryType = JceValueTransformerFactory.class;
}
public CryptoModuleBuilder cipherAlgorithm(String algorithm) {
Modified: cayenne/main/trunk/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/unit/CryptoUnitUtils.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/unit/CryptoUnitUtils.java?rev=1584628&r1=1584627&r2=1584628&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/unit/CryptoUnitUtils.java (original)
+++ cayenne/main/trunk/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/unit/CryptoUnitUtils.java Fri Apr 4 12:03:42 2014
@@ -19,10 +19,19 @@
package org.apache.cayenne.crypto.unit;
import java.math.BigInteger;
+import java.security.Key;
import java.util.Arrays;
+import javax.crypto.Cipher;
+import javax.crypto.spec.IvParameterSpec;
+
+import org.apache.cayenne.configuration.server.ServerRuntime;
+import org.apache.cayenne.crypto.key.KeySource;
+
public class CryptoUnitUtils {
+ private static final int DEFAULT_BLOCK_SIZE = 16;
+
public static byte[] hexToBytes(String hexString) {
byte[] bytes = new BigInteger(hexString, 16).toByteArray();
@@ -34,4 +43,26 @@ public class CryptoUnitUtils {
}
}
+ public static byte[] decrypt_AES_CBC(byte[] source, ServerRuntime runtime) {
+
+ byte[] keyNameBytes = Arrays.copyOfRange(source, 0, DEFAULT_BLOCK_SIZE);
+ byte[] ivBytes = Arrays.copyOfRange(source, DEFAULT_BLOCK_SIZE, DEFAULT_BLOCK_SIZE * 2);
+ byte[] cipherText = Arrays.copyOfRange(source, DEFAULT_BLOCK_SIZE * 2, source.length - DEFAULT_BLOCK_SIZE * 2);
+
+ try {
+
+ Cipher decCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
+
+ // 'trim' is to get rid of 0 padding
+ String keyName = new String(keyNameBytes, "UTF-8").trim();
+ Key key = runtime.getInjector().getInstance(KeySource.class).getKey(keyName);
+
+ decCipher.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(ivBytes));
+
+ return decCipher.doFinal(cipherText);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
}
Modified: cayenne/main/trunk/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/unit/CryptoUnitUtilsTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/unit/CryptoUnitUtilsTest.java?rev=1584628&r1=1584627&r2=1584628&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/unit/CryptoUnitUtilsTest.java (original)
+++ cayenne/main/trunk/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/unit/CryptoUnitUtilsTest.java Fri Apr 4 12:03:42 2014
@@ -37,5 +37,4 @@ public class CryptoUnitUtilsTest {
(byte) 0x20 };
assertArrayEquals(hexByte2, CryptoUnitUtils.hexToBytes(hexString2));
}
-
}