aws-sdk-sns 1.124.1 → 1.125.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 350723b85a653546a5a98dbe7f577f11daa1e25e655386d50d8bb50da2ea5491
4
- data.tar.gz: 5dd7a46c16b649dd60674ed6ed2e55323d5f6145d2ae04c12b58d20d724caa35
3
+ metadata.gz: 8c4de1c6e682bc02fa66c6af6759f14f18ba58cc9a1c1943380e75d26d12db4c
4
+ data.tar.gz: f5f754bdf50a61fe76445323b484ca3a8ee8da26be705d69f1943dd058c0e5cf
5
5
  SHA512:
6
- metadata.gz: c6b19873cfd6576f3b461d5decb370ee6a906a39c422528fa8418ab672cec6de2e12158636fb97ce15cdaf1c5c012e67de66b2288c8bb8bc2d75353be7070039
7
- data.tar.gz: 30b7f6360670515c3e748bf29c30f1c2de38e76bbd17bc296a2332132aed17f63220ba2032e1d528c6105af015d55fe5f2df697e511837801cd051026db23830
6
+ metadata.gz: 642eaac779964be128f5ab179ef664d9e1330b1a5145d94190062f0a07d36e815206ef3303ec8e8707d8d640ba6b01c8e86dac86c99f868b306989897bef9162
7
+ data.tar.gz: e6318b84a43429767bdd750a7e4b99acda1daa9b814a370a3ee960b57618e12493aac5f2b9cd9663edd88c508b59be51479d5fdc8f6971ae50c48edb84c928c6
data/CHANGELOG.md CHANGED
@@ -1,6 +1,13 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.125.0 (2026-10-28)
5
+ ------------------
6
+
7
+ * Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
8
+
9
+ * Issue - Reject SNS messages with an unsupported `Type` or malformed signed fields in `Aws::SNS::MessageVerifier`.
10
+
4
11
  1.124.1 (2026-10-26)
5
12
  ------------------
6
13
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.124.1
1
+ 1.125.0
@@ -3256,7 +3256,7 @@ module Aws::SNS
3256
3256
  tracer: tracer
3257
3257
  )
3258
3258
  context[:gem_name] = 'aws-sdk-sns'
3259
- context[:gem_version] = '1.124.1'
3259
+ context[:gem_version] = '1.125.0'
3260
3260
  Seahorse::Client::Request.new(handlers, context)
3261
3261
  end
3262
3262
 
@@ -23,17 +23,23 @@ module Aws
23
23
 
24
24
  class VerificationError < StandardError; end
25
25
 
26
+ # Signable fields per message type.
26
27
  # @api private
27
- SIGNABLE_KEYS = [
28
- 'Message',
29
- 'MessageId',
30
- 'Subject',
31
- 'SubscribeURL',
32
- 'Timestamp',
33
- 'Token',
34
- 'TopicArn',
35
- 'Type'
36
- ].freeze
28
+ SIGNABLE_KEYS_BY_TYPE = {
29
+ 'Notification' => %w[Message MessageId Subject Timestamp TopicArn Type].freeze,
30
+ 'SubscriptionConfirmation' =>
31
+ %w[Message MessageId SubscribeURL Timestamp Token TopicArn Type].freeze,
32
+ 'UnsubscribeConfirmation' =>
33
+ %w[Message MessageId SubscribeURL Timestamp Token TopicArn Type].freeze
34
+ }.freeze
35
+
36
+ # Metadata fields that must be present as non-empty strings.
37
+ # @api private
38
+ REQUIRED_KEYS = %w[MessageId Timestamp TopicArn].freeze
39
+
40
+ # Only Message may contain the newline used as the field delimiter.
41
+ # @api private
42
+ NEWLINE_SAFE_KEY = 'Message'
37
43
 
38
44
  # @api private
39
45
  AWS_HOSTNAMES = [
@@ -93,6 +99,41 @@ module Aws
93
99
  unless msg['Signature'].is_a?(String) && msg['SigningCertURL'].is_a?(String)
94
100
  raise VerificationError, 'the Signature and SigningCertURL must be strings'
95
101
  end
102
+
103
+ verify_signable_fields!(msg)
104
+ end
105
+
106
+ def verify_signable_fields!(msg)
107
+ keys = SIGNABLE_KEYS_BY_TYPE[msg['Type']]
108
+ unless keys
109
+ raise VerificationError, 'the message Type is not supported'
110
+ end
111
+
112
+ verify_required_keys!(msg)
113
+ verify_field_values!(msg, keys)
114
+ end
115
+
116
+ def verify_required_keys!(msg)
117
+ REQUIRED_KEYS.each do |key|
118
+ value = msg[key]
119
+ next if value.is_a?(String) && !value.empty?
120
+
121
+ raise VerificationError, "the #{key} must be a non-empty string"
122
+ end
123
+ end
124
+
125
+ def verify_field_values!(msg, keys)
126
+ keys.each do |key|
127
+ value = msg[key]
128
+ next if value.nil?
129
+
130
+ unless value.is_a?(String)
131
+ raise VerificationError, "the #{key} must be a string"
132
+ end
133
+ if key != NEWLINE_SAFE_KEY && value.include?("\n")
134
+ raise VerificationError, "the #{key} must not contain newlines"
135
+ end
136
+ end
96
137
  end
97
138
 
98
139
  def is_from_lambda(message)
@@ -130,14 +171,10 @@ module Aws
130
171
  end
131
172
 
132
173
  def canonical_string(message)
133
- parts = []
134
- SIGNABLE_KEYS.each do |key|
174
+ SIGNABLE_KEYS_BY_TYPE.fetch(message['Type']).filter_map do |key|
135
175
  value = message[key]
136
- unless value.nil? or value.empty?
137
- parts << "#{key}\n#{value}\n"
138
- end
139
- end
140
- parts.join
176
+ "#{key}\n#{value}\n" unless value.nil? || value.empty?
177
+ end.join
141
178
  end
142
179
 
143
180
  def public_key(message)
data/lib/aws-sdk-sns.rb CHANGED
@@ -58,7 +58,7 @@ module Aws::SNS
58
58
  autoload :Subscription, 'aws-sdk-sns/subscription'
59
59
  autoload :Topic, 'aws-sdk-sns/topic'
60
60
 
61
- GEM_VERSION = '1.124.1'
61
+ GEM_VERSION = '1.125.0'
62
62
 
63
63
  end
64
64
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-sdk-sns
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.124.1
4
+ version: 1.125.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Amazon Web Services
@@ -18,7 +18,7 @@ dependencies:
18
18
  version: '3'
19
19
  - - ">="
20
20
  - !ruby/object:Gem::Version
21
- version: 3.260.0
21
+ version: 3.262.0
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -28,7 +28,7 @@ dependencies:
28
28
  version: '3'
29
29
  - - ">="
30
30
  - !ruby/object:Gem::Version
31
- version: 3.260.0
31
+ version: 3.262.0
32
32
  - !ruby/object:Gem::Dependency
33
33
  name: aws-sigv4
34
34
  requirement: !ruby/object:Gem::Requirement