NAME
Net::Amazon::SNS::Signature
DESCRIPTION
For the verification of Amazon SNS messages
USAGE
# 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 ) ) { ... }
verify
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.
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'
});
build_sign_string
Given a $message_ref
will return a formatted string ready to be signed.
Usage:
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'
});