Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source.
   * Copyright 2012, Red Hat, Inc., and individual contributors
   * as indicated by the @author tags. See the copyright.txt file in the
   * distribution for a full listing of individual contributors.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
  * the License, or (at your option) any later version.
  *
  * This software is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this software; if not, write to the Free
  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  */
 package org.picketbox.json.sig;
 
 import static org.picketbox.json.PicketBoxJSONConstants.COMMON.HMAC_SHA_256;
 import static org.picketbox.json.PicketBoxJSONConstants.COMMON.PERIOD;
 
 
 import  org.json.JSONException;
 import  org.json.JSONObject;
Represents a JSON Web Signature

Author(s):
anil saldhana
Since:
Jul 24, 2012
 
 public class JSONWebSignature {
     protected JSONObject payload;
     protected JSONWebSignatureHeader header;

    
Create an attached header

Parameters:
alg
Returns:
 
     public JSONWebSignatureHeader createHeader(String alg) {
         if ( == null) {
              = new JSONWebSignatureHeader(alg);
         }
         return ;
     }

    
Get the JSON Payload

Returns:
 
     public JSONObject getPayload() {
         return ;
     }

    
Set the Payload

Parameters:
payload
 
     public void setPayload(JSONObject payload) {
         this. = payload;
     }

    
Set the Payload

Parameters:
payload
Throws:
JSONException
 
     public void setPayload(String paythrows JSONException {
         this. = new JSONObject(pay);
     }

    
Get the JWS Header

Returns:
 
     public JSONWebSignatureHeader getHeader() {
         return ;
     }

    
Set the JWS Header

Parameters:
header
    public void setHeader(JSONWebSignatureHeader header) {
        this. = header;
    }

    
Encode the Payload

Returns:
Throws:
ProcessingException
    public String encode() throws ProcessingException {
        if ( == null) {
        }
        if (.equals(.getAlg())) {
            return encodeUsingHmacSha26();
        }
        throw new RuntimeException();
    }

    
Decode the Payload

Returns:
Throws:
ProcessingException
    public static JSONWebSignature decode(String encodedthrows ProcessingException {
        String[] tokens = encoded.split("\\.");
        String encodedHeader = tokens[0];
        String encodedPayload = tokens[1];
        String encodedSignature = tokens[2];
        String decodedSignature = null;
        try {
            decodedSignature = new String(Base64.decode(encodedSignature), "UTF-8");
        } catch (UnsupportedEncodingException e1) {
            throw ..processingException(e1);
        }
        // Validation
        String hmacEncodedSigValue = HmacSha256Util.encode(encodedHeader +  + encodedPayload);
        if (hmacEncodedSigValue.equals(decodedSignature) == false) {
        }
        JSONWebSignature sig = new JSONWebSignature();
        try {
            sig.setHeader(JSONWebSignatureHeader.create(new String(Base64.decode(encodedHeader), "UTF-8")));
            sig.setPayload(new String(Base64.decode(encodedPayload), "UTF-8"));
        } catch (Exception e) {
            throw ..processingException(e);
        }
        return sig;
    }

    
Encode using HmacSha256

Returns:
Throws:
ProcessingException
    protected String encodeUsingHmacSha26() throws ProcessingException {
        try {
            // Encode the header
            String base64EncodedHeader = PicketBoxJSONUtil.b64Encode(.get().toString());
            // Encode the payload
            String base64EncodedPayload = PicketBoxJSONUtil.b64Encode(.toString());
            StringBuilder securedInput = new StringBuilder(base64EncodedHeader);
            securedInput.append().append(base64EncodedPayload);
            String sigValue = HmacSha256Util.encode(securedInput.toString());
            String encodedSig = PicketBoxJSONUtil.b64Encode(sigValue);
            StringBuilder result = new StringBuilder();
            result.append(base64EncodedHeader).append().append(base64EncodedPayload).append().append(encodedSig);
            return result.toString();
        } catch (Exception e) {
            throw ..processingException(e);
        }
    }
New to GrepCode? Check out our FAQ X