@@ -782,160 +782,47 @@ 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" )
785+ @pytest .mark .parametrize (
786+ "kw_alg, enc_alg" ,
787+ [
788+ ("A128KW" , "A128CTR" ),
789+ ("A192KW" , "A192CTR" ),
790+ ("A256KW" , "A256CTR" ),
791+ ("A128KW" , "A128CBC" ),
792+ ("A192KW" , "A192CBC" ),
793+ ("A256KW" , "A256CBC" ),
794+ ],
795+ )
796+ def test_recipients_aes (self , kw_alg , enc_alg ):
797+ kw_key = COSEKey .from_symmetric_key (alg = kw_alg )
798+ enc_key = COSEKey .from_symmetric_key (alg = enc_alg )
873799
874800 # The sender side:
875- r = Recipient .new (unprotected = {"alg" : "A256KW" }, sender_key = a256kw_key )
801+ r = Recipient .new (unprotected = {"alg" : kw_alg }, sender_key = kw_key )
876802 sender = COSE .new (alg_auto_inclusion = True )
877803 encoded = sender .encode_and_encrypt (
878804 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-
887- def test_recipients_a128ctr_hpke (self , rsk1 , rsk2 ):
888- enc_key = COSEKey .from_symmetric_key (alg = "A128CTR" )
889- rpk = COSEKey .from_jwk (
890- {
891- "kty" : "EC" ,
892- # "kid": "02",
893- "crv" : "P-256" ,
894- "x" : "-eZXC6nV-xgthy8zZMCN8pcYSeE2XfWWqckA2fsxHPc" ,
895- "y" : "BGU5soLgsu_y7GN2I3EPUXS9EZ7Sw0qif-V70JtInFI" ,
896- }
897- )
898- r = Recipient .new (protected = {1 : 35 }, recipient_key = rpk )
899- r .encode (enc_key .key )
900- sender = COSE .new ()
901- encoded = sender .encode_and_encrypt (
902- b"This is the content." ,
903805 enc_key ,
904- protected = {
905- 1 : - 65534 , # alg: "A128CTR"
906- },
907806 recipients = [r ],
908807 )
909- recipient = COSE .new ()
910- assert b"This is the content." == recipient .decode (encoded , [rsk1 , rsk2 ])
911808
912- def test_recipients_a192ctr_hpke (self , rsk1 , rsk2 ):
913- enc_key = COSEKey .from_symmetric_key (alg = "A192CTR" )
914- rpk = COSEKey .from_jwk (
915- {
916- "kty" : "EC" ,
917- # "kid": "02",
918- "crv" : "P-256" ,
919- "x" : "-eZXC6nV-xgthy8zZMCN8pcYSeE2XfWWqckA2fsxHPc" ,
920- "y" : "BGU5soLgsu_y7GN2I3EPUXS9EZ7Sw0qif-V70JtInFI" ,
921- }
922- )
923- r = Recipient .new (protected = {1 : 35 }, recipient_key = rpk )
924- r .encode (enc_key .key )
925- sender = COSE .new ()
926- encoded = sender .encode_and_encrypt (
927- b"This is the content." ,
928- enc_key ,
929- protected = {
930- 1 : - 65533 , # alg: "A192CTR"
931- },
932- recipients = [r ],
933- )
809+ # The recipient side:
934810 recipient = COSE .new ()
935- assert b"This is the content. " == recipient .decode (encoded , [ rsk1 , rsk2 ])
811+ assert b"Hello world! " == recipient .decode (encoded , keys = [ kw_key ])
936812
937- def test_recipients_a256ctr_hpke (self , rsk1 , rsk2 ):
938- enc_key = COSEKey .from_symmetric_key (alg = "A256CTR" )
813+ @pytest .mark .parametrize (
814+ "enc_alg" ,
815+ [
816+ ("A128CTR" ),
817+ ("A192CTR" ),
818+ ("A256CTR" ),
819+ ("A128CBC" ),
820+ ("A192CBC" ),
821+ ("A256CBC" ),
822+ ],
823+ )
824+ def test_recipients_hpke (self , rsk1 , rsk2 , enc_alg ):
825+ enc_key = COSEKey .from_symmetric_key (alg = enc_alg )
939826 rpk = COSEKey .from_jwk (
940827 {
941828 "kty" : "EC" ,
@@ -951,9 +838,7 @@ def test_recipients_a256ctr_hpke(self, rsk1, rsk2):
951838 encoded = sender .encode_and_encrypt (
952839 b"This is the content." ,
953840 enc_key ,
954- protected = {
955- 1 : - 65532 , # alg: "A256CTR"
956- },
841+ protected = {"alg" : enc_alg },
957842 recipients = [r ],
958843 )
959844 recipient = COSE .new ()
0 commit comments