Net::Amazon::SNS::Signature
For the verification of Amazon SNS messages
# Will download the signature certificate from SigningCertURL attribute of $message_ref # use LWP::UserAgent my $sns_signature = Net::Amazon::SNS::Signature->new(); if ( $sns_signature->verify( $message_ref ) ){ ... } # Will automatically download the certificate using your own user_agent ( supports ->get returns HTTP::Response ) my $sns_signature = Net::Amazon::SNS::Signature->new( user_agent => $my_user_agent ); if ( $sns_signature->verify( $message_ref ) ){ ... } # Provide the certificate yourself my $sns_signature = Net::Amazon::SNS::Signature->new() if ( $sns_signature->verify( $message_ref, $x509_cert ) ) { ... }
Call to verify the message, $message_ref is required as first parameter and should be a hash ref, $x509_cert is optional and should be a raw x509 certificate as downloaded from Amazon.
$message_ref
$x509_cert
See http://docs.aws.amazon.com/sns/latest/dg/SendMessageToHttp.verify.signature.html for information on the content of a message
Usage:
my $is_verified = $this->verify({ Message => 'My Test Message', MessageId => '4d4dc071-ddbf-465d-bba8-08f81c89da64', Subject => 'My subject', Timestamp => '2012-06-05T04:37:04.321Z', TopicArn => 'arn:aws:sns:us-east-1:123456789012:s4-MySNSTopic-1G1WEFCOXTC0P', Type => 'Notification', Signature => 'EXAMPLElDMXvB8r9R83tGoNn0ecwd5UjllzsvSvbItzfaMpN2nk5HVSw7XnOn', SigningCertURL => 'https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3e' });
Given a $message_ref will return a formatted string ready to be signed.
my $sign_string = $this->build_sign_string({ Message => 'Hello', MessageId => '12345', Subject => 'I am a message', Timestamp => '2016-01-20T14:37:01Z', TopicArn => 'xyz123', Type => 'Notification' });
To install Net::Amazon::SNS::Signature, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Net::Amazon::SNS::Signature
CPAN shell
perl -MCPAN -e shell install Net::Amazon::SNS::Signature
For more information on module installation, please visit the detailed CPAN module installation guide.