You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oltu.apache.org by si...@apache.org on 2013/09/19 11:45:21 UTC

svn commit: r1524671 - in /oltu/trunk/jose/jws/src: main/java/org/apache/oltu/jose/jws/ main/java/org/apache/oltu/jose/jws/signature/ test/java/org/apache/oltu/jose/jws/signature/

Author: simonetripodi
Date: Thu Sep 19 09:45:20 2013
New Revision: 1524671

URL: http://svn.apache.org/r1524671
Log:
OLTU-118 - Implement JWS of the JOSE working group

both signature calculation/verification need the payload in order to sign/verify the JWS

Modified:
    oltu/trunk/jose/jws/src/main/java/org/apache/oltu/jose/jws/JWS.java
    oltu/trunk/jose/jws/src/main/java/org/apache/oltu/jose/jws/signature/SignatureMethod.java
    oltu/trunk/jose/jws/src/test/java/org/apache/oltu/jose/jws/signature/SignatureMethodTestCase.java
    oltu/trunk/jose/jws/src/test/java/org/apache/oltu/jose/jws/signature/TestSignatureMethod.java

Modified: oltu/trunk/jose/jws/src/main/java/org/apache/oltu/jose/jws/JWS.java
URL: http://svn.apache.org/viewvc/oltu/trunk/jose/jws/src/main/java/org/apache/oltu/jose/jws/JWS.java?rev=1524671&r1=1524670&r2=1524671&view=diff
==============================================================================
--- oltu/trunk/jose/jws/src/main/java/org/apache/oltu/jose/jws/JWS.java (original)
+++ oltu/trunk/jose/jws/src/main/java/org/apache/oltu/jose/jws/JWS.java Thu Sep 19 09:45:20 2013
@@ -203,8 +203,11 @@ public class JWS {
             if (signingKey == null) {
                 throw new IllegalArgumentException("A signing key is required in order to calculate the signature.");
             }
+            if (payload == null) {
+                throw new IllegalStateException("Payload needs to be set in order to sign the current JWT");
+            }
             setAlgorithm(method.getAlgorithm());
-            return setSignature(method.calculate(signingKey));
+            return setSignature(method.calculate(payload, signingKey));
         }
 
         public JWS build() {

Modified: oltu/trunk/jose/jws/src/main/java/org/apache/oltu/jose/jws/signature/SignatureMethod.java
URL: http://svn.apache.org/viewvc/oltu/trunk/jose/jws/src/main/java/org/apache/oltu/jose/jws/signature/SignatureMethod.java?rev=1524671&r1=1524670&r2=1524671&view=diff
==============================================================================
--- oltu/trunk/jose/jws/src/main/java/org/apache/oltu/jose/jws/signature/SignatureMethod.java (original)
+++ oltu/trunk/jose/jws/src/main/java/org/apache/oltu/jose/jws/signature/SignatureMethod.java Thu Sep 19 09:45:20 2013
@@ -24,9 +24,9 @@ package org.apache.oltu.jose.jws.signatu
  */
 public interface SignatureMethod<S extends SigningKey, V extends VerifyingKey> {
 
-    String calculate(S signingKey);
+    String calculate(String payload, S signingKey);
 
-    boolean verify(String signature, V verifyingKey);
+    boolean verify(String signature, String payload, V verifyingKey);
 
     String getAlgorithm();
 

Modified: oltu/trunk/jose/jws/src/test/java/org/apache/oltu/jose/jws/signature/SignatureMethodTestCase.java
URL: http://svn.apache.org/viewvc/oltu/trunk/jose/jws/src/test/java/org/apache/oltu/jose/jws/signature/SignatureMethodTestCase.java?rev=1524671&r1=1524670&r2=1524671&view=diff
==============================================================================
--- oltu/trunk/jose/jws/src/test/java/org/apache/oltu/jose/jws/signature/SignatureMethodTestCase.java (original)
+++ oltu/trunk/jose/jws/src/test/java/org/apache/oltu/jose/jws/signature/SignatureMethodTestCase.java Thu Sep 19 09:45:20 2013
@@ -25,38 +25,42 @@ import org.junit.Test;
 
 public final class SignatureMethodTestCase {
 
-    private String signature;
+    private String payload;
 
     private TestSymetricKey key;
 
+    private String signature;
+
     private TestSignatureMethod method;
 
     @Before
     public void setUp() {
-        signature = "supercalifragilistichespiralidoso123456789";
-        key = new TestSymetricKey(signature);
+        payload = "{\"iss\":\"joe\",\r\n \"exp\":1300819380,\r\n \"http://example.com/is_root\":true}";
+        key = new TestSymetricKey("supercalifragilistichespiralidoso1234567890");
+        signature = payload + key.getValue();
         method = new TestSignatureMethod();
     }
 
     @After
     public void tearDown() {
-        signature = null;
+        payload = null;
         key = null;
+        signature = null;
         method = null;
     }
 
     @Test
     public void simpleSignatureVerification() {
-        assertEquals(signature, method.calculate(key));
-        assertTrue(method.verify(signature, key));
+        assertEquals(signature, method.calculate(payload, key));
+        assertTrue(method.verify(signature, payload, key));
     }
 
     @Test
     public void signJWS() {
         JWS jws = new JWS.Builder()
                          .setType("JWT")
-                         .setPayload("{\"iss\":\"joe\",\r\n \"exp\":1300819380,\r\n \"http://example.com/is_root\":true}")
-                         .sign( method, key )
+                         .setPayload(payload)
+                         .sign(method, key)
                          .build();
 
         assertEquals("TEST", jws.getHeader().getAlgorithm());

Modified: oltu/trunk/jose/jws/src/test/java/org/apache/oltu/jose/jws/signature/TestSignatureMethod.java
URL: http://svn.apache.org/viewvc/oltu/trunk/jose/jws/src/test/java/org/apache/oltu/jose/jws/signature/TestSignatureMethod.java?rev=1524671&r1=1524670&r2=1524671&view=diff
==============================================================================
--- oltu/trunk/jose/jws/src/test/java/org/apache/oltu/jose/jws/signature/TestSignatureMethod.java (original)
+++ oltu/trunk/jose/jws/src/test/java/org/apache/oltu/jose/jws/signature/TestSignatureMethod.java Thu Sep 19 09:45:20 2013
@@ -19,13 +19,13 @@ package org.apache.oltu.jose.jws.signatu
 final class TestSignatureMethod implements SignatureMethod<TestSymetricKey, TestSymetricKey> {
 
     @Override
-    public String calculate(TestSymetricKey signingKey) {
-        return signingKey.getValue();
+    public String calculate(String payload, TestSymetricKey signingKey) {
+        return payload + signingKey.getValue();
     }
 
     @Override
-    public boolean verify(String signature, TestSymetricKey verifyingKey) {
-        return signature.equals(verifyingKey.getValue());
+    public boolean verify(String signature, String payload, TestSymetricKey verifyingKey) {
+        return signature.equals(payload + verifyingKey.getValue());
     }
 
     @Override