### Is there an existing issue for this?

- [X] I have searched the existing issues

### Feature description

Currently, we always [calculate](https://github.com/localstack/localstack/blob/256b0de1f1a6085d3994e8d1322c763962ded2f0/localstack/services/kms/models.py#L229-L230) SHA256 digests for messages with `RAW` [MessageType](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html#API_Sign_RequestSyntax).

It is not clear if this is compatible with AWS. There are some reports like [this one](https://github.com/localstack/localstack/issues/6815#issuecomment-1309882776) about our implementation of Sign / Verify not working properly. Could be due to these digests.

What has to be done:
1. Should try to figure out how AWS calculates digests, whether the same algorithm is always used, or if digests are based on [SigningAlgorithm](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html#API_Sign_RequestSyntax). For this we can try importing the same key material into both AWS and LocalStack, use the resulting keys to sign the same message and then compare the signatures. If that works. If not - we can try just creating a key in AWS, sign a message with AWS, export the public key and then go through different digest algorithms in LocalStack, trying to verify the signed message with the obtained public key.
2. If the issue is really in our implementation of digests - should fix the digest logic.

### 🧑‍💻 Implementation

_No response_

### Anything else?

_No response_
@pytest.mark.aws_validated
    def test_list_aliases_of_key(self, kms_client, kms_create_key, kms_create_alias):
        aliased_key_id = kms_create_key()["KeyId"]
        comparison_key_id = kms_create_key()["KeyId"]
        alias_name = f"alias/{short_uid()}"
        kms_create_alias(AliasName=alias_name, TargetKeyId=aliased_key_id)
        assert _get_alias(kms_client, alias_name, aliased_key_id) is not None
        assert _get_alias(kms_client, alias_name, comparison_key_id) is None
    @pytest.mark.aws_validated
    def test_all_types_of_key_id_can_be_used_for_encryption(
        self, kms_client, kms_create_key, kms_create_alias
    ):
        def get_alias_arn_by_alias_name(kms_client, alias_name):
            for response in kms_client.get_paginator("list_aliases").paginate(KeyId=key_id):
                for alias_list_entry in response["Aliases"]:
                    if alias_list_entry["AliasName"] == alias_name:
                        return alias_list_entry["AliasArn"]
            return None
        key_metadata = kms_create_key()
        key_arn = key_metadata["Arn"]
        key_id = key_metadata["KeyId"]
        alias_name = kms_create_alias(TargetKeyId=key_id)
        alias_arn = get_alias_arn_by_alias_name(kms_client, alias_name)
        assert alias_arn
        kms_client.encrypt(KeyId=key_arn, Plaintext="encrypt-me")
        kms_client.encrypt(KeyId=key_id, Plaintext="encrypt-me")
        kms_client.encrypt(KeyId=alias_arn, Plaintext="encrypt-me")
        kms_client.encrypt(KeyId=alias_name, Plaintext="encrypt-me")
    @pytest.mark.aws_validated
    def test_create_multi_region_key(self, kms_create_key):