@@ -797,6 +797,25 @@ def test_recipients_aes(self, kw_alg, enc_alg):
797797 kw_key = COSEKey .from_symmetric_key (alg = kw_alg )
798798 enc_key = COSEKey .from_symmetric_key (alg = enc_alg )
799799
800+ # The sender side (must fail):
801+ with pytest .raises (ValueError ) as err :
802+ r = Recipient .new (protected = {"alg" : kw_alg }, sender_key = kw_key )
803+ pytest .fail ("encode_and_encrypt() should fail." )
804+ assert "The protected header must be a zero-length string in key wrap mode with an AE algorithm." in str (err .value )
805+
806+ # The sender side (must fail):
807+ r = Recipient .new (unprotected = {"alg" : kw_alg }, sender_key = kw_key )
808+ sender = COSE .new (alg_auto_inclusion = True )
809+ with pytest .raises (ValueError ) as err :
810+ encoded = sender .encode_and_encrypt (
811+ b"Hello world!" ,
812+ enc_key ,
813+ protected = {"kid" : "actually-not-protected" },
814+ recipients = [r ],
815+ )
816+ pytest .fail ("encode_and_encrypt() should fail." )
817+ assert "protected header MUST be zero-length" in str (err .value )
818+
800819 # The sender side:
801820 r = Recipient .new (unprotected = {"alg" : kw_alg }, sender_key = kw_key )
802821 sender = COSE .new (alg_auto_inclusion = True )
@@ -832,13 +851,13 @@ def test_recipients_hpke(self, rsk1, rsk2, enc_alg):
832851 "y" : "BGU5soLgsu_y7GN2I3EPUXS9EZ7Sw0qif-V70JtInFI" ,
833852 }
834853 )
835- r = Recipient .new (protected = {1 : 35 }, recipient_key = rpk )
854+ r = Recipient .new (unprotected = {1 : 35 }, recipient_key = rpk )
836855 r .encode (enc_key .key )
837856 sender = COSE .new ()
838857 encoded = sender .encode_and_encrypt (
839858 b"This is the content." ,
840859 enc_key ,
841- protected = {"alg" : enc_alg },
860+ unprotected = {"alg" : enc_alg },
842861 recipients = [r ],
843862 )
844863 recipient = COSE .new ()
@@ -861,7 +880,7 @@ def test_recipients_ecdh_es(self, key_agreement_alg, key_agreement_alg_id, kw_al
861880 "alg" : kw_alg ,
862881 "supp_pub" : {
863882 "key_data_length" : len (enc_key .key ) * 8 ,
864- "protected" : {1 : key_agreement_alg_id },
883+ "protected" : {},
865884 },
866885 }
867886
@@ -886,15 +905,15 @@ def test_recipients_ecdh_es(self, key_agreement_alg, key_agreement_alg_id, kw_al
886905 "y" : "BGU5soLgsu_y7GN2I3EPUXS9EZ7Sw0qif-V70JtInFI" ,
887906 }
888907 )
889- r = Recipient .new (protected = {"alg" : key_agreement_alg }, sender_key = rsk1 , recipient_key = rpk2 , context = context )
908+ r = Recipient .new (unprotected = {"alg" : key_agreement_alg }, sender_key = rsk1 , recipient_key = rpk2 , context = context )
890909
891910 nonce = enc_key .generate_nonce ()
892911 sender = COSE .new ()
893912 encoded = sender .encode (
894913 b"Hello world!" ,
895914 enc_key ,
896- protected = {"alg" : enc_alg },
897- unprotected = {"iv" : nonce },
915+ protected = {},
916+ unprotected = {"alg" : enc_alg , " iv" : nonce },
898917 recipients = [r ],
899918 )
900919
0 commit comments