Hits: 1756
I was working on Amazon S3 Cloud HTML5 MP3 Player for S3 Bucket security and Expiring Media links.
<?php if(!function_exists('el_crypto_hmacSHA1')){ /** * Calculate the HMAC SHA1 hash of a string. * * @param string $key The key to hash against * @param string $data The data to hash * @param int $blocksize Optional blocksize * @return string HMAC SHA1 */ function el_crypto_hmacSHA1($key, $data, $blocksize = 64) { if (strlen($key) > $blocksize) $key = pack('H*', sha1($key)); $key = str_pad($key, $blocksize, chr(0x00)); $ipad = str_repeat(chr(0x36), $blocksize); $opad = str_repeat(chr(0x5c), $blocksize); $hmac = pack( 'H*', sha1( ($key ^ $opad) . pack( 'H*', sha1( ($key ^ $ipad) . $data )) )); return base64_encode($hmac); } } if(!function_exists('el_s3_getTemporaryLink')){ /** * Create temporary URLs to your protected Amazon S3 files. * * @param string $accessKey Your Amazon S3 access key * @param string $secretKey Your Amazon S3 secret key * @param string $bucket The bucket (bucket.s3.amazonaws.com) * @param string $path The target file path * @param int $expires In minutes * @return string Temporary Amazon S3 URL * @see http://awsdocs.s3.amazonaws.com/S3/20060301/s3-dg-20060301.pdf */ function el_s3_getTemporaryLink($accessKey, $secretKey, $bucket, $path, $expires = 5) { // Calculate expiry time $expires = time() + intval(floatval($expires) * 60); // Fix the path; encode and sanitize $path = str_replace('%2F', '/', rawurlencode($path = ltrim($path, '/'))); // Path for signature starts with the bucket $signpath = '/'. $bucket .'/'. $path; // S3 friendly string to sign $signsz = implode("\n", $pieces = array('GET', null, null, $expires, $signpath)); // Calculate the hash $signature = el_crypto_hmacSHA1($secretKey, $signsz); // Glue the URL ... $url = sprintf('http://%s.s3.amazonaws.com/%s', $bucket, $path); // ... to the query string ... $qs = http_build_query($pieces = array( 'AWSAccessKeyId' => $accessKey, 'Expires' => $expires, 'Signature' => $signature, ));a // ... and return the URL! return $url.'?'.$qs; } } ?>
Uses:
$ExpiringLink = el_s3_getTemporaryLink(‘AWS-KEY’, ‘AWS-SECRET-KEY’, ‘BUCKET’, ‘FILENAME’, ‘EXPIRING-TIME’);
Demo Amazon S3 Cloud HTML5 MP3 Player
Reference: http://snipplr.com/view/46753.57507/
















