You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2015/07/22 21:38:19 UTC

[1/3] cxf git commit: making JoseHeaders abstract and its setAlgorithm protected with lots of related changes

Repository: cxf
Updated Branches:
  refs/heads/master b53208275 -> 4ac83c790


http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/test/java/org/apache/cxf/rs/security/jose/cookbook/JwsJoseCookBookTest.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/test/java/org/apache/cxf/rs/security/jose/cookbook/JwsJoseCookBookTest.java b/rt/rs/security/jose/src/test/java/org/apache/cxf/rs/security/jose/cookbook/JwsJoseCookBookTest.java
index 2c2435d..f606beb 100644
--- a/rt/rs/security/jose/src/test/java/org/apache/cxf/rs/security/jose/cookbook/JwsJoseCookBookTest.java
+++ b/rt/rs/security/jose/src/test/java/org/apache/cxf/rs/security/jose/cookbook/JwsJoseCookBookTest.java
@@ -27,8 +27,6 @@ import javax.crypto.Cipher;
 import org.apache.cxf.common.util.Base64UrlUtility;
 import org.apache.cxf.helpers.IOUtils;
 import org.apache.cxf.jaxrs.provider.json.JsonMapObjectReaderWriter;
-import org.apache.cxf.rs.security.jose.JoseHeaders;
-import org.apache.cxf.rs.security.jose.JoseHeadersReaderWriter;
 import org.apache.cxf.rs.security.jose.jwa.AlgorithmUtils;
 import org.apache.cxf.rs.security.jose.jwa.SignatureAlgorithm;
 import org.apache.cxf.rs.security.jose.jwk.JsonWebKey;
@@ -37,6 +35,7 @@ import org.apache.cxf.rs.security.jose.jwk.JwkUtils;
 import org.apache.cxf.rs.security.jose.jws.EcDsaJwsSignatureProvider;
 import org.apache.cxf.rs.security.jose.jws.JwsCompactConsumer;
 import org.apache.cxf.rs.security.jose.jws.JwsCompactProducer;
+import org.apache.cxf.rs.security.jose.jws.JwsHeaders;
 import org.apache.cxf.rs.security.jose.jws.JwsJsonConsumer;
 import org.apache.cxf.rs.security.jose.jws.JwsJsonProducer;
 import org.apache.cxf.rs.security.jose.jws.JwsUtils;
