You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by sd...@apache.org on 2016/06/30 06:31:05 UTC
commons-crypto git commit: CRYPTO-63: Add JNA binding (issue fix)
Repository: commons-crypto
Updated Branches:
refs/heads/master 99cae9863 -> 5b4c302d8
CRYPTO-63: Add JNA binding (issue fix)
Project: http://git-wip-us.apache.org/repos/asf/commons-crypto/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-crypto/commit/5b4c302d
Tree: http://git-wip-us.apache.org/repos/asf/commons-crypto/tree/5b4c302d
Diff: http://git-wip-us.apache.org/repos/asf/commons-crypto/diff/5b4c302d
Branch: refs/heads/master
Commit: 5b4c302d87b5039258fb3785c0d1e18775e4cf7d
Parents: 99cae98
Author: Sun Dapeng <sd...@apache.org>
Authored: Thu Jun 30 13:54:44 2016 +0800
Committer: Sun Dapeng <sd...@apache.org>
Committed: Thu Jun 30 13:54:44 2016 +0800
----------------------------------------------------------------------
.../org/apache/commons/crypto/jna/OpensslJnaCipher.java | 9 +++++++--
.../apache/commons/crypto/jna/OpensslJnaCipherTest.java | 10 ----------
2 files changed, 7 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/5b4c302d/src/main/java/org/apache/commons/crypto/jna/OpensslJnaCipher.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/crypto/jna/OpensslJnaCipher.java b/src/main/java/org/apache/commons/crypto/jna/OpensslJnaCipher.java
index 05ee367..db1cd31 100644
--- a/src/main/java/org/apache/commons/crypto/jna/OpensslJnaCipher.java
+++ b/src/main/java/org/apache/commons/crypto/jna/OpensslJnaCipher.java
@@ -38,6 +38,7 @@ import org.apache.commons.crypto.cipher.CryptoCipher;
import org.apache.commons.crypto.utils.Utils;
import com.sun.jna.NativeLong;
+import com.sun.jna.Pointer;
import com.sun.jna.ptr.PointerByReference;
/**
@@ -48,7 +49,7 @@ class OpensslJnaCipher implements CryptoCipher {
private final static int AES_BLOCK_SIZE = 16;
private PointerByReference algo;
- private final PointerByReference context;
+ private PointerByReference context;
private final AlgorithmMode algMode;
private final int padding;
private final String transformation;
@@ -119,6 +120,9 @@ class OpensslJnaCipher implements CryptoCipher {
}
}
+ if (context != null && Pointer.NULL == context.getValue()) {
+ context = OpensslNativeJna.EVP_CIPHER_CTX_new();
+ }
int retVal = OpensslNativeJna.EVP_CipherInit_ex(context, algo, null, key.getEncoded(), iv, cipherMode);
throwOnError(retVal);
OpensslNativeJna.EVP_CIPHER_CTX_set_padding(context, padding);
@@ -233,9 +237,10 @@ class OpensslJnaCipher implements CryptoCipher {
*/
@Override
public void close() {
- if(context != null) {
+ if(context != null && Pointer.NULL != context.getValue()) {
OpensslNativeJna.EVP_CIPHER_CTX_cleanup(context);
OpensslNativeJna.EVP_CIPHER_CTX_free(context);
+ context.setValue(Pointer.NULL);
}
}
http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/5b4c302d/src/test/java/org/apache/commons/crypto/jna/OpensslJnaCipherTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/crypto/jna/OpensslJnaCipherTest.java b/src/test/java/org/apache/commons/crypto/jna/OpensslJnaCipherTest.java
index 2d01ffa..d30586c 100644
--- a/src/test/java/org/apache/commons/crypto/jna/OpensslJnaCipherTest.java
+++ b/src/test/java/org/apache/commons/crypto/jna/OpensslJnaCipherTest.java
@@ -19,7 +19,6 @@
package org.apache.commons.crypto.jna;
import org.apache.commons.crypto.cipher.AbstractCipherTest;
-import org.apache.commons.crypto.jna.OpensslJnaCipher;
public class OpensslJnaCipherTest extends AbstractCipherTest {
@@ -33,13 +32,4 @@ public class OpensslJnaCipherTest extends AbstractCipherTest {
cipherClass = OpensslJnaCipher.class.getName();
}
- @Override
- public void closeTestRepeat() {
- System.err.println("closeTestRepeat() Causes JVM crash");
- }
-
- @Override
- public void reInitAfterClose() {
- System.err.println("reInitAfterClose() Causes JVM crash");
- }
}