NAME
OpenSocialX::Shindig::Crypter - OpenSocial Shindig Crypter
VERSION
version 0.03
SYNOPSIS
use OpenSocialX::Shindig::Crypter;
my $crypter = OpenSocialX::Shindig::Crypter->new( {
cipher => 'length16length16',
hmac => 'forhmac_sha1',
iv => 'anotherlength16k'
} );
my $token = $crypter->create_token( {
owner => $owner_id,
viewer => $viewer_id,
app => $app_id,
app_url => $app_url,
domain => $domain,
module_id => $module_id
} );
DESCRIPTION
Apache Shindig http://incubator.apache.org/shindig/ is an OpenSocial container and helps you to start hosting OpenSocial apps quickly by providing the code to render gadgets, proxy requests, and handle REST and RPC requests.
From the article http://www.chabotc.com/generic/using-shindig-in-a-non-php-or-java-envirionment/, we know that we can do 'Application' things in Perl. basically the stuff will be
use Perl OpenSocialX::Shindig::Crypter (this module) to create st= encrypted token through
create_token
the php
BasicBlobCrypter.php
will unwrap the token and validate it. The file is in thephp
dir of this .tar.gz or you can download it from http://github.com/fayland/opensocialx-shindig-crypter/raw/master/php/BasicBlobCrypter.phpyou can copy it to the dir of
extension_class_paths
defined in shindig/config/container.php, it will override the defaultBasicBlobCrypter.php
provided by shindig.and the last thing is to defined the same keys in shindig/config/container.php like:
'token_cipher_key' => 'length16length16', 'token_hmac_key' => 'forhmac_sha1', 'token_iv_key' => 'anotherlength16k',
remember that
token_iv_key
is new
METHODS
new
my $crypter = OpenSocialX::Shindig::Crypter->new( { cipher => 'length16length16', hmac => 'forhmac_sha1', iv => 'anotherlength16k' } );
cipher
andiv
must be 16 chars.create_token
my $token = $crypter->create_token( { owner => $owner_id, viewer => $viewer_id, app => $app_id, app_url => $app_url, domain => $domain, module_id => $module_id } );
if you don't know what
module_id
is, you can leave it alone.wrap
my $encrypted = $crypter->wrap({ a => 1, c => 3, o => 5 } );
encrypt the hash by Crypt::Rijndael and Digest::SHA and encode_base64 it
unwrap
my $hash = $crypter->unwrap($encrypted);
decrypt the above data
deserialize
checkTimestamp
_serializeAndTimestamp
EXAMPLE
use URI::Escape;
use MIME::Base64;
use OpenSocialX::Shindig::Crypter;
my $crypter = OpenSocialX::Shindig::Crypter->new( {
cipher => $config->{opensocial}->{cipherKey},
hmac => $config->{opensocial}->{hmacKey},
iv => $config->{opensocial}->{ivKey},
} );
my $security_token = uri_escape( encode_base64( $crypter->create_token( {
owner => $owner_id,
viewer => $viwer_id,
app => $gadget->{id},
domain => $config->{opensocial}->{container},
app_url => $gadget->{url},
} ) ) );
# later in tt2 or others
# st=$security_token
AUTHOR
Fayland Lam <fayland@gmail.com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2009 by Fayland Lam.
This is free software; you can redistribute it and/or modify it under the same terms as perl itself.