Consumers utilizing SNS need to do 3 tasks:
- Parse the message JSON
- Validate signed signatures
- Handle subscriptions
This library encapsulates those actions.
myEchoWebhook :: MonadHandler m => m ()
myEchoWebhook = do
message <- verifySNSMessage =<< requireInsecureJsonBody
logDebugN message
Signatures for testing are produced with the self signed certificate in this repository.
cat unsigned.txt | openssl dgst -sha1 -sign tests/key.pem | openssl base64
The certificate was produced with
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout tests/key.pem -out tests/cert.pem