summaryrefslogtreecommitdiffstats
path: root/luni/src
diff options
context:
space:
mode:
authorBrian Carlstrom <bdc@google.com>2012-03-27 23:25:01 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-03-27 23:25:01 -0700
commit12b42fd0252d5423e167dbccd2e09b82018b7a5b (patch)
tree84a4856a45bb0e634b3826b665cc08b1a03d0b87 /luni/src
parent0c224360a4deec32eaf66e5420fbf01790ee2d13 (diff)
parentb9f9831a0800adbb6b67ab5bdc62292aa034992b (diff)
downloadlibcore-12b42fd0252d5423e167dbccd2e09b82018b7a5b.zip
libcore-12b42fd0252d5423e167dbccd2e09b82018b7a5b.tar.gz
libcore-12b42fd0252d5423e167dbccd2e09b82018b7a5b.tar.bz2
Merge "Use WRAP/UNWRAP for key exchange"
Diffstat (limited to 'luni/src')
-rw-r--r--luni/src/main/java/org/apache/harmony/xnet/provider/jsse/ClientHandshakeImpl.java7
-rw-r--r--luni/src/main/java/org/apache/harmony/xnet/provider/jsse/ServerHandshakeImpl.java6
2 files changed, 8 insertions, 5 deletions
diff --git a/luni/src/main/java/org/apache/harmony/xnet/provider/jsse/ClientHandshakeImpl.java b/luni/src/main/java/org/apache/harmony/xnet/provider/jsse/ClientHandshakeImpl.java
index d21aa2c..4b29363 100644
--- a/luni/src/main/java/org/apache/harmony/xnet/provider/jsse/ClientHandshakeImpl.java
+++ b/luni/src/main/java/org/apache/harmony/xnet/provider/jsse/ClientHandshakeImpl.java
@@ -36,6 +36,7 @@ import javax.crypto.interfaces.DHKey;
import javax.crypto.interfaces.DHPublicKey;
import javax.crypto.spec.DHParameterSpec;
import javax.crypto.spec.DHPublicKeySpec;
+import javax.crypto.spec.SecretKeySpec;
import javax.net.ssl.X509ExtendedKeyManager;
import javax.net.ssl.X509KeyManager;
import javax.security.auth.x500.X500Principal;
@@ -416,10 +417,10 @@ public class ClientHandshakeImpl extends HandshakeProtocol {
try {
c = Cipher.getInstance("RSA/ECB/PKCS1Padding");
if (serverKeyExchange != null) {
- c.init(Cipher.ENCRYPT_MODE, serverKeyExchange
+ c.init(Cipher.WRAP_MODE, serverKeyExchange
.getRSAPublicKey());
} else {
- c.init(Cipher.ENCRYPT_MODE, serverCert.certs[0]);
+ c.init(Cipher.WRAP_MODE, serverCert.certs[0]);
}
} catch (Exception e) {
fatalAlert(AlertProtocol.INTERNAL_ERROR,
@@ -431,7 +432,7 @@ public class ClientHandshakeImpl extends HandshakeProtocol {
System.arraycopy(clientHello.client_version, 0, preMasterSecret, 0, 2);
try {
clientKeyExchange = new ClientKeyExchange(c
- .doFinal(preMasterSecret),
+ .wrap(new SecretKeySpec(preMasterSecret, "preMasterSecret")),
serverHello.server_version[1] == 1);
} catch (Exception e) {
fatalAlert(AlertProtocol.INTERNAL_ERROR,
diff --git a/luni/src/main/java/org/apache/harmony/xnet/provider/jsse/ServerHandshakeImpl.java b/luni/src/main/java/org/apache/harmony/xnet/provider/jsse/ServerHandshakeImpl.java
index 613e671..c5e1838 100644
--- a/luni/src/main/java/org/apache/harmony/xnet/provider/jsse/ServerHandshakeImpl.java
+++ b/luni/src/main/java/org/apache/harmony/xnet/provider/jsse/ServerHandshakeImpl.java
@@ -205,8 +205,10 @@ public class ServerHandshakeImpl extends HandshakeProtocol {
Cipher c = null;
try {
c = Cipher.getInstance("RSA/ECB/PKCS1Padding");
- c.init(Cipher.DECRYPT_MODE, privKey);
- preMasterSecret = c.doFinal(clientKeyExchange.exchange_keys);
+ c.init(Cipher.UNWRAP_MODE, privKey);
+ preMasterSecret = c.unwrap(clientKeyExchange.exchange_keys,
+ "preMasterSecret",
+ Cipher.SECRET_KEY).getEncoded();
// check preMasterSecret:
if (preMasterSecret.length != 48
|| preMasterSecret[0] != clientHello.client_version[0]