Code changes
http://cr.openjdk.java.net/~weijun/7077640/webrev.00
The original handling of rrc != 0 is not correct. We did rotate the
bytes but have not reset the RRC field in the GSS message header before
calculating the checksum. According to RFC 4121 [1]:
4.2.4. Encryption and Checksum Operations
....
In Wrap tokens that do not provide for confidentiality, the checksum
SHALL be calculated first over the to-be-signed plaintext data, and
then over the first 16 octets of the Wrap token (the "header", as
defined in section 4.2.6). Both the EC field and the RRC field in
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
the token header SHALL be filled with zeroes for the purpose of
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
calculating the checksum...
^^^^^^^^^^^^^^^^^^^^^^^^
In the test, the Context.transmit() method is split into 4 basic methods
so that we have a chance to call wrap without confidentiality.
Thanks
Max
[1] http://tools.ietf.org/html/rfc4121#section-4.2.4
On 08/12/2011 09:41 AM, weijun.w...@oracle.com wrote:
*Change Request ID*: 7077640
*Synopsis*: gss wrap for cfx doesn't handle rrc != 0
Product: java
Category: jgss
Subcategory: krb5plugin
=== *Description* ============================================================
FULL PRODUCT VERSION :
java version "1.6.0_26"
A DESCRIPTION OF THE PROBLEM :
gss wrap for cfx doesn't handle rrc != 0
Heimdal and mac os x always use an RRC != 0
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
git clone g...@github.com:heimdal/heimdal.git
cd heimdal
sh autogen.sh
./configure
make
cd tests/java
make check
REPRODUCIBILITY :
This bug can be reproduced always.