@@ -387,6 +387,14 @@ def test_generate_data_key_without_plaintext(self, kms_client, kms_key):
387387 assert result .get ("KeyId" )
388388
389389 @pytest .mark .aws_validated
390+ @pytest .mark .skip_snapshot_verify (
391+ paths = [
392+ "$..Signature" ,
393+ "$..KeyId" ,
394+ "$..Error.Message" ,
395+ "$..message" ,
396+ ]
397+ )
390398 @pytest .mark .parametrize (
391399 "key_spec,sign_algo" ,
392400 [
@@ -396,12 +404,11 @@ def test_generate_data_key_without_plaintext(self, kms_client, kms_key):
396404 ("RSA_4096" , "RSASSA_PKCS1_V1_5_SHA_256" ),
397405 ("RSA_4096" , "RSASSA_PKCS1_V1_5_SHA_512" ),
398406 ("ECC_NIST_P256" , "ECDSA_SHA_256" ),
399- ("ECC_NIST_P256 " , "ECDSA_SHA_384" ),
407+ ("ECC_NIST_P384 " , "ECDSA_SHA_384" ),
400408 ("ECC_SECG_P256K1" , "ECDSA_SHA_256" ),
401- ("ECC_SECG_P256K1" , "ECDSA_SHA_512" ),
402409 ],
403410 )
404- def test_sign_verify (self , kms_client , kms_create_key , key_spec , sign_algo ):
411+ def test_sign_verify (self , kms_client , kms_create_key , snapshot , key_spec , sign_algo ):
405412 hash_algo = get_hash_algorithm (sign_algo )
406413 hasher = getattr (hashlib , hash_algo .replace ("_" , "" ).lower ())
407414
@@ -416,38 +423,49 @@ def test_sign_verify(self, kms_client, kms_create_key, key_spec, sign_algo):
416423 bad_message = b"bad message 321"
417424
418425 # Ensure raw messages can be signed and verified
419- signature = kms_client .sign (MessageType = "RAW" , Message = plaintext , ** kwargs )["Signature" ]
420- assert kms_client .verify (
421- MessageType = "RAW" , Signature = signature , Message = plaintext , ** kwargs
422- )["SignatureValid" ]
426+ signature = kms_client .sign (MessageType = "RAW" , Message = plaintext , ** kwargs )
427+ snapshot .match ("signature" , signature )
428+ verification = kms_client .verify (
429+ MessageType = "RAW" , Signature = signature ["Signature" ], Message = plaintext , ** kwargs
430+ )
431+ snapshot .match ("verification" , verification )
432+ assert verification ["SignatureValid" ]
423433
424434 # Ensure pre-hashed messages can be signed and verified
425- signature = kms_client .sign (MessageType = "DIGEST" , Message = digest , ** kwargs )["Signature" ]
426- assert kms_client .verify (
427- MessageType = "DIGEST" , Signature = signature , Message = digest , ** kwargs
428- )["SignatureValid" ]
435+ signature = kms_client .sign (MessageType = "DIGEST" , Message = digest , ** kwargs )
436+ verification = kms_client .verify (
437+ MessageType = "DIGEST" , Signature = signature ["Signature" ], Message = digest , ** kwargs
438+ )
439+ assert verification ["SignatureValid" ]
429440
430441 # Ensure bad digest raises during signing
431442 with pytest .raises (ClientError ) as exc :
432443 kms_client .sign (MessageType = "DIGEST" , Message = plaintext , ** kwargs )
433444 assert exc .match ("ValidationException" )
445+ snapshot .match ("bad-digest" , exc .value .response )
434446
435447 # Ensure bad signature raises during verify
436448 with pytest .raises (ClientError ) as exc :
437449 kms_client .verify (
438450 MessageType = "RAW" , Signature = bad_signature , Message = plaintext , ** kwargs
439451 )
440452 assert exc .match ("KMSInvalidSignatureException" )
453+ snapshot .match ("bad-signature" , exc .value .response )
441454
442455 # Ensure bad message raises during verify
443456 with pytest .raises (ClientError ) as exc :
444- kms_client .verify (MessageType = "RAW" , Signature = signature , Message = bad_message , ** kwargs )
457+ kms_client .verify (
458+ MessageType = "RAW" , Signature = signature ["Signature" ], Message = bad_message , ** kwargs
459+ )
445460 assert exc .match ("KMSInvalidSignatureException" )
446461
447462 # Ensure bad digest raises during verify
448463 with pytest .raises (ClientError ) as exc :
449464 kms_client .verify (
450- MessageType = "DIGEST" , Signature = signature , Message = bad_message , ** kwargs
465+ MessageType = "DIGEST" ,
466+ Signature = signature ["Signature" ],
467+ Message = bad_message ,
468+ ** kwargs ,
451469 )
452470 assert exc .match ("ValidationException" )
453471
@@ -476,10 +494,6 @@ def test_invalid_key_usage(self, kms_client, kms_create_key):
476494 [
477495 ("SYMMETRIC_DEFAULT" , "SYMMETRIC_DEFAULT" ),
478496 ("RSA_2048" , "RSAES_OAEP_SHA_256" ),
479- ("ECC_NIST_P256" , "RSAES_OAEP_SHA_1" ),
480- ("ECC_SECG_P256K1" , "RSAES_OAEP_SHA_256" ),
481- # ("HMAC_256", "SYMMETRIC_DEFAULT"), # currently not supported in LocalStack
482- # ("SM2", "SM2PKE"), # currently not supported in LocalStack
483497 ],
484498 )
485499 def test_encrypt_decrypt (self , kms_client , kms_create_key , key_spec , algo ):
0 commit comments