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 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
, 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 the "php" dir of this .tar.gz or you can download
it from
you can copy it to the dir of "extension_class_paths" defined in
shindig/config/container.php, it will override the default
"BasicBlobCrypter.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" and "iv" 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
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.