Skip to content

Commit fb46168

Browse files
committed
Wire up signers
1 parent 42872bc commit fb46168

File tree

2 files changed

+29
-4
lines changed

2 files changed

+29
-4
lines changed

codegen/core/src/main/java/software/amazon/smithy/python/codegen/integrations/RestJsonProtocolGenerator.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -397,13 +397,25 @@ public void wrapInputStream(GenerationContext context, PythonWriter writer) {
397397
writer.addImport("smithy_core.aio.types", "AsyncBytesReader");
398398
writer.addImport("smithy_core.types", "TimestampFormat");
399399
writer.addImport("aws_event_stream.aio", "AWSInputEventStream");
400+
writer.addImport("aws_sdk_signers", "AsyncEventSigner");
400401
writer.write(
401402
"""
403+
# TODO - Move this out of the RestJSON generator
404+
ctx = request_context
405+
signer_properties = ctx.properties.get("signer_properties") # type: ignore
406+
identity = ctx.properties.get("identity") # type: ignore
407+
signature = ctx.properties.get("signature") # type: ignore
408+
signer = AsyncEventSigner(
409+
signing_properties=signer_properties, # type: ignore
410+
identity=identity, # type: ignore
411+
initial_signature=signature, # type: ignore
412+
)
402413
codec = JSONCodec(default_timestamp_format=TimestampFormat.EPOCH_SECONDS)
403414
return AWSInputEventStream[Any, Any](
404415
payload_codec=codec,
405416
awaitable_output=awaitable_output,
406417
async_writer=request_context.transport_request.body, # type: ignore
418+
signer=signer, # type: ignore
407419
)
408420
""");
409421
}
@@ -439,15 +451,28 @@ public void wrapDuplexStream(GenerationContext context, PythonWriter writer) {
439451
writer.addImport("smithy_core.aio.types", "AsyncBytesReader");
440452
writer.addImport("smithy_core.types", "TimestampFormat");
441453
writer.addImport("aws_event_stream.aio", "AWSDuplexEventStream");
454+
writer.addImport("aws_sdk_signers", "AsyncEventSigner");
442455
writer.write(
443456
"""
457+
# TODO - Move this out of the RestJSON generator
458+
ctx = request_context
459+
signer_properties = ctx.properties.get("signer_properties") # type: ignore
460+
identity = ctx.properties.get("identity") # type: ignore
461+
signature = ctx.properties.get("signature") # type: ignore
462+
signer = AsyncEventSigner(
463+
signing_properties=signer_properties, # type: ignore
464+
identity=identity, # type: ignore
465+
initial_signature=signature, # type: ignore
466+
)
467+
444468
codec = JSONCodec(default_timestamp_format=TimestampFormat.EPOCH_SECONDS)
445469
return AWSDuplexEventStream[Any, Any, Any](
446470
payload_codec=codec,
447471
async_writer=request_context.transport_request.body, # type: ignore
448472
awaitable_output=awaitable_output,
449473
awaitable_response=response_future,
450474
deserializer=event_deserializer, # type: ignore
475+
signer=signer, # type: ignore
451476
)
452477
""");
453478
}

packages/aws-sdk-signers/src/aws_sdk_signers/signers.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,7 @@ def _should_sha256_sign_payload(
353353
if request.destination.scheme != "https":
354354
return True
355355

356-
return signing_properties.get("payload_signing_enabled", True)
356+
return signing_properties.get("payload_signing_enabled", False)
357357

358358
def _format_canonical_payload(
359359
self,
@@ -364,7 +364,7 @@ def _format_canonical_payload(
364364
payload_hash = self._compute_payload_hash(
365365
request=request, signing_properties=signing_properties
366366
)
367-
if signing_properties.get("content_checksum_enabled", False):
367+
if signing_properties.get("content_checksum_enabled", True):
368368
request.fields.set_field(
369369
Field(name="X-Amz-Content-SHA256", values=[payload_hash])
370370
)
@@ -721,7 +721,7 @@ async def _should_sha256_sign_payload(
721721
if request.destination.scheme != "https":
722722
return True
723723

724-
return signing_properties.get("payload_signing_enabled", True)
724+
return signing_properties.get("payload_signing_enabled", False)
725725

726726
async def _format_canonical_payload(
727727
self,
@@ -732,7 +732,7 @@ async def _format_canonical_payload(
732732
payload_hash = await self._compute_payload_hash(
733733
request=request, signing_properties=signing_properties
734734
)
735-
if signing_properties.get("content_checksum_enabled", False):
735+
if signing_properties.get("content_checksum_enabled", True):
736736
request.fields.set_field(
737737
Field(name="X-Amz-Content-SHA256", values=[payload_hash])
738738
)

0 commit comments

Comments
 (0)