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