lcobucci/jose-parsing

A basic Base64Url and JSON encoding/decoding implementation

2.2.0 2017-02-12 22:14 UTC

README

Gitter Total Downloads Latest Stable Version

Branch master Build Status Scrutinizer Code Quality Code Coverage SensioLabsInsight

A basic Base64Url and json encoding/decoding implementation (requires PHP 7.1).

Installation

Package is available on Packagist, you can install it using Composer.

composer require lcobucci/jose-parsing

Dependencies

  • PHP 7.1

Basic usage

This library is pretty simple and I think you would probably not use it without the other related projects 😄. It just offers base64url and JSON (with some extra validation) encoding/decoding.

Encoding

The code is self-explaining:

use Lcobucci\Jose\Parsing\Encoder;

$bilboQuote = "It’s a dangerous business, Frodo, going out your door. You step "
            . "onto the road, and if you don't keep your feet, there’s no knowing "
            . "where you might be swept off to.";
            
$encoder = new Encoder();
echo $encoder->jsonEncode(['testing' => 'test']); // {"testing":"test"}
echo $encoder->base64UrlEncode($bilboQuote);

/*
  That quote is used in RFC 7520 example (in UTF-8 encoding, sure),
  and the output is (line breaks added for readbility):

  SXTigJlzIGEgZGFuZ2Vyb3VzIGJ1c2luZXNzLCBGcm9kbywgZ29pbmcgb3V0IHlvdXIgZG9vci4gWW
  91IHN0ZXAgb250byB0aGUgcm9hZCwgYW5kIGlmIHlvdSBkb24ndCBrZWVwIHlvdXIgZmVldCwgdGhl
  cmXigJlzIG5vIGtub3dpbmcgd2hlcmUgeW91IG1pZ2h0IGJlIHN3ZXB0IG9mZiB0by4
 */ 

Decoding

The code is self-explaining (same as above):

use Lcobucci\Jose\Parsing\Decoder;

$bilboQuote = "SXTigJlzIGEgZGFuZ2Vyb3VzIGJ1c2luZXNzLCBGcm9kbywgZ29pbmcgb3V0IHlvdXIgZG9vci4gWW"
            . "91IHN0ZXAgb250byB0aGUgcm9hZCwgYW5kIGlmIHlvdSBkb24ndCBrZWVwIHlvdXIgZmVldCwgdGhl"
            . "cmXigJlzIG5vIGtub3dpbmcgd2hlcmUgeW91IG1pZ2h0IGJlIHN3ZXB0IG9mZiB0by4";

$decoder = new Decoder();
var_dump($decoder->jsonDecode('{"testing":"test"}')); // object(stdClass)#1 (1) { ["testing"] => string(4) "test" }
echo $decoder->base64UrlDecode($bilboQuote);

/*
  The output would be the same as the quote used in previous example:

  "It’s a dangerous business, Frodo, going out your door. You step " 
  "onto the road, and if you don't keep your feet, there’s no knowing " 
  "where you might be swept off to."
 */