123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- <?php
- namespace Aws\Ses;
- use Aws\Api\ApiProvider;
- use Aws\Api\DocModel;
- use Aws\Api\Service;
- use Aws\Credentials\CredentialsInterface;
- class SesClient extends \Aws\AwsClient
- {
-
- public static function generateSmtpPassword(CredentialsInterface $creds)
- {
- static $version = "\x02";
- static $algo = 'sha256';
- static $message = 'SendRawEmail';
- $signature = hash_hmac($algo, $message, $creds->getSecretKey(), true);
- return base64_encode($version . $signature);
- }
-
- public static function generateSmtpPasswordV4(CredentialsInterface $creds, $region)
- {
- $key = $creds->getSecretKey();
- $date = "11111111";
- $service = "ses";
- $terminal = "aws4_request";
- $message = "SendRawEmail";
- $version = 0x04;
- $signature = self::sign($date, "AWS4" . $key);
- $signature = self::sign($region, $signature);
- $signature = self::sign($service, $signature);
- $signature = self::sign($terminal, $signature);
- $signature = self::sign($message, $signature);
- $signatureAndVersion = pack('c', $version) . $signature;
- return base64_encode($signatureAndVersion);
- }
- private static function sign($key, $message) {
- return hash_hmac('sha256', $key, $message, true);
- }
-
- public static function applyDocFilters(array $api, array $docs)
- {
- $b64 = '<div class="alert alert-info">This value will be base64 encoded on your behalf.</div>';
- $docs['shapes']['RawMessage']['append'] = $b64;
- return [
- new Service($api, ApiProvider::defaultProvider()),
- new DocModel($docs)
- ];
- }
- }
|