Re: 9001039?: DHKeyAgreement calculates wrong TlsPremasterSecret 1 out of 256 times

2013-05-16 Thread Xuelei Fan
Hi Pasi,

Thank you for your patience, and contribution to OpenJDK.  The bug is
accepted, and you should be able to review it at:

   http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8014618

Let's use the above bug ID to track the issue.

Your patch looks fine in general (I may have some very minor comments
later).  We also have similar problems in PKCS11 provider because of the
update of P11KeyAgreement.java in changeset:

http://hg.openjdk.java.net/jdk7u/jdk7u-gate/jdk/rev/e574e475c8a6

Would you like to also fix it in your patch?

Thanks again for your nice work.

Regards,
Xuelei


On 5/10/2013 5:00 PM, Pasi Eronen wrote:
 AKA 1 out of 256 SSL/TLS handshakes fails with DHE cipher suites
 
 I reported this bug over a month of ago, but for some reason, it's not 
 yet visible at bugs.sun.com http://bugs.sun.com. I've included the bug
 report below just in 
 case. 
 
 It seems this commit from March 2012 inadvertently broke SSL/TLS DHE 
 cipher suites, causing the SSL/TLS handshake to fail approximately 
 1 out of 256 times: 
 
 http://hg.openjdk.java.net/jdk7u/jdk7u-gate/jdk/rev/e574e475c8a6
 
 The commit was done to fix this bug:
 
 http://bugs.sun.com/view_bug.do?bug_id=7146728
 
 While generating a secret of the same length as modulus may be the right 
 choice generally speaking (and it's what e.g. IPsec uses), SSL/TLS uses 
 a different convention: leading zeroes must be stripped. 
 
 This is currently blocking us from updating our production systems to 
 Java 7, so although I have not contributed to OpenJDK before, I'd like 
 to submit a patch and a test case for this (I've signed the OCA 
 already). But before I do this, I'd like to check that the approach is 
 agreeable. 
 
 We have a separate algorithm value TlsPremasterSecret, so 
 behavior for other cases could stay the same. Would a patch
 like this:
 
 } else if (algorithm.equals(TlsPremasterSecret)) {
 // remove leading zero bytes per RFC 5246 Section 8.1.2
 int i = 0;
 while ((i  secret.length - 1)  (secret[i] == 0)) {
 i++;
 }
 if (i == 0) {
 return new SecretKeySpec(secret, TlsPremasterSecret);
 } else {
 byte[] secret2 = new byte[secret.length - i];
 System.arraycopy(secret, i, secret2, 0, secret2.length);
 return new SecretKeySpec(secret2, TlsPremasterSecret);
 }
 }
 
 Plus a test case (with fixed keys) that checks that leading zero is
 stripped 
 for TlsPremasterSecret and is not stripped otherwise, be sufficient?
 
 Best regards,
 Pasi
 
 ---snip---
 
 Synopsis:
 DHKeyAgreement calculates wrong TlsPremasterSecret 1 out of 256 times
 
 Full OS version:
 Tested on Windows 7 (Microsoft Windows [Version 6.1.7601]), but occurs in
 e..g OpenJDK 7 as well.
 
 Development Kit or Runtime version:
 java version 1.7.0_17
 Java(TM) SE Runtime Environment (build 1.7.0_17-b02)
 Java HotSpot(TM) Client VM (build 23.7-b01, mixed mode, sharing)
 
 Description:
 When performing Diffie-Hellman key agreement for SSL/TLS, the TLS
 specification (RFC 5246) says that Leading bytes of Z that contain all zero
 bits are stripped before it is used as the pre_master_secret.
 
 However, com.sun.crypto.provider.DHKeyAgreement.java does not strip leading
 zero bytes. This causes approximately 1 out 256 SSL/TLS handshakes with
 DH/DHE cipher suites to fail (when the leading byte happens, by chance, to
 be zero).
 
 Steps to Reproduce:
 1. Start a simple JSSE socket server with -Djavax.net.debug=all.
 
 2. Connect to the server with e.g. OpenSSL command line tool, ensuring that
 DHE cipher suite gets selected (e.g. openssl s_client -cipher
 DHE-RSA-AES128-SHA -connect 192.168.81.1:
 http://192.168.81.1:) repeatedly. Other SSL
 clients can be used -- this is not an OpenSSL bug (see below).
 
 3. Repeat the connection. After a couple of hundred successful connections,
 the connection will fail with handshake_failure alert.
 
 4. Examine the JSSE debug logs produced by the server: the failed connection
 will have a PreMaster secret that begins with zero byte
 (while all other connections have non-zero byte here). For example:
 
 SESSION KEYGEN:
 PreMaster Secret:
 : 00 70 C5 7E 91 38 C8 DE   ED 75 3D 76 8A B5 44 69  .p...8...u=v..Di
 0010: E7 32 1C EE 80 77 50 C7   A9 51 24 2E E3 15 11 30  .2...wP..Q$0
 0020: 9D F6 9F BC 9D EB 5C 18   F7 A4 19 ED 1A AC 2E 0C  ..\.
 0030: E3 18 C5 11 B1 80 07 7D   B1 C6 70 A8 D7 EB CF DD  ..p.
 0040: 2D B5 1D BC 01 3E 28 2A   2B 5B 38 8F EB 20 F2 A2  -(*+[8.. ..
 0050: 00 07 47 F7 87 B8 99 CB   EF B4 13 04 C8 8B 82 FB  ..G.
 
 Expected Result:
 Expected result is that every connection succeed.
 
 Actual Result:
 Roughly one out of 256 connections fail.
 
 Source code for an executable test case:
 
 Java server:
 
 import javax.net.ssl.SSLServerSocket;
 import javax.net.ssl.SSLServerSocketFactory;
 import javax.net.ssl.SSLSocket;
 
 public class TestServer 

hg: jdk8/tl/jdk: 8014676: Java debugger may fail to run

2013-05-16 Thread dmitry . degrave
Changeset: 81c449fd18fe
Author:dmeetry
Date:  2013-05-16 19:28 +0400
URL:   http://hg.openjdk.java.net/jdk8/tl/jdk/rev/81c449fd18fe

8014676: Java debugger may fail to run
Summary: The problem is observed when the binaries for windows are placed under 
a path which contains a space
Reviewed-by: sla, alanb
Contributed-by: ivan.gerasi...@oracle.com

! src/share/classes/com/sun/tools/jdi/AbstractLauncher.java
! src/share/classes/com/sun/tools/jdi/SunCommandLineLauncher.java



hg: jdk8/tl/jdk: 7150552: network test hangs [macosx]

2013-05-16 Thread kurchi . subhra . hazra
Changeset: a8be9405bb4b
Author:khazra
Date:  2013-05-16 10:58 -0700
URL:   http://hg.openjdk.java.net/jdk8/tl/jdk/rev/a8be9405bb4b

7150552: network test hangs [macosx]
Summary: Remove usage of test/sun/net/www/httptest
Reviewed-by: chegar

! test/ProblemList.txt
! test/java/net/CookieHandler/CookieManagerTest.java
! test/sun/net/www/protocol/http/B6299712.java



hg: jdk8/tl/jdk: 8001163: [pack200] should support attributes introduced by JSR-308

2013-05-16 Thread kumar . x . srinivasan
Changeset: a13de892cefd
Author:ksrini
Date:  2013-05-15 18:26 -0700
URL:   http://hg.openjdk.java.net/jdk8/tl/jdk/rev/a13de892cefd

8001163: [pack200] should support attributes introduced by JSR-308
Reviewed-by: jrose

! src/share/classes/com/sun/java/util/jar/pack/Attribute.java
! src/share/classes/com/sun/java/util/jar/pack/BandStructure.java
! src/share/classes/com/sun/java/util/jar/pack/Constants.java
! src/share/classes/com/sun/java/util/jar/pack/Fixups.java
! src/share/classes/com/sun/java/util/jar/pack/Package.java
! src/share/classes/com/sun/java/util/jar/pack/PackageReader.java
! src/share/native/com/sun/java/util/jar/pack/constants.h
! src/share/native/com/sun/java/util/jar/pack/unpack.cpp
! test/tools/pack200/AttributeTests.java
+ test/tools/pack200/BandIntegrity.java
! test/tools/pack200/InstructionTests.java
! test/tools/pack200/Utils.java
! test/tools/pack200/pack200-verifier/src/xmlkit/ClassReader.java
+ test/tools/pack200/typeannos/Lambda.java
+ test/tools/pack200/typeannos/Readme.txt
+ test/tools/pack200/typeannos/TargetTypes.java
+ test/tools/pack200/typeannos/TestTypeAnnotations.java
+ test/tools/pack200/typeannos/TypeUseTarget.java



RFR: 8012261: update policytool to support java.net.HttpURLPermission

2013-05-16 Thread Weijun Wang

Hi All

Please take a look at

http://cr.openjdk.java.net/~weijun/8012261/webrev.00/

which supports the new HttpURLPermission type introduced in

8010464: Evolve java networking same origin policy
http://hg.openjdk.java.net/jdk8/tl/jdk/rev/93a268759ec3

Noreg-trivial.

Thanks
Max