in awscrt/auth.py [0:0]
def __init__(self,
algorithm,
signature_type,
credentials_provider,
region,
service,
date=None,
should_sign_header=None,
use_double_uri_encode=True,
should_normalize_uri_path=True,
signed_body_value=None,
signed_body_header_type=AwsSignedBodyHeaderType.NONE,
expiration_in_seconds=None,
omit_session_token=False,
):
assert isinstance(algorithm, AwsSigningAlgorithm)
assert isinstance(signature_type, AwsSignatureType)
assert isinstance(credentials_provider, AwsCredentialsProvider)
assert isinstance(region, str)
assert isinstance(service, str)
assert callable(should_sign_header) or should_sign_header is None
assert signed_body_value is None or (isinstance(signed_body_value, str) and len(signed_body_value) > 0)
assert isinstance(signed_body_header_type, AwsSignedBodyHeaderType)
assert expiration_in_seconds is None or expiration_in_seconds > 0
super().__init__()
if date is None:
date = datetime.datetime.now(datetime.timezone.utc)
timestamp = date.timestamp()
self._priv_should_sign_cb = should_sign_header
if should_sign_header is not None:
def should_sign_header_wrapper(name):
return should_sign_header(name=name)
else:
should_sign_header_wrapper = None
if expiration_in_seconds is None:
# C layer uses 0 to indicate None
expiration_in_seconds = 0
self._binding = _awscrt.signing_config_new(
algorithm,
signature_type,
credentials_provider,
region,
service,
date,
timestamp,
should_sign_header_wrapper,
use_double_uri_encode,
should_normalize_uri_path,
signed_body_value,
signed_body_header_type,
expiration_in_seconds,
omit_session_token)