You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by si...@apache.org on 2010/02/21 16:58:07 UTC

svn commit: r912364 - in /labs/amber/signature-api/src/main/java/org/apache/labs/amber/signature/signers: AbstractMethodAlgorithm.java SignatureMethodAlgorithm.java

Author: simonetripodi
Date: Sun Feb 21 15:58:07 2010
New Revision: 912364

URL: http://svn.apache.org/viewvc?rev=912364&view=rev
Log:
added Parameters Normalization algorithm implementation

Modified:
    labs/amber/signature-api/src/main/java/org/apache/labs/amber/signature/signers/AbstractMethodAlgorithm.java
    labs/amber/signature-api/src/main/java/org/apache/labs/amber/signature/signers/SignatureMethodAlgorithm.java

Modified: labs/amber/signature-api/src/main/java/org/apache/labs/amber/signature/signers/AbstractMethodAlgorithm.java
URL: http://svn.apache.org/viewvc/labs/amber/signature-api/src/main/java/org/apache/labs/amber/signature/signers/AbstractMethodAlgorithm.java?rev=912364&r1=912363&r2=912364&view=diff
==============================================================================
--- labs/amber/signature-api/src/main/java/org/apache/labs/amber/signature/signers/AbstractMethodAlgorithm.java (original)
+++ labs/amber/signature-api/src/main/java/org/apache/labs/amber/signature/signers/AbstractMethodAlgorithm.java Sun Feb 21 15:58:07 2010
@@ -18,7 +18,10 @@
 
 import java.net.URL;
 import java.nio.charset.Charset;
+import java.util.ArrayList;
 import java.util.BitSet;
+import java.util.Collections;
+import java.util.List;
 
 import org.apache.commons.codec.net.URLCodec;
 import org.apache.labs.amber.signature.descriptors.Service;
@@ -173,12 +176,12 @@
      * @param service the service for which the signature has to be
      *        signed/verified.
      * @param message the (has to be signed) OAuth message.
-     * @param parameterList the (optional) parameter list the cliend sends to
+     * @param parameters the (optional) parameter list the cliend sends to
      *        the OAuth server.
      * @return the calculated OAuth base string.
      * @throws SignatureException if any error occurs.
      */
-    private String createBaseString(Service service, RequestMessage message, Parameter... parameterList) throws SignatureException {
+    private String createBaseString(Service service, RequestMessage message, Parameter... parameters) throws SignatureException {
         // the HTTP method
         String method = service.getHttpMethod().name();
 
@@ -208,8 +211,29 @@
                                 .toString();
 
         // parameter normalization
-        // TODO add missing algorithm part implementation
-        String normalizedParameters = null;
+        List<Parameter> parametersList = new ArrayList<Parameter>();
+
+        // TODO add the message parameters
+
+        // add the user parameters
+        for (Parameter parameter : parameters) {
+            encodeAndAddParameter(parameter, parametersList);
+        }
+
+        // now serialize the normalized parameters
+        StringBuilder buffer = new StringBuilder();
+        for (int i = 0; i < parametersList.size(); i++) {
+            if (i > 0) {
+                buffer.append('&');
+            }
+
+            Parameter parameter = parametersList.get(i);
+            buffer.append(parameter.getName());
+            buffer.append('=');
+            buffer.append(parameter.getValue());
+        }
+
+        String normalizedParameters = buffer.toString();
 
         return new StringBuilder(method)
                 .append('&')
@@ -229,4 +253,20 @@
         return new String(URLCodec.encodeUrl(UNRESERVED_CHARS, text.getBytes(UTF_8)), UTF_8);
     }
 
+    /**
+     * Add the input parameter in the list, encoding the parameter name/value
+     * first, then putting it in the list in the right position
+     *
+     * @param parameter the input parameter.
+     * @param parametersList the list where add the parameter.
+     */
+    private static void encodeAndAddParameter(Parameter parameter, List<Parameter> parametersList) {
+        Parameter encodedParameter = new Parameter(percentEncode(parameter.getName()), percentEncode(parameter.getValue()));
+        int paramIndex = Collections.binarySearch(parametersList, encodedParameter);
+        if (paramIndex < 0) {
+            paramIndex = -paramIndex - 1;
+        }
+        parametersList.add(paramIndex, encodedParameter);
+    }
+
 }

Modified: labs/amber/signature-api/src/main/java/org/apache/labs/amber/signature/signers/SignatureMethodAlgorithm.java
URL: http://svn.apache.org/viewvc/labs/amber/signature-api/src/main/java/org/apache/labs/amber/signature/signers/SignatureMethodAlgorithm.java?rev=912364&r1=912363&r2=912364&view=diff
==============================================================================
--- labs/amber/signature-api/src/main/java/org/apache/labs/amber/signature/signers/SignatureMethodAlgorithm.java (original)
+++ labs/amber/signature-api/src/main/java/org/apache/labs/amber/signature/signers/SignatureMethodAlgorithm.java Sun Feb 21 15:58:07 2010
@@ -34,7 +34,7 @@
      * @param secretCredential the temporary/token credential.
      * @param service the service for which the signature is calculated.
      * @param message the OAuth message has to be signed.
-     * @param parameterList the (optional) parameter list the cliend sends to
+     * @param parameters the (optional) parameter list the cliend sends to
      *        the OAuth server.
      * @return the calculated signature.
      * @throws SignatureException if any error occurs.
@@ -43,7 +43,7 @@
             String secretCredential,
             Service service,
             RequestMessage message,
-            Parameter... parameterList) throws SignatureException;
+            Parameter... parameters) throws SignatureException;
 
     /**
      * Verifies the OAuth request message signature.
@@ -53,7 +53,7 @@
      * @param secretCredential the temporary/token credential.
      * @param service the service for which the signature has to be verified.
      * @param message the signed OAuth message.
-     * @param parameterList the (optional) parameter list the cliend sends to
+     * @param parameters the (optional) parameter list the cliend sends to
      *        the OAuth server.
      * @return true if the signature is correct, false otherwise.
      * @throws SignatureException if any error occurs.
@@ -63,6 +63,6 @@
             String secretCredential,
             Service service,
             RequestMessage message,
-            Parameter... parameterList) throws SignatureException;
+            Parameter... parameters) throws SignatureException;
 
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org