summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeil Fuller <nfuller@google.com>2014-06-19 09:55:07 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-06-19 09:55:07 +0000
commit8192a4ef251310a92b20c590e1186736c2c48263 (patch)
tree52cfd3cd8c796c9af8dd7da43da0cef925414465
parent4042ee159cc3cfba362c5f99b13127135d2c893a (diff)
parentb8586cf5e48f81987b11d3b206f9a9f6f0ae6dbf (diff)
downloadlibcore-8192a4ef251310a92b20c590e1186736c2c48263.zip
libcore-8192a4ef251310a92b20c590e1186736c2c48263.tar.gz
libcore-8192a4ef251310a92b20c590e1186736c2c48263.tar.bz2
am b8586cf5: am 9aad5527: Merge "CTS fix: Signature2Test.test_clone()"
* commit 'b8586cf5e48f81987b11d3b206f9a9f6f0ae6dbf': CTS fix: Signature2Test.test_clone()
-rw-r--r--luni/src/main/java/java/security/Signature.java2
-rw-r--r--luni/src/test/java/org/apache/harmony/security/tests/java/security/Signature2Test.java10
2 files changed, 11 insertions, 1 deletions
diff --git a/luni/src/main/java/java/security/Signature.java b/luni/src/main/java/java/security/Signature.java
index 7dd7d93..a39d59b 100644
--- a/luni/src/main/java/java/security/Signature.java
+++ b/luni/src/main/java/java/security/Signature.java
@@ -703,7 +703,7 @@ public abstract class Signature extends SignatureSpi {
@Override
public Object clone() throws CloneNotSupportedException {
- SignatureSpi spi = (SignatureSpi) spiImpl.clone();
+ SignatureSpi spi = spiImpl != null ? (SignatureSpi) spiImpl.clone() : null;
return new SignatureImpl(getAlgorithm(), getProvider(), spi);
}
diff --git a/luni/src/test/java/org/apache/harmony/security/tests/java/security/Signature2Test.java b/luni/src/test/java/org/apache/harmony/security/tests/java/security/Signature2Test.java
index 7886e3e..ad084e1 100644
--- a/luni/src/test/java/org/apache/harmony/security/tests/java/security/Signature2Test.java
+++ b/luni/src/test/java/org/apache/harmony/security/tests/java/security/Signature2Test.java
@@ -68,7 +68,17 @@ public class Signature2Test extends junit.framework.TestCase {
* java.security.Signature#clone()
*/
public void test_clone() throws Exception {
+ // A Signature may be cloneable according to the API, in practice the implementation isn't
+ // once it has been initialized. Checking for runtime exceptions rather than useful
+ // behavior.
Signature s = Signature.getInstance("DSA");
+ Signature clone = (Signature) s.clone();
+ assertNotNull(clone);
+ assertEquals(s.getAlgorithm(), clone.getAlgorithm());
+ assertEquals(s.getProvider(), clone.getProvider());
+
+ KeyPair keyPair = getDsaKeys();
+ s.initSign(keyPair.getPrivate());
try {
s.clone();
fail();