@@ -782,6 +782,108 @@ def test_recipients_open_with_invalid_rsk(self, rpk1):
782782 pytest .fail ("decode() should fail." )
783783 assert "Failed to open." in str (err .value )
784784
785+ def test_recipients_a128ctr_aeskw (self , rsk1 , rsk2 ):
786+ a128kw_key = COSEKey .from_symmetric_key (alg = "A128KW" )
787+ a128ctr_key = COSEKey .from_symmetric_key (alg = "A128CTR" , kid = "A128CTR key" )
788+
789+ # The sender side:
790+ r = Recipient .new (unprotected = {"alg" : "A128KW" }, sender_key = a128kw_key )
791+ sender = COSE .new (alg_auto_inclusion = True )
792+ encoded = sender .encode_and_encrypt (
793+ b"Hello world!" ,
794+ a128ctr_key ,
795+ recipients = [r ],
796+ )
797+
798+ # The recipient side:
799+ recipient = COSE .new ()
800+ assert b"Hello world!" == recipient .decode (encoded , keys = [a128kw_key ])
801+
802+ def test_recipients_a192ctr_aeskw (self , rsk1 , rsk2 ):
803+ a192kw_key = COSEKey .from_symmetric_key (alg = "A192KW" )
804+ a192ctr_key = COSEKey .from_symmetric_key (alg = "A192CTR" , kid = "A192CTR key" )
805+
806+ # The sender side:
807+ r = Recipient .new (unprotected = {"alg" : "A192KW" }, sender_key = a192kw_key )
808+ sender = COSE .new (alg_auto_inclusion = True )
809+ encoded = sender .encode_and_encrypt (
810+ b"Hello world!" ,
811+ a192ctr_key ,
812+ recipients = [r ],
813+ )
814+
815+ # The recipient side:
816+ recipient = COSE .new ()
817+ assert b"Hello world!" == recipient .decode (encoded , keys = [a192kw_key ])
818+
819+ def test_recipients_a256_aeskw (self , rsk1 , rsk2 ):
820+ a256kw_key = COSEKey .from_symmetric_key (alg = "A256KW" )
821+ a256ctr_key = COSEKey .from_symmetric_key (alg = "A256CTR" , kid = "A256CTR key" )
822+
823+ # The sender side:
824+ r = Recipient .new (unprotected = {"alg" : "A256KW" }, sender_key = a256kw_key )
825+ sender = COSE .new (alg_auto_inclusion = True )
826+ encoded = sender .encode_and_encrypt (
827+ b"Hello world!" ,
828+ a256ctr_key ,
829+ recipients = [r ],
830+ )
831+
832+ # The recipient side:
833+ recipient = COSE .new ()
834+ assert b"Hello world!" == recipient .decode (encoded , keys = [a256kw_key ])
835+
836+ def test_recipients_a128cbc_aeskw (self , rsk1 , rsk2 ):
837+ a128kw_key = COSEKey .from_symmetric_key (alg = "A128KW" )
838+ a128cbc_key = COSEKey .from_symmetric_key (alg = "A128CBC" , kid = "A128CBC key" )
839+
840+ # The sender side:
841+ r = Recipient .new (unprotected = {"alg" : "A128KW" }, sender_key = a128kw_key )
842+ sender = COSE .new (alg_auto_inclusion = True )
843+ encoded = sender .encode_and_encrypt (
844+ b"Hello world!" ,
845+ a128cbc_key ,
846+ recipients = [r ],
847+ )
848+
849+ # The recipient side:
850+ recipient = COSE .new ()
851+ assert b"Hello world!" == recipient .decode (encoded , keys = [a128kw_key ])
852+
853+ def test_recipients_a192cbc_aeskw (self , rsk1 , rsk2 ):
854+ a192kw_key = COSEKey .from_symmetric_key (alg = "A192KW" )
855+ a192cbc_key = COSEKey .from_symmetric_key (alg = "A192CBC" , kid = "A192CBC key" )
856+
857+ # The sender side:
858+ r = Recipient .new (unprotected = {"alg" : "A192KW" }, sender_key = a192kw_key )
859+ sender = COSE .new (alg_auto_inclusion = True )
860+ encoded = sender .encode_and_encrypt (
861+ b"Hello world!" ,
862+ a192cbc_key ,
863+ recipients = [r ],
864+ )
865+
866+ # The recipient side:
867+ recipient = COSE .new ()
868+ assert b"Hello world!" == recipient .decode (encoded , keys = [a192kw_key ])
869+
870+ def test_recipients_a256cbc_aeskw (self , rsk1 , rsk2 ):
871+ a256kw_key = COSEKey .from_symmetric_key (alg = "A256KW" )
872+ a256cbc_key = COSEKey .from_symmetric_key (alg = "A256CBC" , kid = "A256CBC key" )
873+
874+ # The sender side:
875+ r = Recipient .new (unprotected = {"alg" : "A256KW" }, sender_key = a256kw_key )
876+ sender = COSE .new (alg_auto_inclusion = True )
877+ encoded = sender .encode_and_encrypt (
878+ b"Hello world!" ,
879+ a256cbc_key ,
880+ recipients = [r ],
881+ )
882+
883+ # The recipient side:
884+ recipient = COSE .new ()
885+ assert b"Hello world!" == recipient .decode (encoded , keys = [a256kw_key ])
886+
785887 def test_recipients_a128ctr_hpke (self , rsk1 , rsk2 ):
786888 enc_key = COSEKey .from_symmetric_key (alg = "A128CTR" )
787889 rpk = COSEKey .from_jwk (
0 commit comments