@@ -354,10 +353,10 @@ public class JwsJoseCookBookTest {
     @Test
     public void testRSAv15Signature() throws Exception {
         JwsCompactProducer compactProducer = new JwsCompactProducer(PAYLOAD);
-        compactProducer.getJoseHeaders().setAlgorithm(AlgorithmUtils.RS_SHA_256_ALGO);
-        compactProducer.getJoseHeaders().setKeyId(RSA_KID_VALUE);
+        compactProducer.getJwsHeaders().setSignatureAlgorithm(SignatureAlgorithm.RS256);
+        compactProducer.getJwsHeaders().setKeyId(RSA_KID_VALUE);
         JsonMapObjectReaderWriter reader = new JsonMapObjectReaderWriter();
-        assertEquals(reader.toJson(compactProducer.getJoseHeaders().asMap()), RSA_V1_5_SIGNATURE_PROTECTED_HEADER_JSON);
+        assertEquals(reader.toJson(compactProducer.getJwsHeaders().asMap()), RSA_V1_5_SIGNATURE_PROTECTED_HEADER_JSON);
         assertEquals(compactProducer.getUnsignedEncodedJws(),
                 RSA_V1_5_SIGNATURE_PROTECTED_HEADER + "." + ENCODED_PAYLOAD);
         JsonWebKeys jwks = readKeySet("cookbookPrivateSet.txt");
@@ -376,8 +375,8 @@ public class JwsJoseCookBookTest {
         JwsJsonProducer jsonProducer = new JwsJsonProducer(PAYLOAD);
         assertEquals(jsonProducer.getPlainPayload(), PAYLOAD);
         assertEquals(jsonProducer.getUnsignedEncodedPayload(), ENCODED_PAYLOAD);
-        JoseHeaders protectedHeader = new JoseHeaders();
-        protectedHeader.setAlgorithm(AlgorithmUtils.RS_SHA_256_ALGO);
+        JwsHeaders protectedHeader = new JwsHeaders();
+        protectedHeader.setSignatureAlgorithm(SignatureAlgorithm.RS256);
         protectedHeader.setKeyId(RSA_KID_VALUE);
         jsonProducer.signWith(JwsUtils.getSignatureProvider(rsaKey, 
                                                             SignatureAlgorithm.RS256), protectedHeader);
@@ -400,10 +399,10 @@ public class JwsJoseCookBookTest {
         }
 
         JwsCompactProducer compactProducer = new JwsCompactProducer(PAYLOAD);
-        compactProducer.getJoseHeaders().setAlgorithm(AlgorithmUtils.PS_SHA_384_ALGO);
-        compactProducer.getJoseHeaders().setKeyId(RSA_KID_VALUE);
+        compactProducer.getJwsHeaders().setSignatureAlgorithm(SignatureAlgorithm.PS384);
+        compactProducer.getJwsHeaders().setKeyId(RSA_KID_VALUE);
         JsonMapObjectReaderWriter reader = new JsonMapObjectReaderWriter();
-        assertEquals(reader.toJson(compactProducer.getJoseHeaders().asMap()), RSA_PSS_SIGNATURE_PROTECTED_HEADER_JSON);
+        assertEquals(reader.toJson(compactProducer.getJwsHeaders().asMap()), RSA_PSS_SIGNATURE_PROTECTED_HEADER_JSON);
         assertEquals(compactProducer.getUnsignedEncodedJws(),
                 RSA_PSS_SIGNATURE_PROTECTED_HEADER + "." + ENCODED_PAYLOAD);
         JsonWebKeys jwks = readKeySet("cookbookPrivateSet.txt");
@@ -421,8 +420,8 @@ public class JwsJoseCookBookTest {
         JwsJsonProducer jsonProducer = new JwsJsonProducer(PAYLOAD);
         assertEquals(jsonProducer.getPlainPayload(), PAYLOAD);
         assertEquals(jsonProducer.getUnsignedEncodedPayload(), ENCODED_PAYLOAD);
-        JoseHeaders protectedHeader = new JoseHeaders();
-        protectedHeader.setAlgorithm(AlgorithmUtils.PS_SHA_384_ALGO);
+        JwsHeaders protectedHeader = new JwsHeaders();
+        protectedHeader.setSignatureAlgorithm(SignatureAlgorithm.PS384);
         protectedHeader.setKeyId(RSA_KID_VALUE);
         jsonProducer.signWith(JwsUtils.getSignatureProvider(rsaKey, SignatureAlgorithm.PS384), protectedHeader);
         assertEquals(jsonProducer.getJwsJsonSignedDocument().length(), RSA_PSS_JSON_GENERAL_SERIALIZATION.length());
@@ -447,10 +446,10 @@ public class JwsJoseCookBookTest {
         }
         try {
             JwsCompactProducer compactProducer = new JwsCompactProducer(PAYLOAD);
-            compactProducer.getJoseHeaders().setAlgorithm(AlgorithmUtils.ES_SHA_512_ALGO);
-            compactProducer.getJoseHeaders().setKeyId(ECDSA_KID_VALUE);
+            compactProducer.getJwsHeaders().setSignatureAlgorithm(SignatureAlgorithm.ES512);
+            compactProducer.getJwsHeaders().setKeyId(ECDSA_KID_VALUE);
             JsonMapObjectReaderWriter reader = new JsonMapObjectReaderWriter();
-            assertEquals(reader.toJson(compactProducer.getJoseHeaders().asMap()), 
+            assertEquals(reader.toJson(compactProducer.getJwsHeaders().asMap()), 
                          ECDSA_SIGNATURE_PROTECTED_HEADER_JSON);
             assertEquals(compactProducer.getUnsignedEncodedJws(),
                     ECSDA_SIGNATURE_PROTECTED_HEADER + "." + ENCODED_PAYLOAD);
@@ -475,10 +474,10 @@ public class JwsJoseCookBookTest {
     @Test
     public void testHMACSignature() throws Exception {
         JwsCompactProducer compactProducer = new JwsCompactProducer(PAYLOAD);
-        compactProducer.getJoseHeaders().setAlgorithm(AlgorithmUtils.HMAC_SHA_256_ALGO);
-        compactProducer.getJoseHeaders().setKeyId(HMAC_KID_VALUE);
+        compactProducer.getJwsHeaders().setSignatureAlgorithm(SignatureAlgorithm.HS256);
+        compactProducer.getJwsHeaders().setKeyId(HMAC_KID_VALUE);
         JsonMapObjectReaderWriter reader = new JsonMapObjectReaderWriter();
-        assertEquals(reader.toJson(compactProducer.getJoseHeaders().asMap()), HMAC_SIGNATURE_PROTECTED_HEADER_JSON);
+        assertEquals(reader.toJson(compactProducer.getJwsHeaders().asMap()), HMAC_SIGNATURE_PROTECTED_HEADER_JSON);
         assertEquals(compactProducer.getUnsignedEncodedJws(),
                 HMAC_SIGNATURE_PROTECTED_HEADER + "." + ENCODED_PAYLOAD);
         JsonWebKeys jwks = readKeySet("cookbookSecretSet.txt");
@@ -493,8 +492,8 @@ public class JwsJoseCookBookTest {
         JwsJsonProducer jsonProducer = new JwsJsonProducer(PAYLOAD);
         assertEquals(jsonProducer.getPlainPayload(), PAYLOAD);
         assertEquals(jsonProducer.getUnsignedEncodedPayload(), ENCODED_PAYLOAD);
-        JoseHeaders protectedHeader = new JoseHeaders();
-        protectedHeader.setAlgorithm(AlgorithmUtils.HMAC_SHA_256_ALGO);
+        JwsHeaders protectedHeader = new JwsHeaders();
+        protectedHeader.setSignatureAlgorithm(SignatureAlgorithm.HS256);
         protectedHeader.setKeyId(HMAC_KID_VALUE);
         jsonProducer.signWith(JwsUtils.getSignatureProvider(key, SignatureAlgorithm.HS256), protectedHeader);
         assertEquals(jsonProducer.getJwsJsonSignedDocument(), HMAC_JSON_GENERAL_SERIALIZATION);
@@ -510,10 +509,10 @@ public class JwsJoseCookBookTest {
     @Test
     public void testDetachedHMACSignature() throws Exception {
         JwsCompactProducer compactProducer = new JwsCompactProducer(PAYLOAD);
-        compactProducer.getJoseHeaders().setAlgorithm(AlgorithmUtils.HMAC_SHA_256_ALGO);
-        compactProducer.getJoseHeaders().setKeyId(HMAC_KID_VALUE);
+        compactProducer.getJwsHeaders().setSignatureAlgorithm(SignatureAlgorithm.HS256);
+        compactProducer.getJwsHeaders().setKeyId(HMAC_KID_VALUE);
         JsonMapObjectReaderWriter reader = new JsonMapObjectReaderWriter();
-        assertEquals(reader.toJson(compactProducer.getJoseHeaders().asMap()), HMAC_SIGNATURE_PROTECTED_HEADER_JSON);
+        assertEquals(reader.toJson(compactProducer.getJwsHeaders().asMap()), HMAC_SIGNATURE_PROTECTED_HEADER_JSON);
         assertEquals(compactProducer.getUnsignedEncodedJws(),
                 HMAC_SIGNATURE_PROTECTED_HEADER + "." + ENCODED_PAYLOAD);
         JsonWebKeys jwks = readKeySet("cookbookSecretSet.txt");
@@ -528,8 +527,8 @@ public class JwsJoseCookBookTest {
         JwsJsonProducer jsonProducer = new JwsJsonProducer(PAYLOAD);
         assertEquals(jsonProducer.getPlainPayload(), PAYLOAD);
         assertEquals(jsonProducer.getUnsignedEncodedPayload(), ENCODED_PAYLOAD);
-        JoseHeaders protectedHeader = new JoseHeaders();
-        protectedHeader.setAlgorithm(AlgorithmUtils.HMAC_SHA_256_ALGO);
+        JwsHeaders protectedHeader = new JwsHeaders();
+        protectedHeader.setSignatureAlgorithm(SignatureAlgorithm.HS256);
         protectedHeader.setKeyId(HMAC_KID_VALUE);
         jsonProducer.signWith(JwsUtils.getSignatureProvider(key, SignatureAlgorithm.HS256), protectedHeader);
         assertEquals(jsonProducer.getJwsJsonSignedDocument(true), HMAC_DETACHED_JSON_GENERAL_SERIALIZATION);
@@ -548,9 +547,9 @@ public class JwsJoseCookBookTest {
         JwsJsonProducer jsonProducer = new JwsJsonProducer(PAYLOAD);
         assertEquals(jsonProducer.getPlainPayload(), PAYLOAD);
         assertEquals(jsonProducer.getUnsignedEncodedPayload(), ENCODED_PAYLOAD);
-        JoseHeaders protectedHeader = new JoseHeaders();
-        protectedHeader.setAlgorithm(AlgorithmUtils.HMAC_SHA_256_ALGO);
-        JoseHeaders unprotectedHeader = new JoseHeaders();
+        JwsHeaders protectedHeader = new JwsHeaders();
+        protectedHeader.setSignatureAlgorithm(SignatureAlgorithm.HS256);
+        JwsHeaders unprotectedHeader = new JwsHeaders();
         unprotectedHeader.setKeyId(HMAC_KID_VALUE);
         JsonWebKeys jwks = readKeySet("cookbookSecretSet.txt");
         List<JsonWebKey> keys = jwks.getKeys();
@@ -576,8 +575,8 @@ public class JwsJoseCookBookTest {
         JwsJsonProducer jsonProducer = new JwsJsonProducer(PAYLOAD);
         assertEquals(jsonProducer.getPlainPayload(), PAYLOAD);
         assertEquals(jsonProducer.getUnsignedEncodedPayload(), ENCODED_PAYLOAD);
-        JoseHeaders unprotectedHeader = new JoseHeaders();
-        unprotectedHeader.setAlgorithm(AlgorithmUtils.HMAC_SHA_256_ALGO);
+        JwsHeaders unprotectedHeader = new JwsHeaders();
+        unprotectedHeader.setSignatureAlgorithm(SignatureAlgorithm.HS256);
         unprotectedHeader.setKeyId(HMAC_KID_VALUE);
         JsonWebKeys jwks = readKeySet("cookbookSecretSet.txt");
         List<JsonWebKey> keys = jwks.getKeys();
@@ -609,9 +608,9 @@ public class JwsJoseCookBookTest {
             JwsJsonProducer jsonProducer = new JwsJsonProducer(PAYLOAD);
             assertEquals(jsonProducer.getPlainPayload(), PAYLOAD);
             assertEquals(jsonProducer.getUnsignedEncodedPayload(), ENCODED_PAYLOAD);
-            JoseHeaders firstSignerProtectedHeader = new JoseHeaders();
-            firstSignerProtectedHeader.setAlgorithm(AlgorithmUtils.RS_SHA_256_ALGO);
-            JoseHeaders firstSignerUnprotectedHeader = new JoseHeaders();
+            JwsHeaders firstSignerProtectedHeader = new JwsHeaders();
+            firstSignerProtectedHeader.setSignatureAlgorithm(SignatureAlgorithm.RS256);
+            JwsHeaders firstSignerUnprotectedHeader = new JwsHeaders();
             firstSignerUnprotectedHeader.setKeyId(RSA_KID_VALUE);
             JsonWebKeys jwks = readKeySet("cookbookPrivateSet.txt");
             List<JsonWebKey> keys = jwks.getKeys();
@@ -621,20 +620,20 @@ public class JwsJoseCookBookTest {
             assertEquals(jsonProducer.getSignatureEntries().get(0).toJson(),
                     FIRST_SIGNATURE_ENTRY_MULTIPLE_SIGNATURES);
 
-            JoseHeaders secondSignerUnprotectedHeader = new JoseHeaders();
-            secondSignerUnprotectedHeader.setAlgorithm(AlgorithmUtils.ES_SHA_512_ALGO);
+            JwsHeaders secondSignerUnprotectedHeader = new JwsHeaders();
+            secondSignerUnprotectedHeader.setSignatureAlgorithm(SignatureAlgorithm.ES512);
             secondSignerUnprotectedHeader.setKeyId(ECDSA_KID_VALUE);
             JsonWebKey ecKey = keys.get(0);
             jsonProducer.signWith(JwsUtils.getSignatureProvider(ecKey, SignatureAlgorithm.ES512),
                     null, secondSignerUnprotectedHeader);
-            assertEquals(new JoseHeadersReaderWriter().toJson(
+            assertEquals(new JsonMapObjectReaderWriter().toJson(
                 jsonProducer.getSignatureEntries().get(1).getUnprotectedHeader()),
                     SECOND_SIGNATURE_UNPROTECTED_HEADER_MULTIPLE_SIGNATURES);
             assertEquals(jsonProducer.getSignatureEntries().get(1).toJson().length(),
                     SECOND_SIGNATURE_ENTRY_MULTIPLE_SIGNATURES.length());
 
-            JoseHeaders thirdSignerProtectedHeader = new JoseHeaders();
-            thirdSignerProtectedHeader.setAlgorithm(AlgorithmUtils.HMAC_SHA_256_ALGO);
+            JwsHeaders thirdSignerProtectedHeader = new JwsHeaders();
+            thirdSignerProtectedHeader.setSignatureAlgorithm(SignatureAlgorithm.HS256);
             thirdSignerProtectedHeader.setKeyId(HMAC_KID_VALUE);
             JsonWebKeys secretJwks = readKeySet("cookbookSecretSet.txt");
             List<JsonWebKey> secretKeys = secretJwks.getKeys();

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/test/java/org/apache/cxf/rs/security/jose/jwe/JwePbeHmacAesWrapTest.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/test/java/org/apache/cxf/rs/security/jose/jwe/JwePbeHmacAesWrapTest.java b/rt/rs/security/jose/src/test/java/org/apache/cxf/rs/security/jose/jwe/JwePbeHmacAesWrapTest.java
index 3cca584..56cd65a 100644
--- a/rt/rs/security/jose/src/test/java/org/apache/cxf/rs/security/jose/jwe/JwePbeHmacAesWrapTest.java
+++ b/rt/rs/security/jose/src/test/java/org/apache/cxf/rs/security/jose/jwe/JwePbeHmacAesWrapTest.java
@@ -20,7 +20,6 @@ package org.apache.cxf.rs.security.jose.jwe;
 
 import java.security.Security;
 
-import org.apache.cxf.rs.security.jose.jwa.AlgorithmUtils;
 import org.apache.cxf.rs.security.jose.jwa.ContentAlgorithm;
 import org.apache.cxf.rs.security.jose.jwa.KeyAlgorithm;
 import org.bouncycastle.jce.provider.BouncyCastleProvider;
@@ -59,7 +58,7 @@ public class JwePbeHmacAesWrapTest extends Assert {
     public void testEncryptDecryptPbesHmacAesWrapAesGcm() throws Exception {
         final String specPlainText = "Live long and prosper.";
         JweHeaders headers = new JweHeaders();
-        headers.setAlgorithm(AlgorithmUtils.PBES2_HS256_A128KW_ALGO);
+        headers.setKeyEncryptionAlgorithm(KeyAlgorithm.PBES2_HS256_A128KW);
         headers.setContentEncryptionAlgorithm(ContentAlgorithm.A128GCM);
         final String password = "Thus from my lips, by yours, my sin is purged."; 
         KeyEncryptionProvider keyEncryption = 

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/test/java/org/apache/cxf/rs/security/jose/jws/JwsCompactHeaderTest.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/test/java/org/apache/cxf/rs/security/jose/jws/JwsCompactHeaderTest.java b/rt/rs/security/jose/src/test/java/org/apache/cxf/rs/security/jose/jws/JwsCompactHeaderTest.java
index 4894811..39c6d3c 100644
--- a/rt/rs/security/jose/src/test/java/org/apache/cxf/rs/security/jose/jws/JwsCompactHeaderTest.java
+++ b/rt/rs/security/jose/src/test/java/org/apache/cxf/rs/security/jose/jws/JwsCompactHeaderTest.java
@@ -21,7 +21,6 @@ package org.apache.cxf.rs.security.jose.jws;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.cxf.rs.security.jose.jwa.AlgorithmUtils;
 import org.apache.cxf.rs.security.jose.jwa.SignatureAlgorithm;
 
 import org.junit.Assert;
@@ -166,10 +165,10 @@ public class JwsCompactHeaderTest extends Assert {
         String criticalValue2 = "criticalValue2";
         String criticalValue3 = "criticalValue3";
         JwsCompactProducer producer = new JwsCompactProducer(payload);
-        producer.getJoseHeaders().setAlgorithm(AlgorithmUtils.HMAC_SHA_512_ALGO);
+        producer.getJwsHeaders().setSignatureAlgorithm(SignatureAlgorithm.HS512);
         List<String> criticalHeader = new ArrayList<String>();
         criticalHeader.add(criticalParameter1);
-        producer.getJoseHeaders().setCritical(criticalHeader);
+        producer.getJwsHeaders().setCritical(criticalHeader);
         producer.signWith(new HmacJwsSignatureProvider(ENCODED_MAC_KEY, SignatureAlgorithm.HS256));
         String signedJws = producer.getSignedEncodedJws();
         JwsCompactConsumer consumer = new JwsCompactConsumer(signedJws);
@@ -178,11 +177,11 @@ public class JwsCompactHeaderTest extends Assert {
         criticalHeader.add(criticalParameter2);
         criticalHeader.add(criticalParameter3);
         producer = new JwsCompactProducer(payload);
-        producer.getJoseHeaders().setAlgorithm(AlgorithmUtils.HMAC_SHA_512_ALGO);
-        producer.getJoseHeaders().setCritical(criticalHeader);
-        producer.getJoseHeaders().setHeader(criticalParameter1, criticalValue1);
-        producer.getJoseHeaders().setHeader(criticalParameter2, criticalValue2);
-        producer.getJoseHeaders().setHeader(criticalParameter3, criticalValue3);
+        producer.getJwsHeaders().setSignatureAlgorithm(SignatureAlgorithm.HS512);
+        producer.getJwsHeaders().setCritical(criticalHeader);
+        producer.getJwsHeaders().setHeader(criticalParameter1, criticalValue1);
+        producer.getJwsHeaders().setHeader(criticalParameter2, criticalValue2);
+        producer.getJwsHeaders().setHeader(criticalParameter3, criticalValue3);
         producer.signWith(new HmacJwsSignatureProvider(ENCODED_MAC_KEY, SignatureAlgorithm.HS256));
         signedJws = producer.getSignedEncodedJws();
         consumer = new JwsCompactConsumer(signedJws);
@@ -192,9 +191,9 @@ public class JwsCompactHeaderTest extends Assert {
         criticalHeader.add(criticalParameter);
         criticalHeader.add(criticalParameter);
         producer = new JwsCompactProducer(payload);
-        producer.getJoseHeaders().setAlgorithm(AlgorithmUtils.HMAC_SHA_512_ALGO);
-        producer.getJoseHeaders().setHeader(criticalParameter, criticalValue);
-        producer.getJoseHeaders().setCritical(criticalHeader);
+        producer.getJwsHeaders().setSignatureAlgorithm(SignatureAlgorithm.HS512);
+        producer.getJwsHeaders().setHeader(criticalParameter, criticalValue);
+        producer.getJwsHeaders().setCritical(criticalHeader);
         producer.signWith(new HmacJwsSignatureProvider(ENCODED_MAC_KEY, SignatureAlgorithm.HS256));
         signedJws = producer.getSignedEncodedJws();
         consumer = new JwsCompactConsumer(signedJws);

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/test/java/org/apache/cxf/rs/security/jose/jws/JwsCompactReaderWriterTest.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/test/java/org/apache/cxf/rs/security/jose/jws/JwsCompactReaderWriterTest.java b/rt/rs/security/jose/src/test/java/org/apache/cxf/rs/security/jose/jws/JwsCompactReaderWriterTest.java
index d2367b1..49bacd9 100644
--- a/rt/rs/security/jose/src/test/java/org/apache/cxf/rs/security/jose/jws/JwsCompactReaderWriterTest.java
+++ b/rt/rs/security/jose/src/test/java/org/apache/cxf/rs/security/jose/jws/JwsCompactReaderWriterTest.java
@@ -31,7 +31,6 @@ import java.util.Map;
 import org.apache.cxf.rs.security.jose.JoseConstants;
 import org.apache.cxf.rs.security.jose.JoseHeaders;
 import org.apache.cxf.rs.security.jose.JoseType;
-import org.apache.cxf.rs.security.jose.jwa.AlgorithmUtils;
 import org.apache.cxf.rs.security.jose.jwa.SignatureAlgorithm;
 import org.apache.cxf.rs.security.jose.jwk.JsonWebKey;
 import org.apache.cxf.rs.security.jose.jwk.KeyOperation;
@@ -97,9 +96,9 @@ public class JwsCompactReaderWriterTest extends Assert {
         "x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0";
     @Test
     public void testWriteJwsSignedByMacSpecExample() throws Exception {
-        JoseHeaders headers = new JoseHeaders();
+        JwsHeaders headers = new JwsHeaders();
         headers.setType(JoseType.JWT);
-        headers.setAlgorithm(SignatureAlgorithm.HS256.getJwaName());
+        headers.setSignatureAlgorithm(SignatureAlgorithm.HS256);
         JwsCompactProducer jws = initSpecJwtTokenWriter(headers);
         jws.signWith(new HmacJwsSignatureProvider(ENCODED_MAC_KEY, SignatureAlgorithm.HS256));
         
@@ -109,8 +108,8 @@ public class JwsCompactReaderWriterTest extends Assert {
     
     @Test
     public void testWriteReadJwsUnsigned() throws Exception {
-        JoseHeaders headers = new JoseHeaders(JoseType.JWT);
-        headers.setAlgorithm(AlgorithmUtils.PLAIN_TEXT_ALGO);
+        JwsHeaders headers = new JwsHeaders(JoseType.JWT);
+        headers.setSignatureAlgorithm(SignatureAlgorithm.NONE);
         
         JwtClaims claims = new JwtClaims();
         claims.setIssuer("https://jwt-idp.example.com");
@@ -136,9 +135,9 @@ public class JwsCompactReaderWriterTest extends Assert {
         assertTrue(jws.verifySignatureWith(new HmacJwsSignatureVerifier(ENCODED_MAC_KEY,
                                                                         SignatureAlgorithm.HS256)));
         JwtToken token = jws.getJwtToken();
-        JoseHeaders headers = token.getHeaders();
+        JwsHeaders headers = new JwsHeaders(token.getHeaders());
         assertEquals(JoseType.JWT, headers.getType());
-        assertEquals(SignatureAlgorithm.HS256.getJwaName(), headers.getAlgorithm());
+        assertEquals(SignatureAlgorithm.HS256, headers.getSignatureAlgorithm());
         validateSpecClaim(token.getClaims());
     }
     
@@ -184,9 +183,9 @@ public class JwsCompactReaderWriterTest extends Assert {
         assertTrue(jws.verifySignatureWith(new HmacJwsSignatureVerifier(ENCODED_MAC_KEY,
                                                                         SignatureAlgorithm.HS256)));
         JwtToken token = jws.getJwtToken();
-        JoseHeaders headers = token.getHeaders();
+        JwsHeaders headers = new JwsHeaders(token.getHeaders());
         assertEquals(JoseType.JWT, headers.getType());
-        assertEquals(SignatureAlgorithm.HS256.getJwaName(), headers.getAlgorithm());
+        assertEquals(SignatureAlgorithm.HS256, headers.getSignatureAlgorithm());
         
         JsonWebKey key = headers.getJsonWebKey();
         assertEquals(KeyType.OCTET, key.getKeyType());
@@ -206,8 +205,8 @@ public class JwsCompactReaderWriterTest extends Assert {
     
     @Test
     public void testWriteJwsSignedByPrivateKey() throws Exception {
-        JoseHeaders headers = new JoseHeaders();
-        headers.setAlgorithm(SignatureAlgorithm.RS256.getJwaName());
+        JwsHeaders headers = new JwsHeaders();
+        headers.setSignatureAlgorithm(SignatureAlgorithm.RS256);
         JwsCompactProducer jws = initSpecJwtTokenWriter(headers);
         PrivateKey key = CryptoUtils.getRSAPrivateKey(RSA_MODULUS_ENCODED, RSA_PRIVATE_EXPONENT_ENCODED);
         jws.signWith(new PrivateKeyJwsSignatureProvider(key, SignatureAlgorithm.RS256));
@@ -218,8 +217,8 @@ public class JwsCompactReaderWriterTest extends Assert {
     public void testJwsPsSha() throws Exception {
         Security.addProvider(new BouncyCastleProvider());    
         try {
-            JoseHeaders outHeaders = new JoseHeaders();
-            outHeaders.setAlgorithm(AlgorithmUtils.PS_SHA_256_ALGO);
+            JwsHeaders outHeaders = new JwsHeaders();
+            outHeaders.setSignatureAlgorithm(SignatureAlgorithm.PS256);
             JwsCompactProducer producer = initSpecJwtTokenWriter(outHeaders);
             PrivateKey privateKey = CryptoUtils.getRSAPrivateKey(RSA_MODULUS_ENCODED, RSA_PRIVATE_EXPONENT_ENCODED);
             String signed = producer.signWith(
@@ -229,8 +228,9 @@ public class JwsCompactReaderWriterTest extends Assert {
             RSAPublicKey key = CryptoUtils.getRSAPublicKey(RSA_MODULUS_ENCODED, RSA_PUBLIC_EXPONENT_ENCODED);
             assertTrue(jws.verifySignatureWith(new PublicKeyJwsSignatureVerifier(key, SignatureAlgorithm.PS256)));
             JwtToken token = jws.getJwtToken();
-            JoseHeaders inHeaders = token.getHeaders();
-            assertEquals(AlgorithmUtils.PS_SHA_256_ALGO, inHeaders.getAlgorithm());
+            JwsHeaders inHeaders = new JwsHeaders(token.getHeaders());
+            assertEquals(SignatureAlgorithm.PS256, 
+                         inHeaders.getSignatureAlgorithm());
             validateSpecClaim(token.getClaims());
         } finally {
             Security.removeProvider(BouncyCastleProvider.class.getName());
@@ -239,8 +239,8 @@ public class JwsCompactReaderWriterTest extends Assert {
     
     @Test
     public void testWriteReadJwsSignedByESPrivateKey() throws Exception {
-        JoseHeaders headers = new JoseHeaders();
-        headers.setAlgorithm(SignatureAlgorithm.ES256.getJwaName());
+        JwsHeaders headers = new JwsHeaders();
+        headers.setSignatureAlgorithm(SignatureAlgorithm.ES256);
         JwsCompactProducer jws = initSpecJwtTokenWriter(headers);
         ECPrivateKey privateKey = CryptoUtils.getECPrivateKey(JsonWebKey.EC_CURVE_P256,
                                                               EC_PRIVATE_KEY_ENCODED);
@@ -254,8 +254,8 @@ public class JwsCompactReaderWriterTest extends Assert {
         assertTrue(jwsConsumer.verifySignatureWith(new EcDsaJwsSignatureVerifier(publicKey,
                                                    SignatureAlgorithm.ES256)));
         JwtToken token = jwsConsumer.getJwtToken();
-        JoseHeaders headersReceived = token.getHeaders();
-        assertEquals(SignatureAlgorithm.ES256.getJwaName(), headersReceived.getAlgorithm());
+        JwsHeaders headersReceived = new JwsHeaders(token.getHeaders());
+        assertEquals(SignatureAlgorithm.ES256, headersReceived.getSignatureAlgorithm());
         validateSpecClaim(token.getClaims());
     }
     
@@ -265,8 +265,8 @@ public class JwsCompactReaderWriterTest extends Assert {
         RSAPublicKey key = CryptoUtils.getRSAPublicKey(RSA_MODULUS_ENCODED, RSA_PUBLIC_EXPONENT_ENCODED);
         assertTrue(jws.verifySignatureWith(new PublicKeyJwsSignatureVerifier(key, SignatureAlgorithm.RS256)));
         JwtToken token = jws.getJwtToken();
-        JoseHeaders headers = token.getHeaders();
-        assertEquals(SignatureAlgorithm.RS256.getJwaName(), headers.getAlgorithm());
+        JwsHeaders headers = new JwsHeaders(token.getHeaders());
+        assertEquals(SignatureAlgorithm.RS256, headers.getSignatureAlgorithm());
         validateSpecClaim(token.getClaims());
     }
     

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/test/java/org/apache/cxf/rs/security/jose/jws/JwsJsonProducerTest.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/test/java/org/apache/cxf/rs/security/jose/jws/JwsJsonProducerTest.java b/rt/rs/security/jose/src/test/java/org/apache/cxf/rs/security/jose/jws/JwsJsonProducerTest.java
index 00b8ed7..10742b2 100644
--- a/rt/rs/security/jose/src/test/java/org/apache/cxf/rs/security/jose/jws/JwsJsonProducerTest.java
+++ b/rt/rs/security/jose/src/test/java/org/apache/cxf/rs/security/jose/jws/JwsJsonProducerTest.java
@@ -17,8 +17,6 @@
  * under the License.
  */
 package org.apache.cxf.rs.security.jose.jws;
-import org.apache.cxf.rs.security.jose.JoseHeaders;
-import org.apache.cxf.rs.security.jose.jwa.AlgorithmUtils;
 import org.apache.cxf.rs.security.jose.jwa.SignatureAlgorithm;
 
 import org.junit.Assert;
@@ -72,8 +70,8 @@ public class JwsJsonProducerTest extends Assert {
     @Test
     public void testSignWithProtectedHeaderOnly() {
         JwsJsonProducer producer = new JwsJsonProducer(UNSIGNED_PLAIN_JSON_DOCUMENT);
-        JoseHeaders headerEntries = new JoseHeaders();
-        headerEntries.setAlgorithm(AlgorithmUtils.HMAC_SHA_256_ALGO);
+        JwsHeaders headerEntries = new JwsHeaders();
+        headerEntries.setSignatureAlgorithm(SignatureAlgorithm.HS256);
                
         producer.signWith(new HmacJwsSignatureProvider(ENCODED_MAC_KEY_1, SignatureAlgorithm.HS256),
                           headerEntries);
@@ -83,8 +81,8 @@ public class JwsJsonProducerTest extends Assert {
     @Test
     public void testSignWithProtectedHeaderOnlyFlat() {
         JwsJsonProducer producer = new JwsJsonProducer(UNSIGNED_PLAIN_JSON_DOCUMENT, true);
-        JoseHeaders headerEntries = new JoseHeaders();
-        headerEntries.setAlgorithm(AlgorithmUtils.HMAC_SHA_256_ALGO);
+        JwsHeaders headerEntries = new JwsHeaders();
+        headerEntries.setSignatureAlgorithm(SignatureAlgorithm.HS256);
                
         producer.signWith(new HmacJwsSignatureProvider(ENCODED_MAC_KEY_1, SignatureAlgorithm.HS256),
                           headerEntries);
@@ -94,8 +92,8 @@ public class JwsJsonProducerTest extends Assert {
     @Test
     public void testDualSignWithProtectedHeaderOnly() {
         JwsJsonProducer producer = new JwsJsonProducer(UNSIGNED_PLAIN_JSON_DOCUMENT);
-        JoseHeaders headerEntries = new JoseHeaders();
-        headerEntries.setAlgorithm(AlgorithmUtils.HMAC_SHA_256_ALGO);
+        JwsHeaders headerEntries = new JwsHeaders();
+        headerEntries.setSignatureAlgorithm(SignatureAlgorithm.HS256);
                
         producer.signWith(new HmacJwsSignatureProvider(ENCODED_MAC_KEY_1, SignatureAlgorithm.HS256),
                           headerEntries);


[3/3] cxf git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/cxf

Posted by se...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/cxf


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/4ac83c79
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/4ac83c79
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/4ac83c79

Branch: refs/heads/master
Commit: 4ac83c790de963fb5c4446aa7537a15e01a6120c
Parents: 536293b b532082
Author: Sergey Beryozkin <sb...@talend.com>
Authored: Wed Jul 22 22:38:03 2015 +0300
Committer: Sergey Beryozkin <sb...@talend.com>
Committed: Wed Jul 22 22:38:03 2015 +0300

----------------------------------------------------------------------
 .../main/java/org/apache/cxf/attachment/AttachmentUtil.java  | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
----------------------------------------------------------------------



[2/3] cxf git commit: making JoseHeaders abstract and its setAlgorithm protected with lots of related changes

Posted by se...@apache.org.
making JoseHeaders abstract and its setAlgorithm protected with lots of related changes


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/536293b5
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/536293b5
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/536293b5

Branch: refs/heads/master
Commit: 536293b5eb795c27a4521c6940c56377a4fa78f0
Parents: 8c4dab4
Author: Sergey Beryozkin <sb...@talend.com>
Authored: Wed Jul 22 22:37:32 2015 +0300
Committer: Sergey Beryozkin <sb...@talend.com>
Committed: Wed Jul 22 22:37:32 2015 +0300

----------------------------------------------------------------------
 .../cxf/rs/security/jose/JoseHeaders.java       |  6 +-
 .../security/jose/JoseHeadersReaderWriter.java  | 38 ----------
 .../jose/jaxrs/AbstractJwsReaderProvider.java   |  4 +-
 .../jose/jaxrs/AbstractJwsWriterProvider.java   |  3 +-
 .../jose/jaxrs/JwsClientResponseFilter.java     |  4 +-
 .../jose/jaxrs/JwsContainerRequestFilter.java   |  6 +-
 .../jose/jaxrs/JwsJsonWriterInterceptor.java    | 10 +--
 .../jose/jaxrs/JwsWriterInterceptor.java        |  6 +-
 .../jaxrs/JwtAuthenticationClientFilter.java    |  4 +-
 .../jose/jaxrs/JwtJwsAuthenticationFilter.java  |  4 +-
 .../rs/security/jose/jwa/AlgorithmUtils.java    |  2 +-
 .../security/jose/jwa/SignatureAlgorithm.java   |  5 +-
 .../jose/jwe/AbstractJweEncryption.java         |  8 +--
 .../security/jose/jwe/JweCompactConsumer.java   | 10 +--
 .../security/jose/jwe/JweCompactProducer.java   |  4 +-
 .../cxf/rs/security/jose/jwe/JweHeaders.java    |  4 +-
 .../rs/security/jose/jwe/JweJsonProducer.java   |  4 +-
 .../jose/jwe/JweJwtCompactProducer.java         |  7 +-
 .../cxf/rs/security/jose/jwe/JweUtils.java      |  2 +-
 .../PbesHmacAesWrapKeyDecryptionAlgorithm.java  |  2 +-
 .../jose/jws/AbstractJwsSignatureProvider.java  | 11 ++-
 .../jose/jws/HmacJwsSignatureProvider.java      |  7 +-
 .../jose/jws/HmacJwsSignatureVerifier.java      |  9 ++-
 .../security/jose/jws/JwsCompactConsumer.java   | 20 +++---
 .../security/jose/jws/JwsCompactProducer.java   | 25 ++++---
 .../rs/security/jose/jws/JwsJsonConsumer.java   |  9 ++-
 .../rs/security/jose/jws/JwsJsonProducer.java   | 18 ++---
 .../jose/jws/JwsJsonSignatureEntry.java         | 12 ++--
 .../jose/jws/JwsJwtCompactConsumer.java         | 10 ++-
 .../jose/jws/JwsJwtCompactProducer.java         |  3 +-
 .../cxf/rs/security/jose/jws/JwsUtils.java      | 19 ++---
 .../jose/jws/NoneJwsSignatureProvider.java      |  2 +-
 .../jose/jws/NoneJwsSignatureVerifier.java      |  5 +-
 .../jws/PrivateKeyJwsSignatureProvider.java     |  6 +-
 .../jose/jws/PublicKeyJwsSignatureVerifier.java |  6 +-
 .../cxf/rs/security/jose/jwt/JwtTokenJson.java  | 37 ----------
 .../security/jose/jwt/JwtTokenReaderWriter.java | 21 +-----
 .../jose/cookbook/JwsJoseCookBookTest.java      | 75 ++++++++++----------
 .../jose/jwe/JwePbeHmacAesWrapTest.java         |  3 +-
 .../security/jose/jws/JwsCompactHeaderTest.java | 21 +++---
 .../jose/jws/JwsCompactReaderWriterTest.java    | 42 +++++------
 .../security/jose/jws/JwsJsonProducerTest.java  | 14 ++--
 42 files changed, 209 insertions(+), 299 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/JoseHeaders.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/JoseHeaders.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/JoseHeaders.java
index 66c7863..df7867d 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/JoseHeaders.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/JoseHeaders.java
@@ -26,7 +26,7 @@ import org.apache.cxf.helpers.CastUtils;
 import org.apache.cxf.jaxrs.provider.json.JsonMapObject;
 import org.apache.cxf.rs.security.jose.jwk.JsonWebKey;
 
-public class JoseHeaders extends JsonMapObject {
+public abstract class JoseHeaders extends JsonMapObject {
     public JoseHeaders() {
     }
     
@@ -61,11 +61,11 @@ public class JoseHeaders extends JsonMapObject {
         return (String)getHeader(JoseConstants.HEADER_CONTENT_TYPE);
     }
     
-    public void setAlgorithm(String algo) {
+    protected void setAlgorithm(String algo) {
         setHeader(JoseConstants.HEADER_ALGORITHM, algo);
     }
     
-    public String getAlgorithm() {
+    protected String getAlgorithm() {
         Object prop = getHeader(JoseConstants.HEADER_ALGORITHM);
         return prop == null ? null : prop.toString();
     }

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/JoseHeadersReaderWriter.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/JoseHeadersReaderWriter.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/JoseHeadersReaderWriter.java
deleted file mode 100644
index 37a0aa5..0000000
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/JoseHeadersReaderWriter.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.cxf.rs.security.jose;
-
-import org.apache.cxf.jaxrs.provider.json.JsonMapObjectReaderWriter;
-
-
-
-
-
-public class JoseHeadersReaderWriter extends JsonMapObjectReaderWriter {
-    public String headersToJson(JoseHeaders headers) {
-        return toJson(headers);
-    }
-    
-    public JoseHeaders fromJsonHeaders(String headersJson) {
-        JoseHeaders headers = new JoseHeaders();
-        fromJson(headers, headersJson);
-        return headers;
-    }
-    
-}

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/AbstractJwsReaderProvider.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/AbstractJwsReaderProvider.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/AbstractJwsReaderProvider.java
index 90d6c74..0e8b0d0 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/AbstractJwsReaderProvider.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/AbstractJwsReaderProvider.java
@@ -18,7 +18,7 @@
  */
 package org.apache.cxf.rs.security.jose.jaxrs;
 
-import org.apache.cxf.rs.security.jose.JoseHeaders;
+import org.apache.cxf.rs.security.jose.jws.JwsHeaders;
 import org.apache.cxf.rs.security.jose.jws.JwsSignatureVerifier;
 import org.apache.cxf.rs.security.jose.jws.JwsUtils;
 
@@ -30,7 +30,7 @@ public class AbstractJwsReaderProvider {
         this.sigVerifier = signatureVerifier;
     }
 
-    protected JwsSignatureVerifier getInitializedSigVerifier(JoseHeaders headers) {
+    protected JwsSignatureVerifier getInitializedSigVerifier(JwsHeaders headers) {
         if (sigVerifier != null) {
             return sigVerifier;    
         } 

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/AbstractJwsWriterProvider.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/AbstractJwsWriterProvider.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/AbstractJwsWriterProvider.java
index 02f5390..33ec0b0 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/AbstractJwsWriterProvider.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/AbstractJwsWriterProvider.java
@@ -27,6 +27,7 @@ import org.apache.cxf.helpers.IOUtils;
 import org.apache.cxf.rs.security.jose.JoseHeaders;
 import org.apache.cxf.rs.security.jose.JoseUtils;
 import org.apache.cxf.rs.security.jose.jws.JwsCompactProducer;
+import org.apache.cxf.rs.security.jose.jws.JwsHeaders;
 import org.apache.cxf.rs.security.jose.jws.JwsSignatureProvider;
 import org.apache.cxf.rs.security.jose.jws.JwsUtils;
 
@@ -37,7 +38,7 @@ public class AbstractJwsWriterProvider {
         this.sigProvider = signatureProvider;
     }
     
-    protected JwsSignatureProvider getInitializedSigProvider(JoseHeaders headers) {
+    protected JwsSignatureProvider getInitializedSigProvider(JwsHeaders headers) {
         setRequestContextProperty(headers);
         if (sigProvider != null) {
             return sigProvider;    

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwsClientResponseFilter.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwsClientResponseFilter.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwsClientResponseFilter.java
index e70bead..8b811ec 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwsClientResponseFilter.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwsClientResponseFilter.java
@@ -37,14 +37,14 @@ public class JwsClientResponseFilter extends AbstractJwsReaderProvider implement
     @Override
     public void filter(ClientRequestContext req, ClientResponseContext res) throws IOException {
         JwsCompactConsumer p = new JwsCompactConsumer(IOUtils.readStringFromStream(res.getEntityStream()));
-        JwsSignatureVerifier theSigVerifier = getInitializedSigVerifier(p.getJoseHeaders());
+        JwsSignatureVerifier theSigVerifier = getInitializedSigVerifier(p.getJwsHeaders());
         if (!p.verifySignatureWith(theSigVerifier)) {
             throw new JwsException(JwsException.Error.INVALID_SIGNATURE);
         }
         byte[] bytes = p.getDecodedJwsPayloadBytes();
         res.setEntityStream(new ByteArrayInputStream(bytes));
         res.getHeaders().putSingle("Content-Length", Integer.toString(bytes.length));
-        String ct = JoseUtils.checkContentType(p.getJoseHeaders().getContentType(), getDefaultMediaType());
+        String ct = JoseUtils.checkContentType(p.getJwsHeaders().getContentType(), getDefaultMediaType());
         if (ct != null) {
             res.getHeaders().putSingle("Content-Type", ct);
         }

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwsContainerRequestFilter.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwsContainerRequestFilter.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwsContainerRequestFilter.java
index 6eb15e4..8a3a069 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwsContainerRequestFilter.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwsContainerRequestFilter.java
@@ -42,17 +42,17 @@ public class JwsContainerRequestFilter extends AbstractJwsReaderProvider impleme
             return;
         }
         JwsCompactConsumer p = new JwsCompactConsumer(IOUtils.readStringFromStream(context.getEntityStream()));
-        JwsSignatureVerifier theSigVerifier = getInitializedSigVerifier(p.getJoseHeaders());
+        JwsSignatureVerifier theSigVerifier = getInitializedSigVerifier(p.getJwsHeaders());
         if (!p.verifySignatureWith(theSigVerifier)) {
             context.abortWith(JAXRSUtils.toResponse(400));
             return;
         }
-        JoseUtils.validateRequestContextProperty(p.getJoseHeaders());
+        JoseUtils.validateRequestContextProperty(p.getJwsHeaders());
         byte[] bytes = p.getDecodedJwsPayloadBytes();
         context.setEntityStream(new ByteArrayInputStream(bytes));
         context.getHeaders().putSingle("Content-Length", Integer.toString(bytes.length));
         
-        String ct = JoseUtils.checkContentType(p.getJoseHeaders().getContentType(), getDefaultMediaType());
+        String ct = JoseUtils.checkContentType(p.getJwsHeaders().getContentType(), getDefaultMediaType());
         if (ct != null) {
             context.getHeaders().putSingle("Content-Type", ct);
         }

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwsJsonWriterInterceptor.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwsJsonWriterInterceptor.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwsJsonWriterInterceptor.java
index 7f7435d..722ae59 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwsJsonWriterInterceptor.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwsJsonWriterInterceptor.java
@@ -33,10 +33,10 @@ import org.apache.cxf.common.util.Base64UrlOutputStream;
 import org.apache.cxf.common.util.Base64UrlUtility;
 import org.apache.cxf.common.util.StringUtils;
 import org.apache.cxf.io.CachedOutputStream;
+import org.apache.cxf.jaxrs.provider.json.JsonMapObjectReaderWriter;
 import org.apache.cxf.jaxrs.utils.JAXRSUtils;
 import org.apache.cxf.rs.security.jose.JoseConstants;
 import org.apache.cxf.rs.security.jose.JoseHeaders;
-import org.apache.cxf.rs.security.jose.JoseHeadersReaderWriter;
 import org.apache.cxf.rs.security.jose.jws.JwsHeaders;
 import org.apache.cxf.rs.security.jose.jws.JwsJsonOutputStream;
 import org.apache.cxf.rs.security.jose.jws.JwsJsonProducer;
@@ -45,7 +45,7 @@ import org.apache.cxf.rs.security.jose.jws.JwsSignatureProvider;
 
 @Priority(Priorities.JWS_WRITE_PRIORITY)
 public class JwsJsonWriterInterceptor extends AbstractJwsJsonWriterProvider implements WriterInterceptor {
-    private JoseHeadersReaderWriter writer = new JoseHeadersReaderWriter();
+    private JsonMapObjectReaderWriter writer = new JsonMapObjectReaderWriter();
     private boolean contentTypeRequired = true;
     private boolean useJwsOutputStream;
     @Override
@@ -82,7 +82,7 @@ public class JwsJsonWriterInterceptor extends AbstractJwsJsonWriterProvider impl
             ctx.proceed();
             JwsJsonProducer p = new JwsJsonProducer(new String(cos.getBytes(), "UTF-8"));
             for (JwsSignatureProvider signer : sigProviders) {
-                JoseHeaders protectedHeader = prepareProtectedHeader(ctx, signer);
+                JwsHeaders protectedHeader = prepareProtectedHeader(ctx, signer);
                 p.signWith(signer, protectedHeader, null);    
             }
             ctx.setMediaType(JAXRSUtils.toMediaType(JoseConstants.MEDIA_TYPE_JOSE_JSON));
@@ -92,9 +92,9 @@ public class JwsJsonWriterInterceptor extends AbstractJwsJsonWriterProvider impl
     }
     
     private JwsHeaders prepareProtectedHeader(WriterInterceptorContext ctx, 
-                                                          JwsSignatureProvider signer) {
+                                              JwsSignatureProvider signer) {
         JwsHeaders headers = new JwsHeaders();
-        headers.setAlgorithm(signer.getAlgorithm().getJwaName());
+        headers.setSignatureAlgorithm(signer.getAlgorithm());
         setContentTypeIfNeeded(headers, ctx);
         return headers;
     }

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwsWriterInterceptor.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwsWriterInterceptor.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwsWriterInterceptor.java
index 52a09d1..5deaceb 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwsWriterInterceptor.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwsWriterInterceptor.java
@@ -31,10 +31,10 @@ import org.apache.cxf.common.util.Base64UrlOutputStream;
 import org.apache.cxf.common.util.Base64UrlUtility;
 import org.apache.cxf.common.util.StringUtils;
 import org.apache.cxf.io.CachedOutputStream;
+import org.apache.cxf.jaxrs.provider.json.JsonMapObjectReaderWriter;
 import org.apache.cxf.jaxrs.utils.JAXRSUtils;
 import org.apache.cxf.rs.security.jose.JoseConstants;
 import org.apache.cxf.rs.security.jose.JoseHeaders;
-import org.apache.cxf.rs.security.jose.JoseHeadersReaderWriter;
 import org.apache.cxf.rs.security.jose.jws.JwsCompactProducer;
 import org.apache.cxf.rs.security.jose.jws.JwsHeaders;
 import org.apache.cxf.rs.security.jose.jws.JwsOutputStream;
@@ -45,7 +45,7 @@ import org.apache.cxf.rs.security.jose.jws.JwsSignatureProvider;
 public class JwsWriterInterceptor extends AbstractJwsWriterProvider implements WriterInterceptor {
     private boolean contentTypeRequired = true;
     private boolean useJwsOutputStream;
-    private JoseHeadersReaderWriter writer = new JoseHeadersReaderWriter();
+    private JsonMapObjectReaderWriter writer = new JsonMapObjectReaderWriter();
     @Override
     public void aroundWriteTo(WriterInterceptorContext ctx) throws IOException, WebApplicationException {
         if (ctx.getEntity() == null) {
@@ -59,7 +59,7 @@ public class JwsWriterInterceptor extends AbstractJwsWriterProvider implements W
         if (useJwsOutputStream) {
             JwsSignature jwsSignature = sigProvider.createJwsSignature(headers);
             JwsOutputStream jwsStream = new JwsOutputStream(actualOs, jwsSignature);
-            byte[] headerBytes = StringUtils.toBytesUTF8(writer.headersToJson(headers));
+            byte[] headerBytes = StringUtils.toBytesUTF8(writer.toJson(headers));
             Base64UrlUtility.encodeAndStream(headerBytes, 0, headerBytes.length, jwsStream);
             jwsStream.write(new byte[]{'.'});
                         

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwtAuthenticationClientFilter.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwtAuthenticationClientFilter.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwtAuthenticationClientFilter.java
index 167d763..ecfe44f 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwtAuthenticationClientFilter.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwtAuthenticationClientFilter.java
@@ -30,8 +30,8 @@ import org.apache.cxf.common.util.Base64UrlUtility;
 import org.apache.cxf.configuration.security.AuthorizationPolicy;
 import org.apache.cxf.jaxrs.utils.JAXRSUtils;
 import org.apache.cxf.rs.security.jose.JoseException;
-import org.apache.cxf.rs.security.jose.JoseHeaders;
 import org.apache.cxf.rs.security.jose.JoseUtils;
+import org.apache.cxf.rs.security.jose.jwe.JweHeaders;
 import org.apache.cxf.rs.security.jose.jwt.AbstractJoseJwtProducer;
 import org.apache.cxf.rs.security.jose.jwt.JwtClaims;
 import org.apache.cxf.rs.security.jose.jwt.JwtToken;
@@ -53,7 +53,7 @@ public class JwtAuthenticationClientFilter extends AbstractJoseJwtProducer
                 claims.setSubject(ap.getUserName());
                 claims.setClaim("password", ap.getPassword());
                 claims.setIssuedAt(System.currentTimeMillis() / 1000);
-                jwt = new JwtToken(new JoseHeaders(), claims);
+                jwt = new JwtToken(new JweHeaders(), claims);
                 jweRequired = true;
             }
         }

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwtJwsAuthenticationFilter.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwtJwsAuthenticationFilter.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwtJwsAuthenticationFilter.java
index 63b18a8..e495104 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwtJwsAuthenticationFilter.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwtJwsAuthenticationFilter.java
@@ -49,7 +49,7 @@ public class JwtJwsAuthenticationFilter extends AbstractJwsReaderProvider implem
         }
         
         JwsJwtCompactConsumer p = new JwsJwtCompactConsumer(schemeData[1]);
-        JwsSignatureVerifier theSigVerifier = getInitializedSigVerifier(p.getJoseHeaders());
+        JwsSignatureVerifier theSigVerifier = getInitializedSigVerifier(p.getJwsHeaders());
         if (!p.verifySignatureWith(theSigVerifier)) {
             context.abortWith(JAXRSUtils.toResponse(400));
             return;
@@ -61,7 +61,7 @@ public class JwtJwsAuthenticationFilter extends AbstractJwsReaderProvider implem
         
     }
     protected void setRequestContextProperty(Message m, JwsCompactConsumer c) {
-        Object headerContext = c.getJoseHeaders().getHeader(JWS_CONTEXT_PROPERTY);
+        Object headerContext = c.getJwsHeaders().getHeader(JWS_CONTEXT_PROPERTY);
         if (headerContext != null) {
             m.put(JWS_CONTEXT_PROPERTY, headerContext);
         }

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwa/AlgorithmUtils.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwa/AlgorithmUtils.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwa/AlgorithmUtils.java
index f505caa..76854ca 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwa/AlgorithmUtils.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwa/AlgorithmUtils.java
@@ -79,7 +79,7 @@ public final class AlgorithmUtils {
     public static final String ES_SHA_256_ALGO = "ES256";
     public static final String ES_SHA_384_ALGO = "ES384";
     public static final String ES_SHA_512_ALGO = "ES512";
-    public static final String PLAIN_TEXT_ALGO = "none";
+    public static final String NONE_TEXT_ALGO = "none";
     // Java
     public static final String HMAC_SHA_256_JAVA = "HmacSHA256";
     public static final String HMAC_SHA_384_JAVA = "HmacSHA384";

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwa/SignatureAlgorithm.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwa/SignatureAlgorithm.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwa/SignatureAlgorithm.java
index 1e88df0..fe6418a 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwa/SignatureAlgorithm.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwa/SignatureAlgorithm.java
@@ -39,7 +39,7 @@ public enum SignatureAlgorithm {
     ES384(AlgorithmUtils.ES_SHA_384_ALGO, AlgorithmUtils.ES_SHA_384_JAVA, 384),
     ES512(AlgorithmUtils.ES_SHA_512_ALGO, AlgorithmUtils.ES_SHA_512_JAVA, 512),
     
-    PLAIN(AlgorithmUtils.PLAIN_TEXT_ALGO, null, -1);
+    NONE(AlgorithmUtils.NONE_TEXT_ALGO, null, -1);
     
     
     private final String jwaName;
@@ -72,6 +72,9 @@ public enum SignatureAlgorithm {
         if (algo == null) {
             return null;
         }
+        if (AlgorithmUtils.NONE_TEXT_ALGO.equals(algo)) {
+            return NONE;
+        }
         return SignatureAlgorithm.valueOf(algo.replace('-', '_')
                                         .replace('+', '_'));
         

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/AbstractJweEncryption.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/AbstractJweEncryption.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/AbstractJweEncryption.java
index 20b8eae..3edaeee 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/AbstractJweEncryption.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/AbstractJweEncryption.java
@@ -27,8 +27,8 @@ import javax.crypto.Cipher;
 import javax.crypto.SecretKey;
 
 import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.jaxrs.provider.json.JsonMapObjectReaderWriter;
 import org.apache.cxf.rs.security.jose.JoseConstants;
-import org.apache.cxf.rs.security.jose.JoseHeadersReaderWriter;
 import org.apache.cxf.rs.security.jose.jwa.AlgorithmUtils;
 import org.apache.cxf.rs.security.jose.jwa.ContentAlgorithm;
 import org.apache.cxf.rs.security.jose.jwa.KeyAlgorithm;
@@ -40,7 +40,7 @@ public abstract class AbstractJweEncryption implements JweEncryptionProvider {
     protected static final int DEFAULT_AUTH_TAG_LENGTH = 128;
     private ContentEncryptionProvider contentEncryptionAlgo;
     private KeyEncryptionProvider keyEncryptionAlgo;
-    private JoseHeadersReaderWriter writer = new JoseHeadersReaderWriter();
+    private JsonMapObjectReaderWriter writer = new JsonMapObjectReaderWriter();
     protected AbstractJweEncryption(ContentEncryptionProvider contentEncryptionAlgo,
                                     KeyEncryptionProvider keyEncryptionAlgo) {
         this.keyEncryptionAlgo = keyEncryptionAlgo;
@@ -150,7 +150,7 @@ public abstract class AbstractJweEncryption implements JweEncryptionProvider {
     public ContentAlgorithm getContentAlgorithm() {
         return getContentEncryptionAlgorithm().getAlgorithm();
     }
-    protected JoseHeadersReaderWriter getJwtHeadersWriter() {
+    protected JsonMapObjectReaderWriter getJwtHeadersWriter() {
         return writer;
     }
     
@@ -209,7 +209,7 @@ public abstract class AbstractJweEncryption implements JweEncryptionProvider {
             getEncryptedContentEncryptionKey(theHeaders, theCek);
         
         
-        String protectedHeadersJson = writer.headersToJson(protectedHeaders);
+        String protectedHeadersJson = writer.toJson(protectedHeaders);
         
         byte[] additionalEncryptionParam = getAAD(protectedHeadersJson, 
                                                   jweInput == null ? null : jweInput.getAad());

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweCompactConsumer.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweCompactConsumer.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweCompactConsumer.java
index cd34c7c..9371726 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweCompactConsumer.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweCompactConsumer.java
@@ -25,9 +25,9 @@ import java.util.logging.Logger;
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.common.util.Base64Exception;
 import org.apache.cxf.common.util.Base64UrlUtility;
+import org.apache.cxf.jaxrs.provider.json.JsonMapObject;
+import org.apache.cxf.jaxrs.provider.json.JsonMapObjectReaderWriter;
 import org.apache.cxf.rs.security.jose.JoseException;
-import org.apache.cxf.rs.security.jose.JoseHeaders;
-import org.apache.cxf.rs.security.jose.JoseHeadersReaderWriter;
 import org.apache.cxf.rs.security.jose.JoseUtils;
 
 
@@ -46,13 +46,13 @@ public class JweCompactConsumer {
             byte[] initVector = Base64UrlUtility.decode(parts[2]);
             byte[] encryptedContent = Base64UrlUtility.decode(parts[3]);
             byte[] authTag = Base64UrlUtility.decode(parts[4]);
-            JoseHeadersReaderWriter reader = new JoseHeadersReaderWriter();
-            JoseHeaders joseHeaders = reader.fromJsonHeaders(headersJson);
+            JsonMapObjectReaderWriter reader = new JsonMapObjectReaderWriter();
+            JsonMapObject joseHeaders = reader.fromJsonToJsonObject(headersJson);
             if (joseHeaders.getUpdateCount() != null) { 
                 LOG.warning("Duplicate headers have been detected");
                 throw new JweException(JweException.Error.INVALID_COMPACT_JWE);
             }
-            JweHeaders jweHeaders = new JweHeaders(joseHeaders);
+            JweHeaders jweHeaders = new JweHeaders(joseHeaders.asMap());
             jweDecryptionInput = new JweDecryptionInput(encryptedCEK,
                                                         initVector, 
                                                         encryptedContent,

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweCompactProducer.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweCompactProducer.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweCompactProducer.java
index a261d54..53e7ec3 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweCompactProducer.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweCompactProducer.java
@@ -24,7 +24,7 @@ import java.io.OutputStream;
 
 import org.apache.cxf.common.util.Base64UrlUtility;
 import org.apache.cxf.common.util.StringUtils;
-import org.apache.cxf.rs.security.jose.JoseHeadersReaderWriter;
+import org.apache.cxf.jaxrs.provider.json.JsonMapObjectReaderWriter;
 
 
 public class JweCompactProducer {
@@ -85,7 +85,7 @@ public class JweCompactProducer {
                                cipherInitVector);
     }
     private static String getHeadersJson(JweHeaders headers) {
-        return new JoseHeadersReaderWriter().headersToJson(headers);
+        return new JsonMapObjectReaderWriter().toJson(headers);
         
     }
     public static StringBuilder startJweContent(StringBuilder sb,

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweHeaders.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweHeaders.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweHeaders.java
index b287df5..e276ce2 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweHeaders.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweHeaders.java
@@ -23,9 +23,9 @@ import java.util.Map;
 
 import org.apache.cxf.common.util.Base64UrlUtility;
 import org.apache.cxf.common.util.StringUtils;
+import org.apache.cxf.jaxrs.provider.json.JsonMapObjectReaderWriter;
 import org.apache.cxf.rs.security.jose.JoseConstants;
 import org.apache.cxf.rs.security.jose.JoseHeaders;
-import org.apache.cxf.rs.security.jose.JoseHeadersReaderWriter;
 import org.apache.cxf.rs.security.jose.JoseType;
 import org.apache.cxf.rs.security.jose.jwa.ContentAlgorithm;
 import org.apache.cxf.rs.security.jose.jwa.KeyAlgorithm;
@@ -100,7 +100,7 @@ public class JweHeaders extends JoseHeaders {
         return (JoseHeaders)super.setHeader(name, value);
     }
     public byte[] toCipherAdditionalAuthData() { 
-        return toCipherAdditionalAuthData(new JoseHeadersReaderWriter().headersToJson(this));
+        return toCipherAdditionalAuthData(new JsonMapObjectReaderWriter().toJson(this));
     }
     public static byte[] toCipherAdditionalAuthData(String headersJson) { 
         byte[] headerBytes = StringUtils.toBytesUTF8(headersJson);

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweJsonProducer.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweJsonProducer.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweJsonProducer.java
index 4fbf737..ba5365e 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweJsonProducer.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweJsonProducer.java
@@ -29,12 +29,12 @@ import java.util.logging.Logger;
 
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.common.util.Base64UrlUtility;
+import org.apache.cxf.jaxrs.provider.json.JsonMapObjectReaderWriter;
 import org.apache.cxf.rs.security.jose.JoseConstants;
-import org.apache.cxf.rs.security.jose.JoseHeadersReaderWriter;
 
 public class JweJsonProducer {
     protected static final Logger LOG = LogUtils.getL7dLogger(JweJsonProducer.class);
-    private JoseHeadersReaderWriter writer = new JoseHeadersReaderWriter();
+    private JsonMapObjectReaderWriter writer = new JsonMapObjectReaderWriter();
     private JweHeaders protectedHeader;
     private JweHeaders unprotectedHeader;
     private byte[] content;

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweJwtCompactProducer.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweJwtCompactProducer.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweJwtCompactProducer.java
index ad4ad08..98702b4 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweJwtCompactProducer.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweJwtCompactProducer.java
@@ -22,7 +22,6 @@ import java.security.interfaces.RSAPublicKey;
 import javax.crypto.SecretKey;
 
 import org.apache.cxf.common.util.StringUtils;
-import org.apache.cxf.rs.security.jose.JoseHeaders;
 import org.apache.cxf.rs.security.jose.jwk.JsonWebKey;
 import org.apache.cxf.rs.security.jose.jwt.JwtClaims;
 import org.apache.cxf.rs.security.jose.jwt.JwtToken;
@@ -33,12 +32,12 @@ public class JweJwtCompactProducer  {
     private JweHeaders headers;
     private String claimsJson;
     public JweJwtCompactProducer(JwtToken token) {
-        this(token.getHeaders(), token.getClaims());
+        this(new JweHeaders(token.getHeaders()), token.getClaims());
     }
     public JweJwtCompactProducer(JwtClaims claims) {
-        this(new JoseHeaders(), claims);
+        this(new JweHeaders(), claims);
     }
-    public JweJwtCompactProducer(JoseHeaders joseHeaders, JwtClaims claims) {
+    public JweJwtCompactProducer(JweHeaders joseHeaders, JwtClaims claims) {
         headers = new JweHeaders(joseHeaders);
         claimsJson = JwtUtils.claimsToJson(claims);
     }

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweUtils.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweUtils.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweUtils.java
index 065091a..5c79dbf 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweUtils.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweUtils.java
@@ -541,7 +541,7 @@ public final class JweUtils {
                                                 String compression) {
         JweHeaders headers = new JweHeaders();
         if (keyEncryptionAlgo != null) {
-            headers.setAlgorithm(keyEncryptionAlgo);
+            headers.setKeyEncryptionAlgorithm(KeyAlgorithm.getAlgorithm(keyEncryptionAlgo));
         }
         headers.setContentEncryptionAlgorithm(ContentAlgorithm.getAlgorithm(contentEncryptionAlgo));
         if (compression != null) {

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/PbesHmacAesWrapKeyDecryptionAlgorithm.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/PbesHmacAesWrapKeyDecryptionAlgorithm.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/PbesHmacAesWrapKeyDecryptionAlgorithm.java
index 80fd2db..9770ae9 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/PbesHmacAesWrapKeyDecryptionAlgorithm.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/PbesHmacAesWrapKeyDecryptionAlgorithm.java
@@ -51,7 +51,7 @@ public class PbesHmacAesWrapKeyDecryptionAlgorithm implements KeyDecryptionAlgor
         JweHeaders jweHeaders = jweDecryptionInput.getJweHeaders();
         byte[] saltInput = getDecodedBytes(jweHeaders.getHeader("p2s"));
         int pbesCount = jweHeaders.getIntegerHeader("p2c");
-        String keyAlgoJwt = jweHeaders.getAlgorithm();
+        String keyAlgoJwt = jweHeaders.getKeyEncryptionAlgorithm().getJwaName();
         int keySize = PbesHmacAesWrapKeyEncryptionAlgorithm.getKeySize(keyAlgoJwt);
         byte[] derivedKey = PbesHmacAesWrapKeyEncryptionAlgorithm
             .createDerivedKey(keyAlgoJwt, keySize, password, saltInput, pbesCount);

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/AbstractJwsSignatureProvider.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/AbstractJwsSignatureProvider.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/AbstractJwsSignatureProvider.java
index 812c037..df400fa 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/AbstractJwsSignatureProvider.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/AbstractJwsSignatureProvider.java
@@ -21,7 +21,6 @@ package org.apache.cxf.rs.security.jose.jws;
 import java.util.logging.Logger;
 
 import org.apache.cxf.common.logging.LogUtils;
-import org.apache.cxf.rs.security.jose.JoseHeaders;
 import org.apache.cxf.rs.security.jose.jwa.SignatureAlgorithm;
 
 
@@ -37,12 +36,12 @@ public abstract class AbstractJwsSignatureProvider implements JwsSignatureProvid
         if (headers == null) {
             headers = new JwsHeaders();
         }
-        String algo = headers.getAlgorithm();
-        if (algo != null) {
-            checkAlgorithm(algo);
+        SignatureAlgorithm sigAlgo = headers.getSignatureAlgorithm();
+        if (sigAlgo != null) {
+            checkAlgorithm(sigAlgo.getJwaName());
         } else {
             checkAlgorithm(algorithm.getJwaName());
-            headers.setAlgorithm(algorithm.getJwaName());
+            headers.setSignatureAlgorithm(algorithm);
         }
         return headers;
     }
@@ -61,7 +60,7 @@ public abstract class AbstractJwsSignatureProvider implements JwsSignatureProvid
         return doCreateJwsSignature(prepareHeaders(headers));
     }
     
-    protected abstract JwsSignature doCreateJwsSignature(JoseHeaders headers);
+    protected abstract JwsSignature doCreateJwsSignature(JwsHeaders headers);
     
     protected void checkAlgorithm(String algo) {
         if (algo == null) {

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/HmacJwsSignatureProvider.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/HmacJwsSignatureProvider.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/HmacJwsSignatureProvider.java
index 0c88113..ce1db97 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/HmacJwsSignatureProvider.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/HmacJwsSignatureProvider.java
@@ -24,7 +24,6 @@ import javax.crypto.Mac;
 
 import org.apache.cxf.common.util.Base64Exception;
 import org.apache.cxf.common.util.Base64UrlUtility;
-import org.apache.cxf.rs.security.jose.JoseHeaders;
 import org.apache.cxf.rs.security.jose.jwa.AlgorithmUtils;
 import org.apache.cxf.rs.security.jose.jwa.SignatureAlgorithm;
 import org.apache.cxf.rt.security.crypto.HmacUtils;
@@ -51,8 +50,10 @@ public class HmacJwsSignatureProvider extends AbstractJwsSignatureProvider {
         }
     }
     
-    protected JwsSignature doCreateJwsSignature(JoseHeaders headers) {
-        final Mac mac = HmacUtils.getInitializedMac(key, AlgorithmUtils.toJavaName(headers.getAlgorithm()),
+    protected JwsSignature doCreateJwsSignature(JwsHeaders headers) {
+        final String sigAlgo = headers.getSignatureAlgorithm().getJwaName();
+        final Mac mac = HmacUtils.getInitializedMac(key, 
+                                                    AlgorithmUtils.toJavaName(sigAlgo),
                                                     hmacSpec);
         return new JwsSignature() {
 

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/HmacJwsSignatureVerifier.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/HmacJwsSignatureVerifier.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/HmacJwsSignatureVerifier.java
index e0a4c68..69643da 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/HmacJwsSignatureVerifier.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/HmacJwsSignatureVerifier.java
@@ -57,17 +57,20 @@ public class HmacJwsSignatureVerifier implements JwsSignatureVerifier {
     }
     
     private byte[] computeMac(JwsHeaders headers, String text) {
+        final String sigAlgo = checkAlgorithm(headers.getSignatureAlgorithm());
         return HmacUtils.computeHmac(key, 
-                                     AlgorithmUtils.toJavaName(checkAlgorithm(headers.getAlgorithm())),
+                                     AlgorithmUtils.toJavaName(sigAlgo),
                                      hmacSpec,
                                      text);
     }
     
-    protected String checkAlgorithm(String algo) {
-        if (algo == null) {
+    protected String checkAlgorithm(SignatureAlgorithm sigAlgo) {
+        
+        if (sigAlgo == null) {
             LOG.warning("Signature algorithm is not set");
             throw new JwsException(JwsException.Error.ALGORITHM_NOT_SET);
         }
+        String algo = sigAlgo.getJwaName();
         if (!AlgorithmUtils.isHmacSign(algo)
             || !algo.equals(supportedAlgo.getJwaName())) {
             LOG.warning("Invalid signature algorithm: " + algo);

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsCompactConsumer.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsCompactConsumer.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsCompactConsumer.java
index 2f860e4..4c721c5 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsCompactConsumer.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsCompactConsumer.java
@@ -24,15 +24,15 @@ import java.util.logging.Logger;
 
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.common.util.StringUtils;
-import org.apache.cxf.rs.security.jose.JoseHeaders;
-import org.apache.cxf.rs.security.jose.JoseHeadersReaderWriter;
+import org.apache.cxf.jaxrs.provider.json.JsonMapObject;
+import org.apache.cxf.jaxrs.provider.json.JsonMapObjectReaderWriter;
 import org.apache.cxf.rs.security.jose.JoseUtils;
 import org.apache.cxf.rs.security.jose.jwa.SignatureAlgorithm;
 import org.apache.cxf.rs.security.jose.jwk.JsonWebKey;
 
 public class JwsCompactConsumer {
     protected static final Logger LOG = LogUtils.getL7dLogger(JwsCompactConsumer.class);
-    private JoseHeadersReaderWriter reader = new JoseHeadersReaderWriter();
+    private JsonMapObjectReaderWriter reader = new JsonMapObjectReaderWriter();
     private String encodedSequence;
     private String encodedSignature;
     private String headersJson;
@@ -43,7 +43,7 @@ public class JwsCompactConsumer {
     public JwsCompactConsumer(String encodedJws, String encodedDetachedPayload) {
         this(encodedJws, encodedDetachedPayload, null);
     }
-    protected JwsCompactConsumer(String encodedJws, String encodedDetachedPayload, JoseHeadersReaderWriter r) {
+    protected JwsCompactConsumer(String encodedJws, String encodedDetachedPayload, JsonMapObjectReaderWriter r) {
         if (r != null) {
             this.reader = r;
         }
@@ -88,17 +88,17 @@ public class JwsCompactConsumer {
     public byte[] getDecodedSignature() {
         return encodedSignature.isEmpty() ? new byte[]{} : JoseUtils.decode(encodedSignature);
     }
-    public JwsHeaders getJoseHeaders() {
-        JoseHeaders joseHeaders = reader.fromJsonHeaders(headersJson);
+    public JwsHeaders getJwsHeaders() {
+        JsonMapObject joseHeaders = reader.fromJsonToJsonObject(headersJson);
         if (joseHeaders.getUpdateCount() != null) {
             LOG.warning("Duplicate headers have been detected");
             throw new JwsException(JwsException.Error.INVALID_COMPACT_JWS);
         }
-        return new JwsHeaders(joseHeaders);
+        return new JwsHeaders(joseHeaders.asMap());
     }
     public boolean verifySignatureWith(JwsSignatureVerifier validator) {
         try {
-            if (validator.verify(getJoseHeaders(), getUnsignedEncodedSequence(), getDecodedSignature())) {
+            if (validator.verify(getJwsHeaders(), getUnsignedEncodedSequence(), getDecodedSignature())) {
                 return true;
             }
         } catch (JwsException ex) {
@@ -123,9 +123,9 @@ public class JwsCompactConsumer {
         return verifySignatureWith(JwsUtils.getHmacSignatureVerifier(key, algo));
     }
     public boolean validateCriticalHeaders() {
-        return JwsUtils.validateCriticalHeaders(getJoseHeaders());
+        return JwsUtils.validateCriticalHeaders(getJwsHeaders());
     }
-    protected JoseHeadersReaderWriter getReader() {
+    protected JsonMapObjectReaderWriter getReader() {
         return reader;
     }
     

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsCompactProducer.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsCompactProducer.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsCompactProducer.java
index 6a549aa..20213ea 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsCompactProducer.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsCompactProducer.java
@@ -22,13 +22,12 @@ import java.security.PrivateKey;
 
 import org.apache.cxf.common.util.Base64UrlUtility;
 import org.apache.cxf.common.util.StringUtils;
-import org.apache.cxf.rs.security.jose.JoseHeadersReaderWriter;
-import org.apache.cxf.rs.security.jose.jwa.AlgorithmUtils;
+import org.apache.cxf.jaxrs.provider.json.JsonMapObjectReaderWriter;
 import org.apache.cxf.rs.security.jose.jwa.SignatureAlgorithm;
 import org.apache.cxf.rs.security.jose.jwk.JsonWebKey;
 
 public class JwsCompactProducer {
-    private JoseHeadersReaderWriter writer = new JoseHeadersReaderWriter();
+    private JsonMapObjectReaderWriter writer = new JsonMapObjectReaderWriter();
     private JwsHeaders headers;
     private String plainJwsPayload;
     private String signature;
@@ -38,14 +37,14 @@ public class JwsCompactProducer {
     public JwsCompactProducer(JwsHeaders headers, String plainJwsPayload) {
         this(headers, null, plainJwsPayload);
     }
-    protected JwsCompactProducer(JwsHeaders headers, JoseHeadersReaderWriter w, String plainJwsPayload) {
+    protected JwsCompactProducer(JwsHeaders headers, JsonMapObjectReaderWriter w, String plainJwsPayload) {
         this.headers = headers;
         if (w != null) {
             this.writer = w;
         }
         this.plainJwsPayload = plainJwsPayload;
     }
-    public JwsHeaders getJoseHeaders() {
+    public JwsHeaders getJwsHeaders() {
         if (headers == null) {
             headers = new JwsHeaders();
         }
@@ -56,7 +55,7 @@ public class JwsCompactProducer {
     }
     private String getUnsignedEncodedJws(boolean detached) {
         checkAlgorithm();
-        return Base64UrlUtility.encode(writer.headersToJson(getJoseHeaders())) 
+        return Base64UrlUtility.encode(writer.toJson(getJwsHeaders())) 
                + "." 
                + (detached ? "" : Base64UrlUtility.encode(plainJwsPayload));
     }
@@ -76,21 +75,21 @@ public class JwsCompactProducer {
     }
     public String signWith(JsonWebKey jwk) {
         return signWith(JwsUtils.getSignatureProvider(jwk, 
-                            SignatureAlgorithm.getAlgorithm(headers.getAlgorithm())));
+                        headers.getSignatureAlgorithm()));
     }
     
     public String signWith(PrivateKey key) {
         return signWith(JwsUtils.getPrivateKeySignatureProvider(key, 
-                                   SignatureAlgorithm.getAlgorithm(headers.getAlgorithm())));
+                                   headers.getSignatureAlgorithm()));
     }
     public String signWith(byte[] key) {
         return signWith(JwsUtils.getHmacSignatureProvider(key, 
-                   SignatureAlgorithm.getAlgorithm(headers.getAlgorithm())));
+                   headers.getSignatureAlgorithm()));
     }
     
     public String signWith(JwsSignatureProvider signer) {
         byte[] bytes = StringUtils.toBytesUTF8(getUnsignedEncodedJws());
-        byte[] sig = signer.sign(getJoseHeaders(), bytes);
+        byte[] sig = signer.sign(getJwsHeaders(), bytes);
         return setSignatureBytes(sig);
     }
     
@@ -108,10 +107,10 @@ public class JwsCompactProducer {
         this.signature = sig;
     }
     private boolean isPlainText() {
-        return AlgorithmUtils.PLAIN_TEXT_ALGO.equals(getAlgorithm());
+        return SignatureAlgorithm.NONE == getAlgorithm();
     }
-    private String getAlgorithm() {
-        return getJoseHeaders().getAlgorithm();
+    private SignatureAlgorithm getAlgorithm() {
+        return getJwsHeaders().getSignatureAlgorithm();
     }
     private void checkAlgorithm() {
         if (getAlgorithm() == null) {

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonConsumer.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonConsumer.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonConsumer.java
index 33dc8bf..bf15ace 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonConsumer.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonConsumer.java
@@ -32,7 +32,6 @@ import org.apache.cxf.common.util.StringUtils;
 import org.apache.cxf.helpers.CastUtils;
 import org.apache.cxf.jaxrs.provider.json.JsonMapObject;
 import org.apache.cxf.jaxrs.provider.json.JsonMapObjectReaderWriter;
-import org.apache.cxf.rs.security.jose.JoseHeaders;
 import org.apache.cxf.rs.security.jose.JoseUtils;
 import org.apache.cxf.rs.security.jose.jwa.SignatureAlgorithm;
 import org.apache.cxf.rs.security.jose.jwk.JsonWebKey;
@@ -97,7 +96,7 @@ public class JwsJsonConsumer {
             new JwsJsonSignatureEntry(encodedJwsPayload, 
                                       protectedHeader, 
                                       signature, 
-                                      header != null ? new JoseHeaders(header) : null);
+                                      header != null ? new JwsHeaders(header) : null);
     }
     public String getSignedDocument() {
         return this.jwsSignedDocument;
@@ -114,12 +113,12 @@ public class JwsJsonConsumer {
     public List<JwsJsonSignatureEntry> getSignatureEntries() {
         return Collections.unmodifiableList(signatureEntries);
     }
-    public MultivaluedMap<String, JwsJsonSignatureEntry> getSignatureEntryMap() {
+    public MultivaluedMap<SignatureAlgorithm, JwsJsonSignatureEntry> getSignatureEntryMap() {
         return JwsUtils.getJwsJsonSignatureMap(signatureEntries);
     }
     public boolean verifySignatureWith(JwsSignatureVerifier validator) {
         List<JwsJsonSignatureEntry> theSignatureEntries = 
-            getSignatureEntryMap().get(validator.getAlgorithm().getJwaName());
+            getSignatureEntryMap().get(validator.getAlgorithm());
         if (theSignatureEntries != null) {
             for (JwsJsonSignatureEntry signatureEntry : theSignatureEntries) {
                 if (signatureEntry.verifySignatureWith(validator)) {
@@ -151,7 +150,7 @@ public class JwsJsonConsumer {
         List<JwsJsonSignatureEntry> validatedSignatures = new LinkedList<JwsJsonSignatureEntry>();
         for (JwsSignatureVerifier validator : validators) {
             List<JwsJsonSignatureEntry> theSignatureEntries = 
-                getSignatureEntryMap().get(validator.getAlgorithm().getJwaName());
+                getSignatureEntryMap().get(validator.getAlgorithm());
             if (theSignatureEntries != null) {
                 for (JwsJsonSignatureEntry sigEntry : theSignatureEntries) {
                     if (sigEntry.verifySignatureWith(validator)) {     

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonProducer.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonProducer.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonProducer.java
index 16841b7..4d2a827 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonProducer.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonProducer.java
@@ -29,9 +29,9 @@ import javax.ws.rs.core.MultivaluedMap;
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.common.util.Base64UrlUtility;
 import org.apache.cxf.common.util.StringUtils;
+import org.apache.cxf.jaxrs.provider.json.JsonMapObjectReaderWriter;
 import org.apache.cxf.rs.security.jose.JoseConstants;
 import org.apache.cxf.rs.security.jose.JoseHeaders;
-import org.apache.cxf.rs.security.jose.JoseHeadersReaderWriter;
 import org.apache.cxf.rs.security.jose.jwa.SignatureAlgorithm;
 import org.apache.cxf.rs.security.jose.jwk.JsonWebKey;
 public class JwsJsonProducer {
@@ -40,7 +40,7 @@ public class JwsJsonProducer {
     private String plainPayload;
     private String encodedPayload;
     private List<JwsJsonSignatureEntry> signatures = new LinkedList<JwsJsonSignatureEntry>();
-    private JoseHeadersReaderWriter writer = new JoseHeadersReaderWriter();
+    private JsonMapObjectReaderWriter writer = new JsonMapObjectReaderWriter();
     public JwsJsonProducer(String tbsDocument) {
         this(tbsDocument, false);
     }
@@ -90,7 +90,7 @@ public class JwsJsonProducer {
         return signatures;
     }
     
-    public MultivaluedMap<String, JwsJsonSignatureEntry> getSignatureEntryMap() {
+    public MultivaluedMap<SignatureAlgorithm, JwsJsonSignatureEntry> getSignatureEntryMap() {
         return JwsUtils.getJwsJsonSignatureMap(signatures);
     }
     public String signWith(List<JwsSignatureProvider> signers) {
@@ -100,12 +100,12 @@ public class JwsJsonProducer {
         return getJwsJsonSignedDocument(); 
     }
     public String signWith(JwsSignatureProvider signer) {
-        JoseHeaders headers = new JoseHeaders();
-        headers.setAlgorithm(signer.getAlgorithm().getJwaName());
+        JwsHeaders headers = new JwsHeaders();
+        headers.setSignatureAlgorithm(signer.getAlgorithm());
         return signWith(signer, headers);
     }
     public String signWith(JwsSignatureProvider signer, 
-                           JoseHeaders protectedHeader) {
+                           JwsHeaders protectedHeader) {
         return signWith(signer, protectedHeader, null);
     }
     public String signWith(JsonWebKey jwk) {
@@ -118,8 +118,8 @@ public class JwsJsonProducer {
         return signWith(JwsUtils.getHmacSignatureProvider(key, algo));
     }
     public String signWith(JwsSignatureProvider signer,
-                           JoseHeaders protectedHeader,
-                           JoseHeaders unprotectedHeader) {
+                           JwsHeaders protectedHeader,
+                           JwsHeaders unprotectedHeader) {
         JwsHeaders unionHeaders = new JwsHeaders();
          
         if (protectedHeader != null) {
@@ -134,7 +134,7 @@ public class JwsJsonProducer {
             }
             unionHeaders.asMap().putAll(unprotectedHeader.asMap());
         }
-        if (unionHeaders.getAlgorithm() == null) {
+        if (unionHeaders.getSignatureAlgorithm() == null) {
             LOG.warning("Algorithm header is not set");
             throw new JwsException(JwsException.Error.INVALID_JSON_JWS);
         }

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonSignatureEntry.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonSignatureEntry.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonSignatureEntry.java
index 2238a3b..054c3d3 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonSignatureEntry.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonSignatureEntry.java
@@ -24,9 +24,9 @@ import java.util.logging.Logger;
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.common.util.Base64UrlUtility;
 import org.apache.cxf.common.util.StringUtils;
+import org.apache.cxf.jaxrs.provider.json.JsonMapObjectReaderWriter;
 import org.apache.cxf.rs.security.jose.JoseConstants;
 import org.apache.cxf.rs.security.jose.JoseHeaders;
-import org.apache.cxf.rs.security.jose.JoseHeadersReaderWriter;
 import org.apache.cxf.rs.security.jose.JoseUtils;
 import org.apache.cxf.rs.security.jose.jwk.JsonWebKey;
 
@@ -36,15 +36,15 @@ public class JwsJsonSignatureEntry {
     private String encodedJwsPayload;
     private String encodedProtectedHeader;
     private String encodedSignature;
-    private JoseHeaders protectedHeader;
-    private JoseHeaders unprotectedHeader;
+    private JwsHeaders protectedHeader;
+    private JwsHeaders unprotectedHeader;
     private JwsHeaders unionHeaders;
-    private JoseHeadersReaderWriter writer = new JoseHeadersReaderWriter();
+    private JsonMapObjectReaderWriter writer = new JsonMapObjectReaderWriter();
       
     public JwsJsonSignatureEntry(String encodedJwsPayload,
                                  String encodedProtectedHeader,
                                  String encodedSignature,
-                                 JoseHeaders unprotectedHeader) {
+                                 JwsHeaders unprotectedHeader) {
         if (encodedProtectedHeader == null && unprotectedHeader == null || encodedSignature == null) {
             LOG.warning("Invalid Signature entry");
             throw new JwsException(JwsException.Error.INVALID_JSON_JWS);
@@ -55,7 +55,7 @@ public class JwsJsonSignatureEntry {
         this.encodedSignature = encodedSignature;
         this.unprotectedHeader = unprotectedHeader;
         if (encodedProtectedHeader != null) {
-            this.protectedHeader = writer.fromJsonHeaders(JoseUtils.decodeToString(encodedProtectedHeader));
+            this.protectedHeader = new JwsHeaders(writer.fromJson(JoseUtils.decodeToString(encodedProtectedHeader)));
         }
         prepare();
     }

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJwtCompactConsumer.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJwtCompactConsumer.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJwtCompactConsumer.java
index cfa6e39..e2bcfa8 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJwtCompactConsumer.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJwtCompactConsumer.java
@@ -20,7 +20,6 @@ package org.apache.cxf.rs.security.jose.jws;
 
 import org.apache.cxf.rs.security.jose.jwt.JwtClaims;
 import org.apache.cxf.rs.security.jose.jwt.JwtToken;
-import org.apache.cxf.rs.security.jose.jwt.JwtTokenJson;
 import org.apache.cxf.rs.security.jose.jwt.JwtTokenReaderWriter;
 
 public class JwsJwtCompactConsumer extends JwsCompactConsumer {
@@ -28,16 +27,15 @@ public class JwsJwtCompactConsumer extends JwsCompactConsumer {
     public JwsJwtCompactConsumer(String encodedJws) {
         super(encodedJws, null, new JwtTokenReaderWriter());
     }
-    public JwtTokenJson getDecodedJsonToken() {
-        return new JwtTokenJson(getDecodedJsonHeaders(), getDecodedJwsPayload());
-    }
     public JwtClaims getJwtClaims() {
         return getJwtToken().getClaims();
     }
     public JwtToken getJwtToken() {
         if (token == null) {
-            token = ((JwtTokenReaderWriter)getReader()).fromJson(
-                new JwtTokenJson(getDecodedJsonHeaders(), getDecodedJwsPayload()));
+            JwsHeaders theHeaders = super.getJwsHeaders();
+            JwtClaims theClaims = 
+                ((JwtTokenReaderWriter)getReader()).fromJsonClaims(getDecodedJwsPayload());
+            token = new JwtToken(theHeaders, theClaims);
         }
         return token;
     }

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJwtCompactProducer.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJwtCompactProducer.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJwtCompactProducer.java
index 8995cda..aaaa004 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJwtCompactProducer.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJwtCompactProducer.java
@@ -36,7 +36,8 @@ public class JwsJwtCompactProducer extends JwsCompactProducer {
         this(new JwtToken(headers, claims), null);
     }
     protected JwsJwtCompactProducer(JwtToken token, JwtTokenReaderWriter w) {
-        super(new JwsHeaders(token.getHeaders()), w, JwtUtils.claimsToJson(token.getClaims(), w));
+        super(new JwsHeaders(token.getHeaders()), w, 
+              JwtUtils.claimsToJson(token.getClaims(), w));
     }
     
     

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsUtils.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsUtils.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsUtils.java
index d0b5b6e..73b291e 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsUtils.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsUtils.java
@@ -173,18 +173,19 @@ public final class JwsUtils {
         }
         return null;
     }
-    public static MultivaluedMap<String, JwsJsonSignatureEntry> getJwsJsonSignatureMap(
+    public static MultivaluedMap<SignatureAlgorithm, JwsJsonSignatureEntry> getJwsJsonSignatureMap(
         List<JwsJsonSignatureEntry> signatures) {
-        MultivaluedMap<String, JwsJsonSignatureEntry> map = new MetadataMap<String, JwsJsonSignatureEntry>();
+        MultivaluedMap<SignatureAlgorithm, JwsJsonSignatureEntry> map = 
+            new MetadataMap<SignatureAlgorithm, JwsJsonSignatureEntry>();
         for (JwsJsonSignatureEntry entry : signatures) {
-            map.add(entry.getUnionHeader().getAlgorithm(), entry);
+            map.add(entry.getUnionHeader().getSignatureAlgorithm(), entry);
         }
         return map;
     }
     public static JwsSignatureProvider loadSignatureProvider(boolean required) {
         return loadSignatureProvider(null, required);    
     }
-    public static JwsSignatureProvider loadSignatureProvider(JoseHeaders headers, boolean required) {
+    public static JwsSignatureProvider loadSignatureProvider(JwsHeaders headers, boolean required) {
         Message m = JAXRSUtils.getCurrentMessage();
         Properties props = KeyManagementUtils.loadStoreProperties(m, required, 
                                                                   RSSEC_SIGNATURE_OUT_PROPS, RSSEC_SIGNATURE_PROPS);
@@ -193,14 +194,14 @@ public final class JwsUtils {
         }
         JwsSignatureProvider theSigProvider = loadSignatureProvider(m, props, headers, false);
         if (headers != null) {
-            headers.setAlgorithm(theSigProvider.getAlgorithm().getJwaName());
+            headers.setSignatureAlgorithm(theSigProvider.getAlgorithm());
         }
         return theSigProvider;
     }
     public static JwsSignatureVerifier loadSignatureVerifier(boolean required) {
         return loadSignatureVerifier(null, required);
     }
-    public static JwsSignatureVerifier loadSignatureVerifier(JoseHeaders headers, boolean required) {
+    public static JwsSignatureVerifier loadSignatureVerifier(JwsHeaders headers, boolean required) {
         Message m = JAXRSUtils.getCurrentMessage();
         Properties props = KeyManagementUtils.loadStoreProperties(m, required, 
                                                                   RSSEC_SIGNATURE_IN_PROPS, RSSEC_SIGNATURE_PROPS);
@@ -297,7 +298,7 @@ public final class JwsUtils {
     }
     private static JwsSignatureVerifier loadSignatureVerifier(Message m, 
                                                               Properties props,
-                                                              JoseHeaders inHeaders, 
+                                                              JwsHeaders inHeaders, 
                                                               boolean ignoreNullVerifier) {
         JwsSignatureVerifier theVerifier = null;
         String inHeaderKid = null;
@@ -311,12 +312,12 @@ public final class JwsUtils {
                     throw new JwsException(JwsException.Error.INVALID_KEY);
                 }
                 return getSignatureVerifier(publicJwk, 
-                                            SignatureAlgorithm.getAlgorithm(inHeaders.getAlgorithm()));
+                                            inHeaders.getSignatureAlgorithm());
             } else if (inHeaders.getHeader(JoseConstants.HEADER_X509_CHAIN) != null) {
                 List<X509Certificate> chain = KeyManagementUtils.toX509CertificateChain(inHeaders.getX509Chain());
                 KeyManagementUtils.validateCertificateChain(props, chain);
                 return getPublicKeySignatureVerifier(chain.get(0).getPublicKey(), 
-                                                     SignatureAlgorithm.getAlgorithm(inHeaders.getAlgorithm()));
+                                                     inHeaders.getSignatureAlgorithm());
             }
         }
         

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/NoneJwsSignatureProvider.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/NoneJwsSignatureProvider.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/NoneJwsSignatureProvider.java
index 3f6a5ca..6ed31fd 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/NoneJwsSignatureProvider.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/NoneJwsSignatureProvider.java
@@ -24,7 +24,7 @@ public class NoneJwsSignatureProvider implements JwsSignatureProvider {
 
     @Override
     public SignatureAlgorithm getAlgorithm() {
-        return SignatureAlgorithm.PLAIN;
+        return SignatureAlgorithm.NONE;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/NoneJwsSignatureVerifier.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/NoneJwsSignatureVerifier.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/NoneJwsSignatureVerifier.java
index 0373bf8..441261b 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/NoneJwsSignatureVerifier.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/NoneJwsSignatureVerifier.java
@@ -24,12 +24,13 @@ public class NoneJwsSignatureVerifier implements JwsSignatureVerifier {
 
     @Override
     public boolean verify(JwsHeaders headers, String unsignedText, byte[] signature) {
-        return headers.getAlgorithm().equals(getAlgorithm().getJwaName()) && signature.length == 0;
+        return headers.getSignatureAlgorithm() == getAlgorithm() 
+            && signature.length == 0;
     }
 
     @Override
     public SignatureAlgorithm getAlgorithm() {
-        return SignatureAlgorithm.PLAIN;
+        return SignatureAlgorithm.NONE;
     }
 
 }

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/PrivateKeyJwsSignatureProvider.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/PrivateKeyJwsSignatureProvider.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/PrivateKeyJwsSignatureProvider.java
index 258d5e3..476d90f 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/PrivateKeyJwsSignatureProvider.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/PrivateKeyJwsSignatureProvider.java
@@ -24,7 +24,6 @@ import java.security.Signature;
 import java.security.SignatureException;
 import java.security.spec.AlgorithmParameterSpec;
 
-import org.apache.cxf.rs.security.jose.JoseHeaders;
 import org.apache.cxf.rs.security.jose.jwa.AlgorithmUtils;
 import org.apache.cxf.rs.security.jose.jwa.SignatureAlgorithm;
 import org.apache.cxf.rt.security.crypto.CryptoUtils;
@@ -47,9 +46,10 @@ public class PrivateKeyJwsSignatureProvider extends AbstractJwsSignatureProvider
         this.random = random;
         this.signatureSpec = spec;
     }
-    protected JwsSignature doCreateJwsSignature(JoseHeaders headers) {
+    protected JwsSignature doCreateJwsSignature(JwsHeaders headers) {
+        final String sigAlgo = headers.getSignatureAlgorithm().getJwaName();
         final Signature s = CryptoUtils.getSignature(key, 
-                                                     AlgorithmUtils.toJavaName(headers.getAlgorithm()),
+                                                     AlgorithmUtils.toJavaName(sigAlgo),
                                                      random,
                                                      signatureSpec);
         return doCreateJwsSignature(s);

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/PublicKeyJwsSignatureVerifier.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/PublicKeyJwsSignatureVerifier.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/PublicKeyJwsSignatureVerifier.java
index 86fabca..917890f 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/PublicKeyJwsSignatureVerifier.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/PublicKeyJwsSignatureVerifier.java
@@ -48,14 +48,16 @@ public class PublicKeyJwsSignatureVerifier implements JwsSignatureVerifier {
             return CryptoUtils.verifySignature(StringUtils.toBytesUTF8(unsignedText), 
                                                signature, 
                                                key, 
-                                               AlgorithmUtils.toJavaName(checkAlgorithm(headers.getAlgorithm())),
+                                               AlgorithmUtils.toJavaName(checkAlgorithm(
+                                                                              headers.getSignatureAlgorithm())),
                                                signatureSpec);
         } catch (Exception ex) {
             LOG.warning("Invalid signature: " + ex.getMessage());
             throw new JwsException(JwsException.Error.INVALID_SIGNATURE, ex);
         }
     }
-    protected String checkAlgorithm(String algo) {
+    protected String checkAlgorithm(SignatureAlgorithm sigAlgo) {
+        String algo = sigAlgo.getJwaName();
         if (algo == null) {
             LOG.warning("Signature algorithm is not set");
             throw new JwsException(JwsException.Error.ALGORITHM_NOT_SET);

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwt/JwtTokenJson.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwt/JwtTokenJson.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwt/JwtTokenJson.java
deleted file mode 100644
index e8e79f0..0000000
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwt/JwtTokenJson.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.cxf.rs.security.jose.jwt;
-
-
-
-public class JwtTokenJson {
-    private String headersJson;
-    private String claimsJson;
-    public JwtTokenJson(String headersJson, String claimsJson) {
-        this.headersJson = headersJson;
-        this.claimsJson = claimsJson;
-    }
-    public String getHeadersJson() {
-        return headersJson;
-    }
-    public String getClaimsJson() {
-        return claimsJson;
-    }
-    
-}

http://git-wip-us.apache.org/repos/asf/cxf/blob/536293b5/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwt/JwtTokenReaderWriter.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwt/JwtTokenReaderWriter.java b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwt/JwtTokenReaderWriter.java
index 42cc004..0ebf8a3 100644
--- a/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwt/JwtTokenReaderWriter.java
+++ b/rt/rs/security/jose/src/main/java/org/apache/cxf/rs/security/jose/jwt/JwtTokenReaderWriter.java
@@ -22,13 +22,12 @@ import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
 
-import org.apache.cxf.rs.security.jose.JoseHeaders;
-import org.apache.cxf.rs.security.jose.JoseHeadersReaderWriter;
+import org.apache.cxf.jaxrs.provider.json.JsonMapObjectReaderWriter;
 
 
 
 
-public class JwtTokenReaderWriter extends JoseHeadersReaderWriter {
+public class JwtTokenReaderWriter extends JsonMapObjectReaderWriter {
     private static final Set<String> DATE_PROPERTIES = 
         new HashSet<String>(Arrays.asList(JwtConstants.CLAIM_EXPIRY, 
                                           JwtConstants.CLAIM_ISSUED_AT, 
@@ -38,12 +37,6 @@ public class JwtTokenReaderWriter extends JoseHeadersReaderWriter {
         return toJson(claims);
     }
 
-    public JwtTokenJson tokenToJson(JwtToken token) {
-        return new JwtTokenJson(toJson(token.getHeaders()),
-                                    toJson(token.getClaims()));
-    }
-    
-    
     public JwtClaims fromJsonClaims(String claimsJson) {
         JwtClaims claims = new JwtClaims();
         fromJson(claims, claimsJson);
@@ -51,16 +44,6 @@ public class JwtTokenReaderWriter extends JoseHeadersReaderWriter {
         
     }
     
-    private JwtToken fromJson(String headersJson, String claimsJson) {
-        JoseHeaders headers = fromJsonHeaders(headersJson);
-        JwtClaims claims = fromJsonClaims(claimsJson);
-        return new JwtToken(headers, claims);
-    }
-    
-    public JwtToken fromJson(JwtTokenJson pair) {
-        return fromJson(pair.getHeadersJson(), pair.getClaimsJson());
-    }
-    
     @Override
     protected Object readPrimitiveValue(String name, String json, int from, int to) {
         Object value = super.readPrimitiveValue(name, json, from, to);