Svein Otto Solem created CXF-6996:
-------------------------------------

             Summary: "n" in JWK for RSA should be unsigned, but is signed in 
JwkUtils.prepareRSAJwk
                 Key: CXF-6996
                 URL: https://issues.apache.org/jira/browse/CXF-6996
             Project: CXF
          Issue Type: Bug
          Components: JAX-RS Security
    Affects Versions: 3.1.7
            Reporter: Svein Otto Solem
            Priority: Minor


The length of the "n" value is 257 bytes for a 2048 bits key length. 
If "n" is handled as an unsigned int, it should be at most 256 bytes. 
The added null byte is caused by BigInteger.toByteArray() which always handles 
the integer as a signed integer.

A fix is just to remove all the first 0-bytes in the encodedModulus, see 
JwkUtils.prepareRSAJwk.

 This fix will surely break clients which just decodes the "n" as an unsigned 
value using new BigInteger(byte[]) . These clients must be changed to either 
always insert a leading "0-byte" before using the new BigInteger(byte[]) 
contstructor, or they should use the BigInteger(signum, magnitude) constructor. 
 

The extra "sign byte" is mentioned in:
https://tools.ietf.org/html/rfc7518#page-30 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to