summaryrefslogtreecommitdiffstats
path: root/libjava
diff options
context:
space:
mode:
Diffstat (limited to 'libjava')
-rw-r--r--libjava/classpath/ChangeLog6
-rw-r--r--libjava/classpath/gnu/javax/net/ssl/provider/ClientHandshake.java8
-rw-r--r--libjava/classpath/lib/gnu/javax/net/ssl/provider/ClientHandshake$GenCertVerify.classbin2856 -> 2856 bytes
-rw-r--r--libjava/classpath/lib/gnu/javax/net/ssl/provider/ClientHandshake$RSAGen.classbin3440 -> 3763 bytes
4 files changed, 13 insertions, 1 deletions
diff --git a/libjava/classpath/ChangeLog b/libjava/classpath/ChangeLog
index 376c072852d..caa611a55cd 100644
--- a/libjava/classpath/ChangeLog
+++ b/libjava/classpath/ChangeLog
@@ -1,3 +1,9 @@
+2007-03-28 Casey Marshall <csm@gnu.org>
+
+ * gnu/javax/net/ssl/provider/ClientHandshake.java (RSAGen.implRun):
+ check keyEncipherment bit of the certificate, and just pass the public
+ key to the cipher.
+
2007-03-27 Casey Marshall <csm@gnu.org>
PR classpath/31302:
diff --git a/libjava/classpath/gnu/javax/net/ssl/provider/ClientHandshake.java b/libjava/classpath/gnu/javax/net/ssl/provider/ClientHandshake.java
index 059b165a67d..a8780084508 100644
--- a/libjava/classpath/gnu/javax/net/ssl/provider/ClientHandshake.java
+++ b/libjava/classpath/gnu/javax/net/ssl/provider/ClientHandshake.java
@@ -1082,7 +1082,13 @@ outer_loop:
Cipher rsa = Cipher.getInstance("RSA");
java.security.cert.Certificate cert
= engine.session().getPeerCertificates()[0];
- rsa.init(Cipher.ENCRYPT_MODE, cert);
+ if (cert instanceof X509Certificate)
+ {
+ boolean[] keyUsage = ((X509Certificate) cert).getKeyUsage();
+ if (keyUsage != null && !keyUsage[2])
+ throw new InvalidKeyException("certificate's keyUsage does not permit keyEncipherment");
+ }
+ rsa.init(Cipher.ENCRYPT_MODE, cert.getPublicKey());
encryptedPreMasterSecret = rsa.doFinal(preMasterSecret);
// Generate our session keys, because we can.
diff --git a/libjava/classpath/lib/gnu/javax/net/ssl/provider/ClientHandshake$GenCertVerify.class b/libjava/classpath/lib/gnu/javax/net/ssl/provider/ClientHandshake$GenCertVerify.class
index 51a1a2b9508..c614ed58477 100644
--- a/libjava/classpath/lib/gnu/javax/net/ssl/provider/ClientHandshake$GenCertVerify.class
+++ b/libjava/classpath/lib/gnu/javax/net/ssl/provider/ClientHandshake$GenCertVerify.class
Binary files differ
diff --git a/libjava/classpath/lib/gnu/javax/net/ssl/provider/ClientHandshake$RSAGen.class b/libjava/classpath/lib/gnu/javax/net/ssl/provider/ClientHandshake$RSAGen.class
index c7a8f8760db..6d99e3e3b8a 100644
--- a/libjava/classpath/lib/gnu/javax/net/ssl/provider/ClientHandshake$RSAGen.class
+++ b/libjava/classpath/lib/gnu/javax/net/ssl/provider/ClientHandshake$RSAGen.class
Binary files differ
OpenPOWER on IntegriCloud